Clever-Excel-Forum

Normale Version: Begrenzung Makro auf Anzahl Berechnungen/ Formel
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich schreibe zurzeit eine große Projektarbeit.

Mein zusammengefügtes Makro funktioniert bis zu einen gewissen Punkt, dann wird die Formel zwar noch berechnet aber zeigt kein Ergebnis mehr an.

Es wurden diverse Möglichkeiten geprüft, leider hat keine geholfen. Auch wenn man das Makro einzeln auslöst wird kein Ergebnis angezeigt. Dies gilt auch für die nachfolgende Formel. Im Laufe des Makros wurde die Formel bereits des öfteren verwendet und funktionierte dort ohne Probleme.

Begrenzt man die Formel auf die Spalte "LA", funktioniert diese.

An was kann dies liegen? Evtl. maximale Anzahl von Formeln erreicht oder maximale Berechnungsanzahl?

Evtl. auch an was anderen?

Für Eure Hilfe wär ich dankbar.

With Worksheets("Sheet1")
  x = .Range("LA1").Column
 y = .Range("BOJ1").Column
  For i = x To y
    If .Cells(i, 59).Value2 = .Cells(ggge, 60) And _
    .Cells(i, 3).Value2 = "0" And _
    .Cells(i, 14).Value2 = "1" And _
    .Cells(i, 1).Value2 >= .Cells(i, 36) And _
    .Cells(i, 1).Value2 <= .Cells(i, 37) Then
      .Cells(i, 5).Value2 = "1"
    Else: .Cells(i, 5).Value2 = "0"
End If
Next
End With


MfG
Hola,

verlinkst du bitte deine Fragen in den verschiedenen Foren gegenseitig?
Danke.

Gruß,
steve1da
Kann ich gerne machen, wenn gewünscht.

Anbei der Link zum VBA Forum.

https://www.vba-forum.de/View.aspx?ziel=...n_in_Makro

Eine Idee an was es liegen könnte?

Danke und mfG
Hallo,

als erstes fällt mir auf, dass deine Zahlen in Anführungszeichen stehen, das sind dann Texte, damit kann Excel nicht rechnen (meistens).
Moin!
Die Variablen x und y stellen Spalten-Nummern dar.
In der Schleife weist Du ihnen aber Zeilen zu!
[Cells(Zeile, Spalte)]

Ist das beabsichtigt?

Gruß Ralf
Hallo,

das Ziel soll sein, folgende Formel Horizontal von LA bis BOJ zu berechnen.


With Worksheets("Sheet1")
      If .Range("LA59").Value = .Range("LA60").Value _
      And .Range("LA3").Value = 0 _
      And .Range("LA14").Value = 1 _
      And .Range("LA1").Value >= .Range("LA36").Value _
      And .Range("LA1").Value <= .Range("LA37").Value _
      Then
        .Range("LA5").Value = 1
      Else
        .Range("LA5").Value = 0
      End If
    Next
  End With
Hallo,

Code:
Sub prcX()
   Dim lngC As Long
  
  
   With Worksheets("Sheet1")
      For lngC = 313 To 1752
         If .Cells(59, lngC).Value = .Cells(60, lngC).Value _
         And .Cells(3, lngC).Value = 0 _
         And .Cells(14, lngC).Value = 1 _
         And .Cells(1, lngC).Value >= .Cells(36, lngC).Value _
         And .Cells(1, lngC).Value <= .Cells(37, lngC).Value _
         Then
           .Range(5, lngC).Value = 1
         Else
           .Range(5, lngC).Value = 0
         End If
      Next
  
   End With

End Sub
Danke Stefan! Funktioniert Smile

Daraus habe ich jetzt noch folgendes Makro gebaut:

With Worksheets("Sheet1")
Dim lnga As Long
Dim lngb As Long
Dim x As Long
For x = 12 To 13
For lnga = 313 To 1752
For lngb = 1797 To 3236
If .Cells(lnga, 3).Value = 1 And _
.Cells(lnga, 12).Value > "" Then
.Cells(lnga, x).Copy .Cells(lngb, 13)
End If
Next
Next
Next
End With


Leider kommt kein Ergebnis dabei raus, das Makro hängt sich nur kurz auf. Kannst du einen Fehler im Makro erkennen?

Kurz erklärt: Wenn LA3 = LA1 und LA12 > "" dann soll LA12:LA13 nach BQC13 kopiert werden. Das ganze wieder für den Bereich von LA bis BOJ und einkopiert wird es von BQC bis DTL.

Danke
Hallo,

(20.10.2020, 11:52)karlk schrieb: [ -> ]Kurz erklärt: Wenn LA3 = LA1 und LA12 > "" dann soll LA12:LA13 nach BQC13 kopiert werden. Das ganze wieder für den Bereich von LA bis BOJ und einkopiert wird es von BQC bis DTL.

im Code prüfst Du aber LA3 =1 und LA12 > "" geht nicht. Was willst Du da prüfen? Ob LA12 leer ist? Und klar das es ein wenig dauert, Immerhin wird deine If-Abfrage über 4 Mio durchlaufen.

Code:
With Worksheets("Sheet1")
Dim lnga As Long
Dim lngb As Long
Dim x As Long
For x = 12 To 13
For lnga = 313 To 1752
For lngb = 1797 To 3236
If .Cells(lnga, 3).Value = 1 And _
Not IsEmpty(.Cells(lnga, 12).Value) Then
.Cells(lnga, x).Copy .Cells(lngb, 13)
End If
Next
Next
Next
End With
Danke, genau so funktioniert sie. Die Bezeichnung mit der leeren Zelle war mir noch nicht bekannt.

Viele Grüße