Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1836to1840
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Wenn B2=B1 dann C2=C1 (VBA)

Wenn B2=B1 dann C2=C1 (VBA)
01.07.2021 10:42:31
Pierre
Hallo zusammen,
nun habe ich auch nochmal wieder ein Problem, bei dem ich nicht weiter komme.
Gefunden habe ich auch nichts, was meinem Problem entspricht (vielleicht suche ich auch falsch).
Ich möchte, wie der Betreff sagt, mit VBA folgendes programmieren:
Wenn in der Zelle B2 der gleiche Eintrag wie in B1 ist, dann soll automatisch der Eintrag aus C1 in C2 übernommen werden.
Das Ganze aber variabel, da die Zeilen fortlaufend und ständig erweiternd sind.
Und außerdem soll das für die Spalten C, D, G, H gelten (ausgehend von Spalte B fix)!
Mit folgendem Schnipsel kommt leider erst eine Fehlermeldung und dann hängt er sich auf:

Zeilenzahl = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
For m = 2 To Zeilenzahl
If Range("B" & m) = Range("B" & m - 1) Then
Range("C" & m) = Range("C" & m - 1)
End If
Next m
Laufzeitfehler '-2147417848 (80010108):
Die Methode '_Default' für das Objekt 'Range' ist fehlgeschlagen
Es ist auch egal, ob ich mit oder ohne ".Value" arbeite.
Liegt es daran, dass ich die gleiche Variable für mehrere Spalten benutze?
Wie sollte ich dann aber eine weitere Variable einbauen?
Danke schon mal für Ideen.
Gruß Pierre

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wenn B2=B1 dann C2=C1 (VBA)
01.07.2021 11:37:29
Jakob
Ohne Beispieldatei ist mir noch nicht ganz klar, warum es da VBA braucht.

Sub test()
For m = 2 To ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
If Range("B" & m) = Range("B" & m - 1) Then
Range("C" & m) = Range("C" & m - 1)
End If
Next m
End Sub
Das funktioniert zumindest für C2.
Die Formellösung, für Zelle C2 wäre ja diese:

=WENN($B$1=$B$2;C1;"")

AW: Wenn B2=B1 dann C2=C1 (VBA)
01.07.2021 12:05:02
Pierre
Die If-Schleife ist exakt die Selbe?!
Und wie erwähnt, Laufzeitfehler kommt bei mir.
Warum VBA? Weil ich noch mehr Sachen dort programmiert habe innerhalb der Datei und ich würde das dann gerne alles so laufen lassen. Und (ja, Eigenart ...) mich stört es irgendwie, wenn da Formeln in den Zellen stehen (nein, das muss keiner verstehen ;-) )
Anzeige
Dann doch ne Mappe
01.07.2021 12:25:38
Pierre
Vielleicht dann doch mit Beispiel: https://www.herber.de/bbs/user/146896.xlsm
Nochmal zur Erklärung: Ich möchte zunächst in Spalte B einen Eintrag vornehmen, wenn dieser gleich dem darüberliegenden ist, möchte ich, dass automatisch die Zeilen in C, D, G und H nach unten kopiert werden.
Wie schon beschrieben:
Wenn B2 = B1, dann in C2 den Wert aus C1 einfügen.
Und das variabel, da sich die Tabelle fortlaufend erweitern wird.
Mit Jakobs Lösung (die meinem angegebenen Versuch entspricht) geht es nicht wg. Laufzeitfehler.
Und stört euch nicht am Chaos innerhalb des Codes, da muss ich noch aufräumen.
Danke und Gruß
Pierre
Anzeige
AW: Dann doch ne Mappe
01.07.2021 13:37:41
hary
Moin
So? Deinen restlichen Code hab ich nicht naeher untersucht.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.CountLarge = 1 And Not Intersect(Target, Columns(2)) Is Nothing Then
If Target.Offset(-1, 0) = Target Then
Application.EnableEvents = False
Target.Offset(-1, 1).Resize(1, 2).Copy Target.Offset(0, 1)
Target.Offset(-1, 5).Resize(1, 2).Copy Target.Offset(0, 5)
Application.EnableEvents = True
End If
End If
gruss hary
Problem gelöst! Dank Hary
01.07.2021 14:11:41
Pierre
Hallo Hary,
das ist genau das, was ich gesucht habe.
Perfekt, vielen Dank dafür!
Ich muss mir das mit dem Offset und Resize mal aneignen. Ich fummel mir meistens einen mit Range zusammen, wobei das bisher eigentlich immer funktioniert hat.
Gruß Pierre
Anzeige
AW: Wenn B2=B1 dann C2=C1 (VBA)
01.07.2021 15:02:38
Jakob
OK, inzwischen gibts ja eine Lösung, ich hatte nur den Code repariert, der von mir eingefügte brachte nämlich keinen Laufzeitfehler.
LG; Jakob

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige