Begrenzung Makro auf Anzahl Berechnungen/ Formel
#1
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
Top
#2
Hola,

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

Gruß,
steve1da
Top
#3
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
Top
#4
Hallo,

als erstes fällt mir auf, dass deine Zahlen in Anführungszeichen stehen, das sind dann Texte, damit kann Excel nicht rechnen (meistens).
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Top
#5
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
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#6
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
Top
#7
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
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • karlk
Top
#8
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
Top
#9
Hallo,

(20.10.2020, 12: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
Gruß Stefan
Win 10 / Office 2016
Top
#10
Danke, genau so funktioniert sie. Die Bezeichnung mit der leeren Zelle war mir noch nicht bekannt.

Viele Grüße
Top


Gehe zu:


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