VBA
#1
Smile 
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


Angehängte Dateien Thumbnail(s)
   
Top
#2
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.
Gruß Stefan
Win 10 / Office 2016
Top
#3
Hallöchen,

Du hast aber das Makro ...Worksheet_Change... gepostet und nicht das Makro vom Button Automate.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#4
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
Top
#5
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
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • Selina1
Top
#6
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
Top


Gehe zu:


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