2.1k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo,
ich habe einen VBA code erstellt und diesen mit eine Command Button verbunden. Nach eingabe meiner Parameter und betätigen des Buttons passiert aber nichts. Wenn ich in der Debugger-Umgebung den Quellcode in einzelnen Schritten durchlaufen lasse und am Ende des Programms angelangt bin, ist in meinem Exceltabellenblatt die gewünschte Berechnung als ergebnis dargestellt. Meine Frage lautet:
Warum läuft das Makro nicht, wenn ich es (wie gewollt) über einen Button aktiviere, aber wenn ich den Quellcode in Einzelschritten durchlaufen lasse dann funktioniert es schon (spuckt werte aus)??

Quellcode

Sub Calculate()
Dim a As Double
Dim b As Double
Dim c As Double
Dim d As Double
Dim e As Double
Worksheets("Zeitbeiwert").Range("L9").Value = Worksheets("Berechnung von QR").Range("B12").Value
Worksheets("Zeitbeiwert").Range("L11").Value = Worksheets("Berechnung von QR").Range("E12").Value
Worksheets("Abflussbeiwert").Range("C23").Value = Worksheets("Berechnung von QR").Range("B17").Value
Worksheets("Abflussbeiwert").Range("C25").Value = Worksheets("Berechnung von QR").Range("I5").Value
a = Worksheets("Berechnung von QR").Cells(17, 5)
If a < 1 Then
b = Application.WorksheetFunction.Index(Range("Zeitbeiwert!B4:J48"), Application.WorksheetFunction.Match(Range("Zeitbeiwert!L9"), Range("Zeitbeiwert!A4:A48"), 0), Application.WorksheetFunction.Match(Range("Zeitbeiwert!L11"), Range("Zeitbeiwert!B3:J3"), 0))
c = Application.WorksheetFunction.Index(Range("Abflussbeiwert!B7:E17"), Application.WorksheetFunction.Match(Range("Abflussbeiwert!C23"), Range("Abflussbeiwert!A7:A17"), 0), Application.WorksheetFunction.Match(Range("Abflussbeiwert!C25"), Range("Abflussbeiwert!B6:E6"), 0))
d = Worksheets("Berechnung von QR").Cells(5, 9) * b * c * Worksheets("Berechnung von QR").Cells(12, 8)
e = Worksheets("Berechnung von QR").Cells(5, 9) * b
Debug.Print c
Debug.Print d
Debug.Print e
Worksheets("Berechnung von QR").Cells(22, 8).Value = c
Worksheets("Berechnung von QR").Cells(22, 2).Value = d
Worksheets("Berechnung von QR").Cells(22, 5).Value = e
End If
If a >= 1 And a <= 4 Then
b = Application.WorksheetFunction.Index(Range("Zeitbeiwert!B4:J48"), Application.WorksheetFunction.Match(Range("Zeitbeiwert!L9"), Range("Zeitbeiwert!A4:A48"), 0), Application.WorksheetFunction.Match(Range("Zeitbeiwert!L11"), Range("Zeitbeiwert!B3:J3"), 0))
c = Application.WorksheetFunction.Index(Range("Abflussbeiwert!F7:I17"), Application.WorksheetFunction.Match(Range("Abflussbeiwert!C23"), Range("Abflussbeiwert!A7:A17"), 0), Application.WorksheetFunction.Match(Range("Abflussbeiwert!C25"), Range("Abflussbeiwert!F6:I6"), 0))
d = Worksheets("Berechnung von QR").Cells(5, 9) * b * c * Worksheets("Berechnung von QR").Cells(12, 8)
e = Worksheets("Berechnung von QR").Cells(5, 9) * b
Debug.Print c
Debug.Print d
Debug.Print e
Worksheets("Berechnung von QR").Cells(22, 8).Value = c
Worksheets("Berechnung von QR").Cells(22, 2).Value = d
Worksheets("Berechnung von QR").Cells(22, 5).Value = e
End If
If a > 4 And a <= 10 Then
b = Application.WorksheetFunction.Index(Range("Zeitbeiwert!B4:J48"), Application.WorksheetFunction.Match(Range("Zeitbeiwert!L9"), Range("Zeitbeiwert!A4:A48"), 0), Application.WorksheetFunction.Match(Range("Zeitbeiwert!L11"), Range("Zeitbeiwert!B3:J3"), 0))
c = Application.WorksheetFunction.Index(Range("Abflussbeiwert!J7:M17"), Application.WorksheetFunction.Match(Range("Abflussbeiwert!C23"), Range("Abflussbeiwert!A7:A17"), 0), Application.WorksheetFunction.Match(Range("Abflussbeiwert!C25"), Range("Abflussbeiwert!J6:M6"), 0))
d = Worksheets("Berechnung von QR").Cells(5, 9) * b * c * Worksheets("Berechnung von QR").Cells(12, 8)
e = Worksheets("Berechnung von QR").Cells(5, 9) * b
Debug.Print c
Debug.Print d
Debug.Print e
Worksheets("Berechnung von QR").Cells(22, 8).Value = c
Worksheets("Berechnung von QR").Cells(22, 2).Value = d
Worksheets("Berechnung von QR").Cells(22, 5).Value = e
End If
If a > 10 Then
b = Application.WorksheetFunction.Index(Range("Zeitbeiwert!B4:J48"), Application.WorksheetFunction.Match(Range("Zeitbeiwert!L9"), Range("Zeitbeiwert!A4:A48"), 0), Application.WorksheetFunction.Match(Range("Zeitbeiwert!L11"), Range("Zeitbeiwert!B3:J3"), 0))
c = Application.WorksheetFunction.Index(Range("Abflussbeiwert!N7:Q17"), Application.WorksheetFunction.Match(Range("Abflussbeiwert!C23"), Range("Abflussbeiwert!A7:A17"), 0), Application.WorksheetFunction.Match(Range("Abflussbeiwert!C25"), Range("Abflussbeiwert!N6:Q6"), 0))
d = Worksheets("Berechnung von QR").Cells(5, 9) * b * c * Worksheets("Berechnung von QR").Cells(12, 8)
e = Worksheets("Berechnung von QR").Cells(5, 9) * b
Debug.Print c
Debug.Print d
Debug.Print e
Worksheets("Berechnung von QR").Cells(22, 8).Value = c
Worksheets("Berechnung von QR").Cells(22, 2).Value = d
Worksheets("Berechnung von QR").Cells(22, 5).Value = e
End If
End Sub

Besten Dank im voraus ....
Mfg Christian

2 Antworten

0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi christian ^^

mehrdeutige zuweisungen sollten korrigiert werden :-))

gruss nighty

range (blabla) waere jetzt falsch

worksheets(1).range(blabla) waere angebracht

genauso andere zuweisungen wie z.b. cells etc.
0 Punkte
Beantwortet von
Danke, das hat mein Problem gelöst !!!! :-)
...