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

zu viele Zeichen in VBA-Zeilenumbruch im Makrocode

zu viele Zeichen in VBA-Zeilenumbruch im Makrocode
26.08.2015 13:43:05
braun
Sheets(1).Select
startzeile = 2
Spalte = 2
startzeile2 = 2
Sheets(1).Select
Letzte_Zeile = Range(Cells(60000, Spalte), Cells(60000, Spalte)).End(xlUp).Row
For i = startzeile To Letzte_Zeile
If Left(Sheets(1).Cells(i, Spalte), 7) = "ABCDEFG" Or Left(Sheets(1).Cells(i, Spalte), 7) = "BCDEFGH" Or Left(Sheets(1).Cells(i, Spalte), 7) = "CDEFGHI" Or Left(Sheets(1).Cells(i, Spalte), 6) = "ABCDEF" Or Left(Sheets(1).Cells(i, Spalte), 7) = "ABCDEFK" Or Left(Sheets(1).Cells(i, Spalte), 7) = "FGHIJKL" Or Left(Sheets(1).Cells(i, Spalte), 10) = "ABC DEF GH" Or Left(Sheets(1).Cells(i, Spalte), 11) = "ABC DEF GHI" Or Left(Sheets(1).Cells(i, Spalte), 7) = "DEFGHIJ" Or Left(Sheets(1).Cells(i, Spalte), 7) = "EFGHIJK" Or Left(Sheets(1).Cells(i, Spalte), 7) = "ABC DEF" Or Left(Sheets(1).Cells(i, Spalte), 7) = "AB DE C" Or Left(Sheets(1).Cells(i, Spalte), 7) = "FGH IJK" Or Left(Sheets(1).Cells(i, Spalte), 7) = "CDE FGH" Or Left(Sheets(1).Cells(i, Spalte), 7) = "IJKLMNO" Or Left(Sheets(1).Cells(i, Spalte), 7) = "FGHIJKL" Or Left(Sheets(1).Cells(i, Spalte), 7) = "AAA AAA" Or Left(Sheets(1).Cells(i, Spalte), 7) = "AAAA KK" Or Left(Sheets(1).Cells(i, Spalte), 7) = "BB BBBB" Then
Sheets(1).Rows(i & ":" & i).Copy
Sheets(2).Select
Cells(startzeile2, 1).Select
ActiveSheet.Paste
startzeile2 = startzeile2 + 1
Else
End If
Folgender Code klappt super, es gibt nur ein Problem: Ich möchte noch weitere "Or" Zeilen einfügen, aber der VBA Code ist zu lang. wie kann ich in der nächsten Zeile weiterschreiben?
Mit _ und & funktioniert es nicht. Gibt es eine andere Möglichkeit?
Vielen Dank!

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: zu viele Zeichen in VBA-Zeilenumbruch im Makrocode
26.08.2015 13:52:22
Rudi
Hallo,
besser in der Art:
  Dim sTest As String
For i = startzeile To Letzte_Zeile
sTest = Left(Sheets(1).Cells(i, Spalte), 7)
Select Case sTest
Case "ABCDEFG", "BCDEFGH", "CDEFGHI", "ABCDEF", "ABCDEFK"  'etc
Sheets(1).Rows(i & ":" & i).Copy
Sheets(2).Select
Cells(startzeile2, 1).Select
ActiveSheet.Paste
startzeile2 = startzeile2 + 1
End Select
Gruß
Rudi

AW: zu viele Zeichen in VBA-Zeilenumbruch im Makrocode
26.08.2015 14:40:40
braun
Vielen Dank!
Das Problem ist allerdings, dass die Wortteile nicht immer sieben Zeichen lang sind, sondern auch manchmal 11,10, etc. Kann man das noch mit einbauen?
Viele Grüße

Anzeige
AW: zu viele Zeichen in VBA-Zeilenumbruch im Makrocode
26.08.2015 14:50:43
Rudi
Hallo,
kann man mit Sicherheit.
Ich habe allerdings keine Ahnung, wie deine Daten und deine Kriterien aussehen.
Vor allem sollte man logisch rangehen.
Gruß
Rudi

AW: zu viele Zeichen in VBA-Zeilenumbruch im Makrocode
26.08.2015 14:55:13
braun
ich suche nach bestimmten Wörtern bzw Wortfetzen in der Spalte
wenn diese gefunden werden, wird die komplette Zeile in ein neues Tabellenblatt eingefügt.
Da die Wörter unterschiedlich lang sind, reicht die 7 nicht für alle Zeichen. Ich habe es auch schon mit 2000 versucht, aber dann werden die Wörter garnicht gefiltert :(

und weiter?
26.08.2015 15:02:14
Rudi
was soll mir das sagen?

AW: und weiter?
26.08.2015 15:04:13
braun
Left(Sheets(1).Cells(i, Spalte), 7))
Steht die 7 nicht für die Zeichenanzahl?

Anzeige
AW: und weiter?
26.08.2015 15:06:30
Rudi
ja, steht sie.
Ich verstehe nur noch immer nicht, was es mit den 'bestimmten Wortteilen' auf sich hat.

AW: und weiter?
26.08.2015 15:13:27
braun
Es handelt sich um verschiedene Orte, nach denen ich suchen muss. In der Liste sind aber oft viele Schreibfehler, bzw verschiedene Schreibweisen der Orte, deswegen sind die Zeichen unterschiedlich lang.
Es klappt ja auch super, außer dass eben die Zeile in VBA zu lange ist und ich nicht weiter machen kann :(

AW: zu viele Zeichen in VBA-Zeilenumbruch im Makrocode
26.08.2015 14:04:37
Daniel
Hi
einen "Zeilenumbruch" in einer VBA-Zeile kann man mit "Leerzeichen + Unterstrich" in der oberen Zeile hinzufügen.
Allerdings auch dann ist die maximale Anzahl der Zeichen in der Befehlszeile beschränkt.
ist hier aber nicht notewendig.
Sammle die erlaubten Zeichenfolgen in einem gesamtstring und überprüfe dann mit Instr, ob der Zellwert im Gesamtstring enthalten ist.
dim xxx as string
xxx = "|ABCDEFG|BCDEFGH|CDEFGHI|...."
'hier kannst du weitere Zeichenfolgen einfach hinzufügen:
xxx = xxx & "|AAA AAA|AAA KKK|BB BBBB|"
IF Instr(xxx, Left(Sheets(1).Cells(i, Spalte), 7)) > 0 Then
Gruß Daniel

Anzeige
AW: zu viele Zeichen in VBA-Zeilenumbruch im Makrocode
26.08.2015 14:42:34
braun
Dankeschön!Hier ist allerdings auch das Problem, dass die Wörter auch mehr als sieben Zeichen haben können.

AW: zu viele Zeichen in VBA-Zeilenumbruch im Makrocode
26.08.2015 14:42:35
braun
Dankeschön!Hier ist allerdings auch das Problem, dass die Wörter auch mehr als sieben Zeichen haben können.

AW: zu viele Zeichen in VBA-Zeilenumbruch im Makrocode
26.08.2015 15:02:11
Daniel
Hi
auch das geht einfach:
sammle immer alle gleichlangen erlaubten Textteile in einenm Textstring (jeweils mit Trennzeichen)
xxx7 = "|aaaaaaa|bbbbbbb|ccccccc|"
xxx8 = "|aaaaaaaa|bbbbbbbb|cccccccc|"
usw
und prüfe diese dann mit OR verkettet:

If Instr(xxx7, "|" & Left(..., 7) & "|") > 0 or Instr(xxx8, "|" & Left(..., 8) & "|") > 0  or ... Then
wenn das immer noch zu lang wird, kannst du die Prüfung auch so in mehrere Zeilen verteilen:
dim chk as long
xxx7 = "...."
xxx8 = "...."
xxx9 = "...."
usw
chk = Instr(xxx7, "|" & left(..., 7) & "|")
chk = chk + Instr(xxx8, "|" & left(..., 8) & "|")
chk = chk + Instr(xxx9, "|" & left(..., 9) & "|")
if chk > 0 Then 

Gruß Daniel

Anzeige
AW: zu viele Zeichen in VBA-Zeilenumbruch im Makrocode
26.08.2015 15:11:54
Daniel
Hi noch ne Methode
dim xxx(1 to 10) ' hier als Wert soviele Wortfetzen eintragen, wie benötigt
dim x as long
xxx(1) = "ABCDEFG"
xxx(2) = "BCDEFGH"
xxx(3) = "CDEFGHI"
' usw bis alle befüllt sind
for x = 1 to Ubound(xxx)
if Sheets(1).Cells(i, Spalte).Value Like xxx(x) & "*" then exit for
Next
if x 
damit ist es dann egal, wie lang die Begriffe sind und wieviele du hast.
die Schleife prüft alle Begriffe durch und bricht die Schleife vorzeit ab, wenn der Zellwert mit einem Begriff übereinstimmt (durch den Stern mit der Prüfung: beginnt mit)
das folgende If prüft dann, ob die Schleife vollständig durchlaufen oder vorzeigt abgebrochen wurde (das kann man feststellen, in dem man den Schleifenzähler mit dem Schleifenendwert vergleicht)
Gruß Daniel

Anzeige
AW: zu viele Zeichen in VBA-Zeilenumbruch im Makrocode
26.08.2015 15:18:37
braun
Hallo :)
Danke ich habe es mal versucht. Jetzt markiert es mir diese Zeile:
If Sheets(1).Cells(i, Spalte).Value Like xxx(x) & "*" Then

