Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
408to412
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
408to412
408to412
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

If schleife

If schleife
Jürgen
Hallo,
nachfolgend habe ich folgendes Problem:
Es soll ein Wert in Spalte B gesucht werden, der mit dem Wert von U17 übereinstimmt. Wenn Excel diesen gefunden hat, dann soll der Cursor eine Zelle nach links verschoben werden und ein zuvor markierter Wert in diese Zelle eingefügt werden. Dies funktioniert insoweit, daß er in jede Zeile den Wert einfügt, d.h. er sucht nicht nach dem Wert von U17.
Was mach ich falsch?
Do Until ActiveCell.Value = ""
If ActiveCell.Value = u17 Then _
Zaehler1 = Zaehler1 + 1
ActiveCell.Offset(0, -1).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
ActiveCell.Offset(0, 1).Select
ActiveCell.Offset(1, 0).Select
Loop
Danke für Eure Hilfe.

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: If schleife
08.04.2004 21:37:29
Nepumuk
Hallo Jürgen,
versuch mal:
If ActiveCell.Value = [u17]
Gruß
Nepumuk
AW: If schleife
Boris
Hi Jürgen,
ein Zellbezug wird mit 'Cells' oder 'Range' angegeben - in Deinem Fall also statt
If ActiveCell.Value = u17 Then
dann
If ActiveCell.Value = Range("u17") Then
Allerdings ist das Makro gruselig - das geht auch völlig ohne Select.
In welchem Bereich wird denn gesucht?
Grüße Boris
OT If schleife
PeterW
Hallo Boris,
mit gruseligem Code hat fast jeder angefangen. :-)
"Es soll ein Wert in Spalte B gesucht werden"
Gruß
Peter
AW: OT If schleife
Boris
Hi Peter,
...hättet ihr mir damals nicht auch immer auf die VBA-Finger gehauen ...;-))
Allerdings: Wo in Spalte B? Ganze Spalte? Nur in einem Teilbereich?
Will ja eigentlich nur auf Find und FindNext raus - oder zumindest mal For-Each...:-)
Grüße Boris
Anzeige
AW: OT If schleife
PeterW
Hallo Boris,
bei der Geschwindigkeit, mit der Find arbeitet dürfte Spalte B ausreichend sein.
Gruß
Peter
AW: If schleife
Jürgen
Hallo Boris,
das kann schon sein, daß das Makro gruselig aussieht, weil ich meine neuen Makros immer aus alten Makros zusammenbaue. Aber- meistens funktionierts.
In dem Bereich hier, suche ich im gleichen TB in Spalte B13 bis B24 den Wert aus U17, um den zu kopierenden Wert dann in Spalte A in der gleichen Zeile einzufügen.
Danke.
AW: If schleife
Jürgen
Hallo Boris,
ich habs ausprobiert, aber das Ziel habe ich damit leider nicht erreicht.
Do Until ActiveCell.Value = ""
If ActiveCell.Value = Range("u17") Then _
Zaehler1 = Zaehler1 + 1
ActiveCell.Offset(0, -1).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
ActiveCell.Offset(0, 1).Select
ActiveCell.Offset(1, 0).Select
Loop
Er sucht nicht nach U17. Er fügt in jede Zeile in der in Spalte B etwas steht auch in A den zu kopierenden Wert ein. In den Zellen, die nicht U17 entsprechen, sollte er einfach drüber gehen.
Vielleicht fällt Euch dazu noch etwas ein.
Danke.
Anzeige
Der Unterstrich ist der "Fehler"...
Boris
Hi Jürgen,
...denn mit dem _ zeigst du an, dass die in der nächsten Zeile folgende Anweisung eigentlich noch in die gleiche Zeile gehört.
Somit Steht die If-Then-Bedingung in EINER Zeile - und bildet daher KEINEN Block um das bedingte Einfügen herum.
Probier mal das (ungetestet):
Do Until ActiveCell.Value = ""
If ActiveCell.Value = Range("u17") Then
Zaehler1 = Zaehler1 + 1
ActiveCell.Offset(0, -1).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
ActiveCell.Offset(0, 1).Select
End If
ActiveCell.Offset(1, 0).Select
Loop
Grüße Boris
Anzeige
Ohne Select - mit For-Each
Boris
Hi Jürgen,
in deinem Fall würde ich es im übrigen auf diese Art machen:
Suchwert = U17, zu kopierender Wert steht in C10.
Option Explicit

Sub tu_es()
Dim C As Range
Dim Suchwert As Variant
Dim zuKopierenderWert As Variant
Suchwert = Range("U17")
zuKopierenderWert = Range("C10")
For Each C In Range("B13:B24")
If C = Suchwert Then C.Offset(0, -1) = zuKopierenderWert
Next C
End Sub

Grüße Boris

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige