ich versuche gerade ein Makro zu schreiben und bin ein wenig überfordert.
Ich habe eine Tabelle, und ich habe einen Button. Ich möchte gerne, dass der Button folgendes macht:
Er soll in Spalte X gehen und alle Zeilen auswählen, die dort die Zahl/Buchstaben A haben. Dann soll er in Zeile Y den Wert B zu der Zahl addieren, die dort schon steht, und den ersetzen. Außerdem soll er in Zeile Z nein mit ja ersetzen.
Ich bekomme Teile von dem Makro hin, scheitere aber insbesondere am ersten Teil, wo er die Zeilen auswählt. Da bei der Tabelle immer mal wieder Zeilen hinzugefügt werden, kann ich auch leider nicht einfach die Zelle F1 oder G35 im Makro festlegen.
Falls mir da jemand helfen könnte, wäre das super!
P.S. Ich hab vorher selbstverständlich gegoogelt, aber war leider nicht erfolgreich.
04.06.2020, 17:50 (Dieser Beitrag wurde zuletzt bearbeitet: 04.06.2020, 17:50 von MisterBurns.)
Hallo,
dann lade eine Beispielmappe hoch, nachbauen wird dir das vermutlich keiner. Außerdem überdenke nochmal die Aussage
Zitat:Er soll in Spalte X gehen und alle Zeilen auswählen, die dort die Zahl/Buchstaben A haben. Dann soll er in Zeile Y den Wert B zu der Zahl addieren, die dort schon steht, und den ersetzen. Außerdem soll er in Zeile Z nein mit ja ersetzen.
Was soll man damit anfangen?
Erst schreibst du von Spalte X, dann auf einmal von Zeile Y und Zeile Z. Was denn nun? Es gibt nur Spalten mit Buchstabenbezeichnungen, Zeilen haben Nummern. Und "die dort Zahl/Buchstaben A haben" ist auch unverständlich. Was soll eine Zahl A sein?
Die Beispielmappe enthält ein paar Zeilen sowie in einer separaten Tabelle das Wunschergebnis.
vielleicht änderst du ja bald deinen Namen in "Ichkannbaldvba" (Welche Version ist "1908"?)
Zu deinem Makro: ich habe dir mal ein einfaches Makro beigefügt. Dabei bin ich von deinen Angaben ausgegangen, dass du wirklich in den Spalten "X" bis "Z" etwas ändern möchtest. Gewöhne dich am besten schon am Anfang daran, Variablen zu deklarieren, das spart später die Fehlersuche. In meinem Beispiel habe ich 4 Variablen definiert: "MeinBereich" ist der Bereich in Spalte "X", wo du suchen möchtest. Ich gehe davon aus, dass die Spalte eine Überschrift hat, daher beginnt der Bereich in "X2". "letzteZeile" ist die letzte Zeile in Spalte "X". "Zelle" ist jede Zelle (in deinem Bereich), die in einer Schleife durchlaufen wird. "WertB" ist die Zahl, die ich von deinem "Wert B" habe. Vielleicht legst du die aber auch in deiner Tabelle irgendwo fest.
Die Schleife (beginnt mit "For Each ...") durchläuft nun den Bereich und prüft, ob die aktuelle Zelle den Wert "A" enthält. Wenn ja, dann multipliziert er den Wert in der 1. Nachbarzelle (Offset) mit dem "Wert B" und schreibt in die 2. Nachbarzelle ein "ja". Ich weiß nicht, ob du bei dem letzten Schritt noch erst prüfen möchtest, ob da vorher ein "nein" stand.
Code:
Sub MeinMakro()
Dim MeinBereich As Range Dim letzteZeile As Long Dim Zelle As Range Dim WertB As Integer
04.06.2020, 19:06 (Dieser Beitrag wurde zuletzt bearbeitet: 04.06.2020, 19:18 von Ichkannkeinvba.)
(04.06.2020, 17:50)MisterBurns schrieb: Hallo,
dann lade eine Beispielmappe hoch, nachbauen wird dir das vermutlich keiner. Außerdem überdenke nochmal die Aussage
Was soll man damit anfangen?
Erst schreibst du von Spalte X, dann auf einmal von Zeile Y und Zeile Z. Was denn nun? Es gibt nur Spalten mit Buchstabenbezeichnungen, Zeilen haben Nummern. Und "die dort Zahl/Buchstaben A haben" ist auch unverständlich. Was soll eine Zahl A sein?
Die Beispielmappe enthält ein paar Zeilen sowie in einer separaten Tabelle das Wunschergebnis.
Ich bin offenbar zu blöd, eine Beispielmappe hochzuladen - Wie geht das?
Mit X, Y, und Z sind einfach irgendwelche variablen Zeilen/Spalten gemeint. So wie man auch in Mathe x = y + z als Formel nehmen kann. Und mit Zahl A ist genauso eine variable Zahl gemeint, das kann 100, 1000 oder was auch immer sein. Falls das unverständlich war, tut mir das Leid, mir erschien das logisch, als ich es geschrieben habe.
vielleicht änderst du ja bald deinen Namen in "Ichkannbaldvba" (Welche Version ist "1908"?)
Zu deinem Makro: ich habe dir mal ein einfaches Makro beigefügt. Dabei bin ich von deinen Angaben ausgegangen, dass du wirklich in den Spalten "X" bis "Z" etwas ändern möchtest. Gewöhne dich am besten schon am Anfang daran, Variablen zu deklarieren, das spart später die Fehlersuche. In meinem Beispiel habe ich 4 Variablen definiert: "MeinBereich" ist der Bereich in Spalte "X", wo du suchen möchtest. Ich gehe davon aus, dass die Spalte eine Überschrift hat, daher beginnt der Bereich in "X2". "letzteZeile" ist die letzte Zeile in Spalte "X". "Zelle" ist jede Zelle (in deinem Bereich), die in einer Schleife durchlaufen wird. "WertB" ist die Zahl, die ich von deinem "Wert B" habe. Vielleicht legst du die aber auch in deiner Tabelle irgendwo fest.
Die Schleife (beginnt mit "For Each ...") durchläuft nun den Bereich und prüft, ob die aktuelle Zelle den Wert "A" enthält. Wenn ja, dann multipliziert er den Wert in der 1. Nachbarzelle (Offset) mit dem "Wert B" und schreibt in die 2. Nachbarzelle ein "ja". Ich weiß nicht, ob du bei dem letzten Schritt noch erst prüfen möchtest, ob da vorher ein "nein" stand.
Code:
Sub MeinMakro()
Dim MeinBereich As Range Dim letzteZeile As Long Dim Zelle As Range Dim WertB As Integer
For Each Zelle In MeinBereich If Zelle.Value = "A" Then Zelle.Offset(0, 1) = Zelle.Offset(0, 1) * WertB Zelle.Offset(0, 2) = "ja" End If Next
End Sub
Version 1908 ist die Version, die ich sehe, wenn ich unter Datei-->Konto-->Info zu Excel nachschaue.
Deinem Makro kann ich leider nicht ganz folgen, ich kann halt wirklich kein VBA...
Ich habs jetzt hinbekommen, ein Beispiel hochzuladen: Ich habe verschiedene Produkte, mit dazugehörigen Produktgruppen. Ich würde jetzt gerne einen Button erstellen, der nach der Produktgruppe sucht (im Beispiel Gruppe 2) und dann bei Anzahl eine feste Menge (z.B. 100) hinzufügt. Außerdem soll der Knopf in der Spalte "heute produziert?" das nein in ein ja ändern.
Ich hoffe das ist verständlicher als mein ursprünglicher Post. Auf jeden Fall schon mal danke für eure Hilfe. Hab ich es jetzt hinbekommen? Ja :)
Sub Aendern() Dim PG As Long, Menge As Long, i As Long, letzte As Long
PG = InputBox("Bitte Produktgruppe eingeben") Menge = InputBox("Bitte gewünschte Menge eingeben, die addiert werden soll")
With Sheets("Tabelle1") letzte = .Cells(Rows.Count, 1).End(xlUp).Row
If PG <> 0 And Menge <> 0 Then For i = 2 To letzte If .Cells(i, 2) = PG Then .Cells(i, 3) = .Cells(i, 3) + Menge .Cells(i, 4) = "Ja" End If Next i Else MsgBox "Produktgruppe oder Menge wurden nicht eingegeben" End If End With
End Sub
Setzt voraus, dass die Produktgruppe tatsächlich eine Zahl ist und auch als solche in der Spalte erfasst ist.
BTW: Bitte zitiere nicht weiter komplette Beiträge, das bläht den Thread nur unnötig auf und erschwert das Lesen.