AW: zu viele Zeichen in VBA-Zeilenumbruch im Makrocode
26.08.2015 15:26:05
Daniel
die Zeile ist prinzipell richtig
eine mögliche Fehlerursache könnte sein, dass du inzwischen ein Diagramm in deine Datei eingefügt hast und daher das Sheet(1) kein Tabellenblatt mehr ist sondern ein Diagramm-Blatt.
Das hat natürlich keine Zellen und daher dann der Fehler.
es gibt natürlich noch viele andere Fehlermöglichkeiten, die alle aufzuzählen aber hier zuweit führen würde.
Gruß Daniel

AW: zu viele Zeichen in VBA-Zeilenumbruch im Makrocode
26.08.2015 15:37:52
braun

Sub WV()
Application.ScreenUpdating = False
Sheets(1).Select
Sheets.Add After:=Sheets(1)
Sheets(2).Name = "TEST1"
Sheets(1).Select
Rows("1:1").Select
Selection.Copy
Sheets(2).Select
Range("A1").Select
ActiveSheet.Paste
Sheets(1).Select
'Startzeile
startzeile = 2
'Spalte die geprüft wird
Spalte = 13
startzeile2 = 2
Sheets(1).Select
Letzte_Zeile = Range(Cells(65536, Spalte), Cells(65536, Spalte)).End(xlUp).Row
Dim xxx(1 To 10) ' hier als Wert soviele Wortfetzen eintragen, wie benötigt
Dim x As Long
xxx(1) = "ABCDEFG"
xxx(2) = "BCDEFGH"
xxx(3) = "CDEFGHI"
' usw bis alle befüllt sind
For x = 1 To UBound(xxx)
If Sheets(1).Cells(i, Spalte).Value Like xxx(x) & "*" Then Exit For
Next
If x 

so habe ich es momentan stehen.. zuerst habe ich die Startzeile und Spalte etc. festgelegt und danach dim
Oder muss ich die Zeile und Spalte anders einbauen?
Viele Grüße

Anzeige
AW: zu viele Zeichen in VBA-Zeilenumbruch im Makrocode
26.08.2015 15:47:20
Daniel
Hi
da fehlt ja auch die Schleife über die Zellen:
For i = startzeile To Letzte_Zeile
gruß Daniel

AW: zu viele Zeichen in VBA-Zeilenumbruch im Makrocode
26.08.2015 15:59:25
braun
jetzt haut es hin, super danke :)

AW: zu viele Zeichen in VBA-Zeilenumbruch im Makrocode
26.08.2015 16:05:33
Daniel
Ja, dann ist ja alles gut.
btw, der Haken wird gesetzt, wenn die Frage noch nicht beantwortetet ist.
Gruß Daniel

324 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige