| Makro: Ergebnis einer Rechnung PLUS Formel in Zelle ausgeben |
Moin Moin,
ich muss euch leider wieder belästigen: Ich schreibe wieder an einem Makro und zwar nimmt es intern eine Rechnung vor, das Ergebnis wird jetzt aber nicht einfach in einer Zelle ausgegeben, sondern nochmals mit einer Formel verknüpft.
Bsp:
interne Rechnung 2+2+2+2=8
dann soll in die Zelle nicht das Ergebnis (8) sondern dieses durch 12 geteilt werden und mit dem Wert aus der Zelle H12 multipliziert werden.
Ich habe dafür folgendes eingegeben:
Worksheets("SUMMARY").Cells(12, 3).Value = "=" & SUMME & "/12*R[12]C[8]"
Worksheets("Summary").Cells(12, 3).Value = MOUNT
Das Ergebnis der Rechnung, welches in der Variablen "Summe" steht, wird also durch 12 geteilt und mit H12 multipliziert.
Seltsamerweise gibt es da manchmal, je nach Datei, in der das Makro angewandt wird einen Fehler. Meine Frage: Was ist falsch?
Vielen Dank
Schönen Sonntagabend noch
rapperzahn
Antwort schreiben
Antwort 1 von Saarbauer vom 26.10.2020, 19:44 Options
Hallo,
Was für ein Fehler kommt den?
Etwas anderes, könnte auch mit dem Fehler zusammenhängen,
Zitat:
Worksheets("SUMMARY").Cells(12, 3).Value = "=" & SUMME & "/12*R[12]C[8]"
Worksheets("Summary").Cells(12, 3).Value = MOUNT
Du schreibst beide Male in die gleiche Zelle
Gruß
Helmut
Antwort 2 von rapperzahn vom 26.10.2020, 19:55 Options
Moin Moin,
danke, Saarbauer, eigentlich könnte ich mich direkt an dich wenden! ;-)
Mmmh, eine Fehlermeldung habe ich nicht bekommen, der bricht halt immer ab und fragt, ob man Debuggen möchte, aber ich werde es morgen nochmal auf Fehlerangabe hin durchlaufen lassen, zuvor jedoch meinen Fehler korrigieren *ups*.
Danke
rapperzahn
Antwort 3 von Saarbauer vom 26.10.2020, 20:31 Options
Hallo,
als Hinweis, der Fehler liegt in der Zeile die farbig hinterlegt ist.
Da du keine Angabe zur Fehlermeldung machen kannst, ist es schwierig hierzu was zu sagen.
Gruß
Helmut
Antwort 4 von coros vom 27.10.2020, 05:27 Options
Hallo,
das beide Befehle in die gleiche Zelle schreiben, ist glaube ich nicht das Problem. Das Problem an daran ist viel mehr, dass ich nciht verstehe, warum beide Befehle in die gleiche Zelle schreiben. Warum ist das so?
Mögliches Problem könnte sein, dass der Blattname nicht mit dem Namen in den Befehlen zusammen passen. Ich komme darauf, da rapperzahn schreibt
Zitat:
Seltsamerweise gibt es da manchmal, je nach Datei, in der das Makro angewandt wird einen Fehler. Meine Frage: Was ist falsch?
Der Befehl wird anscheinen nicht in einer, sondern in mehreren Dateien angewandt und wenn da der Blattname nicht stimmt, kommt es zum Fehler.
Weiteres Problem könnte z.B. sein, dass in manchen Dateien der Blattschutz aktiv ist.
Es gibt noch eine Vielzahl von Problemen, die auftreten können. Für eine genauere Fehlerbehebung müsste man schon wissen, welcher Laufzeitfehler auftritt und welche Zeile (wie bereits von Helmut geschrieben) nach dem Betätigen des Buttons "Debuggen" markiert wird. Auch wäre es nicht schlecht, wenn man die fehlerhafte Datei bekommen könnte.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 5 von Saarbauer vom 27.10.2020, 07:30 Options
Hallo,
meine Vermutung lag und liegt bei
Worksheets("SUMMARY").Cells(12, 3).Value = "=" & SUMME & "/12*R[12]C[8]"
da ich nicht weiss was dahinter steckt., aber was @coros schreibt, könnte auch möglich sein
Gruß
Helmut
Antwort 6 von rapperzahn vom 27.10.2020, 21:17 Options
Moin Moin,
okay. Sorry, dass ich euch mit so wenigen Informationen versorgt habe. Der Code war übrigens richtig.
Zitat:
Sheets("Sheet1").Select
Do While zahl < 501
zahl = zahl + 1
If Application.Trim(Worksheets("Sheet1").Cells(zahl, 2)) = _
Application.Trim(Worksheets("Summary").Cells(24, 10)) Then
SUMME = SUMME + Cells(zahl, 25).Value
MOUNT = MOUNT + 1
End If
If Application.Trim(Worksheets("Sheet1").Cells(zahl, 2)) = _
Application.Trim(Worksheets("Summary").Cells(25, 10)) Then
SUMMF = SUMMF + Cells(zahl, 25).Value
MOUNS = MOUNS + 1
End If
If Application.Trim(Worksheets("Sheet1").Cells(zahl, 2)) = _
Application.Trim(Worksheets("Summary").Cells(26, 10)) Then
SUMMG = SUMMG + Cells(zahl, 25).Value
MOUNM = MOUNM + 1
End If
If Application.Trim(Worksheets("Sheet1").Cells(zahl, 2)) = _
Application.Trim(Worksheets("Summary").Cells(27, 10)) Then
SUMMH = SUMMH + Cells(zahl, 25).Value
MOUNN = MOUNN + 1
End If
Loop
Sheets("SUMMARY").Select
Range("D12").Select
Range("D12").Value = "=" & SUMME & "/12*R[-4]C[8]"
Range("C12").Select
Cells(12, 3).Value = MOUNT
Range("D13").Select
Cells(13, 4).Value = "=" & SUMMF & "/12*R[-5]C[8]"
Range("C13").Select
Cells(13, 3).Value = MOUNS
Range("D14").Select
Cells(14, 4).Value = "=" & SUMMG & "/12*R[-6]C[8]"
Range("C14").Select
Cells(14, 3).Value = MOUNM
Range("D15").Select
Cells(15, 4).Value = "=" & SUMMH & "/12*R[-7]C[8]"
Range("C15").Select
Cells(15, 3).Value = MOUNN
Das war der Zusammenhang. Die Fehlermeldung kam nur bei einer Datei und zwar, wenn der Suchbegriff, der in der Zelle (25,10) etc. stand nicht im Dokument enthalten war.
Je nach Dokument sind nämlich hinten dem Suchbegriff unterschiedlich viele Leerzeichen, weshalb das Makro die Begriffe nicht findet.
Meine Frage würde also eher in die Richtung geben:
Gibt es eine Funktion, die nur nach Wortteilen, also Buchstaben sucht (wie die Strg+F- Funktion), dann aber den gefundenen Inhalt komplett (mit allen restlichen Zeichen) in die Zelle (25,10) schreibt.
Bsp.:
Die Funktion sucht nach "Hallo" und findet dann beim ersten "HALLO-DU-DA ". Diesen kompletten Inhalt soll sie dann in Zelle (25,10) kopieren. GIbt es so was?
Das wäre cool und würde wahrscheinlich die mögliche Fehlermeldung umgehen!
Vielen Dank
rapperzahn
Antwort 7 von Saarbauer vom 27.10.2020, 21:31 Options
Hallo,
richtig verstanden habe ich es nicht, aber texte kannst du nicht mit + zusammenaddieren, da ist & zuverwenden
SUMME = SUMME & Cells(zahl, 25).Value
Ausserdem hast du vor der While-Schleife alle Werte auf einen Anfangswert gesetzt, sonst kann es auch Probleme geben
Gruß
Helmut
Antwort 8 von sicci vom 28.10.2020, 01:29 Options
Hallo rapperzahn,
könnte Dir der cells.find Befehl helfen?
Cells.Find("hallo").Copy
Cells(25, 10).Insert
Grüße
sicci