Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1468to1472
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

Verschiebung von Zelleninhalten bei best. Namen

Verschiebung von Zelleninhalten bei best. Namen
10.01.2016 18:16:39
Zelleninhalten
Hallo liebe Community,
ich möchte folgende Aufgabestellung mit eurer Hilfe in VBA als Macro lösen:
Ich habe ein .txt Dokument, das via Marcro in Excel mit der Funktion "Text in Spalten" eingelesen wird.
In einer Spalte werden die Werte, die mit "XE" beginnen, vermeintlich fehlerhaft eingefügt. (Eigentlich ist es richtig, da zu viele Kommas in der txt. Datei sind und somit eine extra Spalte erzeugt wird. Das ist eigentlich ein Fehler der txt. Datei. Da aber die Textdatei von einem Programm exportiert wird, kann man da nichts ändern).
Nun möchte ich immer, wenn in der Spalte "H" die Namen mit "XE" beginnen z.b Zeile 25, den Zeileninhalt von "I,25" nach "L,25" verschieben.
Am Anfang muss natürlich geprüft werden, wie viele Zeilen es überhaupt gibt, und, ob "EX" überhaupt vorkommt.
Mein Versuch, der leider nicht funktioniert, sieht folgender Maßen aus:
'Checken, wie viele Zeilen durchlaufen werden müssen, dh bis die erste Zeile leer ist
Do until Range((xlCellTypeLastCell).value = ""
' If Bedingung für Werte, die mit "EX" beginnen
If cell(H,i).value = "EX*"
'dann soll ein Wert in der gleichen Zeile in eine andere Zeile ausgeschnitten und eingefügt werden
then Range(I,i).cut and Range(L,i).paste
next i
Elseif next i
Endif
Loop
Ich hoffe, ihr habt verstanden was ich möchte. Falls nicht fragt einfach und ich versuche es genauer bzw. anhand eines Beispiels erklären.
Bin um jede Hilfe dankbar.
Gruß und Dank
Phil

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verschiebung von Zelleninhalten bei best. Namen
10.01.2016 18:53:19
Zelleninhalten
Hi Phil
Wieso zeigst du uns nicht gleich eine Bsp-Datei?
Ich sehe in deinem Codeschnipsel ein "next i", aber wo ist das dazugehörige "For i" ?
Versuch mal dies (ungetestet):
anstelle von
If cell(H,i).value = "EX*"

schreib mal
If lcase(Left(cell(H,i).value, 2)) = "ex"
LCase = wandelt alles in Kleinbuchstaben um; deswegen MUSS hinterm = auch "ex" stehen.
Left = überprüft in diesem Fall die ersten 2 Zeichen, beginnend auf der linken Seite des zu prüfenden Inhaltes.
Hilfts?
Ciao
Thorsten

Anzeige
AW: Verschiebung von Zelleninhalten bei best. Namen
10.01.2016 19:54:13
Zelleninhalten
Hi Thorsten,
bin davon ausgegangen, dass ich es verständlich genug ausgedrückt hätte. Habe noch mal ein Beispiel geuploaded.
www.herber.de/bbs/user/102709.xlsm
Danke für den Tipp. Mein neues Macro sieht nun so aus:

Sub click_me()
i = 1
' If Bedingung für Werte, die mit "EX" beginnen
If LCase(Left(cell("H", i).Value, 2)) = "ex" Then
'dann soll ein Wert in der gleichen Zeile in eine andere Zeile ausgeschnitten und eingefügt  _
werden
Range("I", i).Cut
Range("L", i).Paste
Next i
'Falls kein "EX" in der Zelle steht, soll er die nächste Zeile durchsuchen
Elsif
Next i
'Wenn die erste Zeile leer ist, soll die If function soll aufhören --> end if
Else
Range("H", i).Value = ""
End If
End Sub
Ich bekomm immer eines Fehler:
Fehler beim Kompilieren:
Sub oder Function nicht definiert.
Kann mir jmd. weiter helfen?
Gruß und Dank
Phil

Anzeige
AW: Verschiebung von Zelleninhalten bei best. Namen
10.01.2016 21:06:24
Zelleninhalten
Hi Phil
Bsp-Dateien inkl Bsp-Daten und VBA-Code sind - immer - besser, als nur Erklärungen.
Und füge bitte den vollständigen Link einer deiner Bsp-Dateien hinzu.
Denn, wenn du dir mal deine Antwort anschaust, erkennst du, dass man deinen Link nicht anklicken kann.
Nur zur Info ;-)
hier, versuch mal:
https://www.herber.de/bbs/user/102710.xlsm
Ich habe deinen Code so belassen, wie er ist, weil zu viele Fehler drin sind.
Ich habe ihn in "DEIN_CODE_click_me" umbenannt.
falsch:
cell("H", i).Value
richtig:
CELLS(i, 8).Value
bei Verwendung von CELLS ist der 1. Parameter die Zeile, nicht die Spalte.
Außerdem werden bei CELLS die Spalten mit der Spalten-Nummer, aber nicht mit dem Spalten-Buchstaben angesprochen.
falsch:
Range("I", i)
richtig:
Range("I" & i)
Spalte und Zeile werden bei RANGE mit dem &-Zeichen verknüpft, nicht mit einem Komma.
Meinen eigenen Code habe ich "MEIN_CODE_click_me" genannt.
Ich hab meinen Code auch dem Button zugewiesen.
Wenn du nun die Tabelle öffnest + auf den Button klickst, werden in allen Zeilen, in denen in Spalte H der Wert mit "ex" beginnt, der jeweilige Wert in Spalte I ausgeschnitten und in Spalte L eingefügt.
Hilfts?
Ciao
Thorsten

Anzeige
AW: Verschiebung von Zelleninhalten bei best. Namen
10.01.2016 23:09:19
Zelleninhalten
Perfekt :-)
Danke für deine Hilfe und die Erklärungen im Macro.
Ich habe da zu kompliziert gedacht....
Danke nochmal.
Gruß
Phil

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige