online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon Harm vom 05.02.2021, 09:44 Options

Lösung

Warum funktioniert dieser VBA code nicht???

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


Antwort schreiben

Antwort 1 von nighty vom 05.02.2021, 11:54 OptionsLösung

Lösung
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.

Antwort 2 von Harm vom 06.02.2021, 06:04 Options

Danke, das hat mein Problem gelöst !!!! :-)

Ähnliche Themen

inputbox VBA code ändern
aeberhard  24.11.2007 - 134 Hits - 2 Antworten

VBA-Code für bestimmten Zellbereich
fantalight  03.01.2008 - 58 Hits - 17 Antworten

VBA-Code funktioniert nicht mehr
jojo5  03.07.2008 - 72 Hits - 3 Antworten

Brauche hilfe bei VBA Code
BenjaminM  30.07.2008 - 25 Hits - 20 Antworten

Frage zu einem VBA-Code
Donjuandan  25.11.2008 - 43 Hits - 6 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026