Idézet: Lacy1 - Dátum: 2012. 03. 31. 21:34
Köszönöm szépen a választ, egy kis segítséget is szeretnék kérni még ennek a használatához, mivel nem vagyok programozásban jártas.
A megvalósítást a következőképpen kezdtem el lementettem *.xlsm formátumba, majd a fejlesztői eszközökből beszúrtam egy gombot és ehez rendeltem hozzá a makrót, de hibaüzenettel nem hajtotta végre ezt a parancsot.
Ehez a makróhoz kérnék magyarázatot, hogy mi micsoda, illetve hogy hol tudok a diagramhoz nevet rendelni (mint ebben az esetben "Diagram 1") továbbá ezt a makrót hova kell beszúrnom (most jelenleg a Munk1 laphoz szúrtam be a VBA szerkesztőben)
Köszönettel:
Lacy1
Bocs, hogy beleszólok, de a hivatkozott megoldáshoz adnék ötleteket (mert az sem az, ami az ottani kérdésre a válasz).
A makrót egyébként beszúrhatod az aktív munkafüzetbe, egyéni makrófüzetbe, bővítménybe, szóval több helyre is, de ha sikerült vezérlőhöz rendelned, akkor valószínűleg jól van ott ahol van.
Mivel a kérdésed általános volt, feltételezem sok esetben szeretnéd ezt alkalmazni, legjobb ha megismerkedsz a program elemeivel. Diagramhoz nevet rendelni lehet makróval is, de egyébként az Excel automatikusan nevet rendel hozza...
Na, de lássuk inkább a kódokat.
Minden programsor elé magyarázatot írok (Ez a fórum motor nagyon hülyén színezi a kódot, a színeknek nincs jelentőségük):
A hivatkozott kód, ezen látszik, hogy makrórögzítéssel készült:
Sub Lekerekítetttéglalap_Kattintás Makró
'C1 cella kiválasztása:
Range("C1").Select
'az aktív cella tartalmának kiürítése:
ActiveCell.FormulaR1C1 = ""
'C2 cella kiválasztása
Range("C2").Select
'Az aktív lapon található "Diagram 1" nevű diagram kiválasztása
ActiveSheet.ChartObjects("Diagram 1").Activate
'Az aktív diagram 1. számú trendvonalának kijelölése - ha ilyen nincs, itt hibaüzit generál a makró, és leáll
ActiveChart.SeriesCollection(1).Trendlines(1).Select
'Az aktív elem törlése akar ez lenni, nem túl sikeres, nem minden Excel verzióban van meg ez a metódus:
ActiveChart.SetElement (msoElementTrendlineNone)
'Új trendvonal hozzáadása:
ActiveChart.SeriesCollection(1).Trendlines.Add
'Az aktív lapon található "Diagram 1" nevű diagram kiválasztása
ActiveSheet.ChartObjects("Diagram 1").Activate
'Az aktív digaram 1. számú trendvonalának kijelölése
ActiveChart.SeriesCollection(1).Trendlines(1).Select
'A kijelölés (trendvonal) tulajdonságainak belövése
With Selection
.Type = xlPolynomial
.Order = 2
End With
'A kijelölés (trendvonal) képletének megjelenítése
Selection.DisplayEquation = True
'Az aktív diagram 1. számú trendvonala címkéjének kijelölése
ActiveChart.SeriesCollection(1).Trendlines(1).DataLabel.Select
'A C1 cella kijelölése
Range("C1").Select
'Az aktív cella tartalma legyen "y = 0,0421x2 - 3,4177x + 203,38"
ActiveCell.FormulaR1C1 = "y = 0,0421x2 - 3,4177x + 203,38"
'A C2 cella kijelölése
Range("C2").Select
End Sub
Szerintem rögzítése közben Ctrl+C / Ctrl+V-vel átmásolta a képletet, de a rögzítő ezt már nem tudja lekezelni...
A hivatkozott oldalon függvényről szólt a kérdés, az is megoldható, bár nem túl szerencsés, mert használata előtt ki kellene jelölni egy diagramot, bla bla
Legyen itt egy működő makró kódja, remélem boldogulsz a módosításával:
Sub Trendvonalképlet()
'a kijelölt diagram nevének lekérdezése (csak érdekességképpen, ha kellene)
' Megjegyzés, Excel 2002 a diagram nevét a munkalap nevével adja vissza, "munkalapnév diagramnév" formában.
' Elképzelhető, hogy másik Excel ezt másképpen teszi
Diagramneve = Right(ActiveChart.Name, Len(ActiveChart.Name) - Len(ActiveSheet.Name) - 1)
'Azaz a diagram neve jobbról számítva annyi karakter, amennyi az Excel szerinti
'diagram név hossza, mínusz a munkalap nevének a hossza, mínusz egy karakter,(a szóköz).
'Így marad a tulajdonképpeni diagram név, amit a makróban felhasználhatunk a diagram
'kijelöléséra, ahogy a következő parancs mutatja. //Erre a mutatványra sajnos szükség van//
'A meghatározott nevű diagram kijelölése:
ActiveSheet.ChartObjects(Diagramneve).Activate
'//ugyebár ez fakultatív, hiszen ki volt jelölve, úgy határoztuk meg a nevét!
'P1 cella tartalom törlése:
Range("P1").ClearContents
'Az aktív lapon található "Diagram 1" nevű diagram kiválasztása
'//Ugyebár erre nincs feltétlenül szükség, ha a makró futtatása előtt ki van
'jelölve a diagram
ActiveSheet.ChartObjects("Diagram 1").Activate
'Ha hibába ütközik az Excel, pl. nincs is trenvonal, amit törölni kellene, akkor
'lépjen tovább, ne hibaüzengessen.
'Figyelem, ettől minden további hibát is át fog lépni!
On Error Resume Next
'Az aktív diagram 1. számú trendvonalának törlése:
ActiveChart.SeriesCollection(1).Trendlines(1).Delete
'Új trendvonal hozzáadása:
ActiveChart.SeriesCollection(1).Trendlines.Add
'Az 1 számú trendvonal tulajdonságainak belövése
With ActiveChart.SeriesCollection(1).Trendlines(1)
.Type = xlPolynomial
.Order = 2
End With
'Az 1 számú trendvonal képletének a megjelenítése (enélkül nem működik a következő parancs)
ActiveChart.SeriesCollection(1).Trendlines(1).DisplayEquation = True
'A P1 cellába írja be a trendvonal képletét:
Range("P1").FormulaR1C1 = ActiveChart.SeriesCollection(1).Trendlines(1).DataLabel.Text
End Sub
Szerkesztette: hkpk 2012. 04. 01. 20:26 -kor

Súgó
A téma zárva.













