Zellenformeln in VBA einfügen
#1
Hallo zusammen,
folgendes macht mein Code. Letzte leere Zeile in Sheet 1 ("Data") suchen, den Wert der Variable nAbt in Spalte 1 schreiben, den Wert auch in Sheet(2) in die erste freie Zeile in der ersten Spalte schreiben, den Diagramm Bereich vergrößern. Was soll es dann tun?

In der gleichen Zeilen in die Spalten 2, 3 und 4 die Werte schreiben, welche ich im Code als Kommentar gesetzt habe. Wie sieht die Syntax korrekt aus?
Danke.

Gruß



Code:
Private Sub CommandButton2_Click()
Dim nAbt As String
lindex = 2
    Do While Trim(CStr(Sheets(1).Cells(lindex, 1).Value)) <> ""
        lindex = lindex + 1
    Loop
    nAbt = Application.InputBox("Geben Sie ___ ein!")
    Sheets(1).Cells(lindex, 1) = nAbt

lindex = 2
Do Until Sheets(2).Cells(lindex, 1).Value = ""
    lindex = lindex + 1
Loop   
Sheets(2).Cells(lindex, 1).Value = nAbt
Sheets(2).ChartObjects("Diagramm 2").Activate
ActiveChart.SetSourceData Source:=Range("'Chart(s)'!A2:B" & lindex)
    
'Sheets(2).Cells(lindex, 3).Value = "=SUMMEWENN(Data!A:A;nAbt;Data!AA:AA)"
    
'Sheets(2).Cells(lindex, 4).Value = "=SUMMEWENN(Data!A:A;nAbt;Data!AB:AB)"
    
'Sheets(2).Cells(lindex, 2).Value = Sheets(2).Cells(lindex, 4).Value / Sheets(2).Cells(lindex, 3).Value

End Sub
Top
#2
Hallo Fupi,
Sheets(2).Cells(lindex, 3).Formula = "=SUMIF(Data!A:A," & nAbt & ",Data!AA:AA)"
   
Sheets(2).Cells(lindex, 4).Formula = "=SUMIF(Data!A:A," & nAbt & ",Data!AB:AB)"
   
Sheets(2).Cells(lindex, 2).Value = Sheets(2).Cells(lindex, 4).Value / Sheets(2).Cells(lindex, 3).Value
Gruß Uwe
Top
#3
Danke Uwe,
habe leider immernoch 2 Probleme hiermit.

1. Die Variable nAbt im Sheet(1) ist als Text definiert und beginnt für gewöhnlich mit einer 0 (001, 002, 003). In der Formel wird daraus 1, 2 bzw. 3. Die Ganze Spalte als Text formatieren geht aber auch nicht, sonst wird die Formel ja nicht berechnet. Lässt sich das umgehen?

2. Damit zusammenhängend ist zu Beginn der Wert, durch den dividiert wird 0, da anstelle des Wertes "001" nach nAbt ohne Anführungszeichen gesucht wird. Nehme an daher kommt der Laufzeitfehler 6: Überlauf für die Zeile
Code:
Sheets(2).Cells(lindex, 2).Value = Sheets(2).Cells(lindex, 4).Value / Sheets(2).Cells(lindex, 3).Value

Beide Probleme sollten ja behoben werden durch das Einfügen von Anführungszeichen zum Suchen von "001" statt "1" mithilfe von

Code:
Sheets(2).Cells(lindex, 3).Formula = "=SUMIF(Data!A:A," & " & nAbt & " & ",Data!AA:AA)"

Geht aber leider nicht, nehme an habe irgendwo die Syntax mit zu vielen oder eher noch zu wenigen " und & versehen. 

Gruß
Top
#4
Hallo Fupi,

dann so:
Sheets(2).Cells(lindex, 3).Formula = "=SUMIF(Data!A:A,""" & nAbt & """,Data!AA:AA)"
Gruß Uwe
Top
#5
Vielen vielen Dank!! :)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste