Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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
Antworten Top
#2
Hola,

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

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

Viele Grüße
Antworten Top


Gehe zu:


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