Clever-Excel-Forum

Normale Version: VBA
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebe Excel-Community

Ich hab ein Problemchen und werde irgendwie nicht schlau daraus.

In meinem Excel-Sheet steht bei D2 die Zahl 23. Nun, wenn ich die Zahl z.B. auf 45 ändere und das Makro starte ( indem ich auf den Button "Automate" klicke) wird wieder die Zahl 23 genommen, anstatt 45.

Ich versteh nicht, wie das sein kann. Huh Das sollte der wesentliche Teil des Codes sein, falls jemand mehr Infos benötigt, stelle ich den ganzen Code ins Forum oder per PM, wie auch immer.

Anbei der dazugehörige Code und einen PScreen vom Excel-Sheet. Die betreffende Zelle "D2" ist orange markiert  Angel

Bin dankbar für jede Hilfe!

Lg Selina

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long, b As Long, ArrR As Variant
On Error GoTo Fehler

Application.EnableEvents = False
Application.ScreenUpdating = False
If Target.Address = "$D$2" Then
  b = Target.Value
  ReDim ArrR(1 To b, 0)
  Range("AE6:AE2000").ClearContents
    For i = 1 To b
      Range("D2").Value = i
      ArrR(i, 0) = Range("N1").Value
    Next i
  Range("AE6").Resize(b).Value = ArrR
End If
Fehler:
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Hallo,

auf welchen Button Automate klickst Du? Das ist ein Ereignismakro, das wird in dem Fall gestartet, wenn eine Zelländerung gemacht wird. Das Makro muss dazu im Klassenmodul der Tabelle stehen.
Hallöchen,

Du hast aber das Makro ...Worksheet_Change... gepostet und nicht das Makro vom Button Automate.
Danke für deine Antwort Stefan.

Ich poste kurz den ganzen Code rein. 

Auf meinem Attachment ist der Button Automate ersichtlich ;)

LG

Code:
Private Sub CommandButton1_Click()
Dim i As Long
For i = 1 To Range("B3")
Call Step1_18
Call Step2_18
Call Step3_18
Call Step4_50
Next i

End Sub

Private Sub CommandButton2_Click()
Dim i As Long
For i = 6 To Range("D2").Value
Cells(i, 20).Value = Application.WorksheetFunction.Average(Range("F6:F" & i))
Next i

End Sub

Private Sub CommandButton3_Click()
Dim i As Long
For i = 6 To Range("D2").Value
Cells(i, 22).Value = Application.WorksheetFunction.Max(Range("H6:H" & i))
Next i
End Sub

Private Sub CommandButton4_Click()
Dim i As Long
For i = 6 To Range("D2").Value
Cells(i, 24).Value = Application.WorksheetFunction.StDevP(Range("F5:F" & i))
Next i
End Sub

Private Sub CommandButton5_Click()
ThisWorkbook.Worksheets("sheet1").Activate

Dim i As Long

For i = 7 To Range("D2").Value
Cells(i, 6).Formula = "=E" & i + 0 & "/E" & i - 1 & " -1"
Next i
End Sub

Private Sub CommandButton6_Click()
ThisWorkbook.Worksheets("sheet1").Activate

Dim i As Long



For i = 8 To Range("D2").Value


Cells(i, 27).Formula = "=E" & i + 0 & "/E" & i - 1 & " -1"

Cells(i, 29).Formula = "=AA" & i + 0 & "-AB" & i + 0
Cells(i, 30).Formula = "=AC" & i + 0 & "+AD" & i - 1
Cells(i, 31).Value = Application.WorksheetFunction.Max(Range("AD8:AD" & i))
Cells(i, 32).Value = Application.WorksheetFunction.Min(Range("AD8:AD" & i))
Cells(i, 33).Formula = "=AE" & i + 0 & "-AF" & i + 0
Cells(i, 34).Value = Application.WorksheetFunction.StDevP(Range("AA8:AA" & i))
Cells(i, 35).Formula = "=AG" & i + 0 & "/AH" & i + 0

Next i


End Sub

Private Sub CommandButton7_Click()
Dim i As Long
For i = 6 To Range("D1").Value
Cells(i, 28).Value = Application.WorksheetFunction.Average(Range("AA6:AA" & i))
Next i

End Sub


Private Sub CommandButton8_Click()
Call Step1_18
Call Step2_18
Call Step3_18
Call Step4_50
End Sub


Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long, b As Long, ArrR As Variant
On Error GoTo Fehler

Application.EnableEvents = False
Application.ScreenUpdating = False
If Target.Address = "$D$2" Then
  b = Target.Value
  ReDim ArrR(1 To b, 0)
  Range("AE6:AE2000").ClearContents
    For i = 1 To b
      Range("D2").Value = i
      ArrR(i, 0) = Range("N1").Value
    Next i
  Range("AE6").Resize(b).Value = ArrR
End If
Fehler:
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub


Sub MakroRepetition()
Dim i As Long
For i = 1 To Range("B3")
Call Step1_25
Call Step2_25
Call Step3_25
Call Step4_25
Next i
End Sub

Hallo Schauan,

mit dem Button "Automate" werden einige andere Makros ausgelöst, sorry für die Unklarheit meinerseits.

LG Selina

Anbei der Code für Automate
Code:
Private Sub CommandButton1_Click()
Dim i As Long
For i = 1 To Range("B3")
Call Step1_18
Call Step2_18
Call Step3_18
Call Step4_50
Next i

End Sub
Hallo Selina,

du hast jetzt 5 CommandButton_Click-Codes gepostet, mal abgesehen davon, welcher der Automate ist, fiel mir auf in keinen dieser Code hast Du die Ereignisse abgeschaltet was zum Auslösen des Change-Ereignis führt.

Nachtrag: Irgendwie blöd, wenn Du deinen Beitrag ändert, während man schreibt. Sad
Hallo Stefan,

hab den Fehler herausgefunden :21:  nach einer gefühlten Ewigkeit. 

Danke für Deine Bemühungen.

Ja, ich weiss, ist einbisschen unübersichtlich.... 

Das Problem lag daran, dass sich der Wert in D2 nicht automatisch ändern lässt, da dieser direkt an eine weiteres Marko meinerseits gekoppelt ist und ich nur in diesem Makro den Wert ändern kann, auf jeden Fall muss ich mir das für die Zukunft aufschreiben. (Step1_18 Makro war das "Problem")

Allen Helfern einen schönen Abend. 

LG