VBA *grrr
Markus
- sonstiges
0 Markus0 Jörg Lorenz0 markus0 Jörg Lorenz0 Markus
Hallo, habe sonst nur php programmiert und kam eig. ganz gut klar aber dieses vba macht mir zu schaffen.... ich mag das net...
Folgendes quelltext:
With chtChart
.Name = "Tool Sales2"
.ChartType = xlXYScatterLines
'Link to the source data range.
.SetSourceData Source:=Sheets("Daten").Range("B12:B20"), _
PlotBy:=xlColumns
.HasTitle = True
.ChartTitle.Text = "=Sheet1!R1C2"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Month"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Sales"
End With
so nun möchte ich gerne anstatt B20, eine variable einsetzen wie macht man das in vba, in PHP kein problem "B12:B".$var aber wie in vba?
Weiter gehts wie erreiche ich das, das diagramm immer an eine best position auf ein bestimmtes tabellenblatt geschrieben wird und wenn schon vorhanden auch überschrieben???
MFG Markus
Ok verknüpft wird mit & aber die restlichen fragestellungen bleiben.*GG*
MFG Markus
Hi Markus,
so nun möchte ich gerne anstatt B20, eine variable einsetzen wie macht man das in vba, in PHP kein problem "B12:B".$var aber wie in vba?
na auch so:
.SetSourceData Source:=Sheets("Daten").Range("B12:B" & intZeile), PlotBy:=xlColumns
Weiter gehts wie erreiche ich das, das diagramm immer an eine best position auf ein bestimmtes tabellenblatt geschrieben wird und wenn schon vorhanden auch überschrieben???
Bei solchen Geschichten macht es sich gut, wenn man das Ganze einfach als Makro aufzeichnet - da sieht man oft die geeigneten Methoden (abgesehen von Select und Activate).
Zum Verschieben kannst Du z. B. IncrementLeft und IncrementTop verwenden.
Viele Grüße
Jörg
Hallo Jörg,
mmh mit den makros ist das so ne sache, bin ja schon fast fertig, ich muss nur noch erreichen das, das diagramm auf dem von mir gewünschten tabellenblatt erzeugt wird und halt überschrieben wenn es schon da ist: hast du viel. ne idee hier mal der quelltext
Private Sub make_chart_Click()
Dim chart_name As String
Dim anzahl As Long
Dim intSpalte As Integer
Dim lngZ As Long
Dim lngZeile As Long
If (CheckBox1.Value = True) Then
chart_name = "Nitrat"
ElseIf (CheckBox2.Value = True) Then
chart_name = "Nitrit"
ElseIf (CheckBox3.Value = True) Then
chart_name = "Gesamthärte"
ElseIf (CheckBox4.Value = True) Then
chart_name = "Carbonhärte"
ElseIf (CheckBox5.Value = True) Then
chart_name = "pH_Wert"
End If
If (chart_name = "") Then
Else
Dim chtChart As Chart
Set chtChart = Charts.Add
With Worksheets("Daten")
lngZ = .Cells(.Rows.Count, 1).End(xlUp).Row
If lngZ > lngZeile Then lngZeile = lngZ
End With
MsgBox (lngZ)
With chtChart
.Name = chart_name
.ChartType = xlXYScatterLines
.SetSourceData Source:=Sheets("Daten").Range("B12:B" & lngZeile), _
PlotBy:=xlColumns
.HasTitle = True
.ChartTitle.Text = "=Sheet1!R1C2"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Month"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Sales"
End With
End If
End Sub
MFG Markus
Hi Markus,
Dim chtChart As Chart
Set chtChart = Charts.AddWith Worksheets("Daten")
lngZ = .Cells(.Rows.Count, 1).End(xlUp).Row
If lngZ > lngZeile Then lngZeile = lngZEnd With
MsgBox (lngZ)With chtChart
.Name = chart_name
.ChartType = xlXYScatterLines
.SetSourceData Source:=Sheets("Daten").Range("B12:B" & lngZeile), _
PlotBy:=xlColumns
.HasTitle = True
.ChartTitle.Text = "=Sheet1!R1C2"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Month"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Sales"
End With
damit wird ja ein neues Diagrammblatt erzeugt. Das heißt, wenn Du ein gleichnamiges bestehendes Blatt überschreiben möchtest, musst Du das alte Blatt löschen. Das kannst Du z. B. so:
For Each objDia In Sheets
If objDia.Name = chart_name Then
Application.DisplayAlerts = False
objDia.Delete
Application.DisplayAlerts = True
End If
Next
Wenn Du von außen auf die Mappe zugreifst, musst Du nur noch die Objekte vervollständigen.
Viele Grüße
Jörg
Dankeschön hast mir sehr geholfen.
MFG Markus