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

letzte Zeile wieder löschen

letzte Zeile wieder löschen
04.04.2005 12:02:35
Jörg
Hallo,
vielleicht kann uns jemand helfen:
Es werden Daten in eine Tabelle importiert. Nun kommt es vor, dass in einer Zelle die Zahl der Zeichen bei den importierten Daten über die Spaltenbreite hinausgehen kann. Die Zeichen, die in der Zelle zuviel sind, müssen in die Zelle darunter eingesetzt werden und dafür muss eine neue Zeile eingesetzt werden. Dafür schrieben wir ein Makro:
Dim länge As String
Dim t As Integer

Sub test()
t = 16
n = 255
For Each C In Worksheets(1).Range("C16:C18")
länge = C.Text
länge4 = Left(länge, 30)
If länge4 > "" Then
erste = Left(länge, 30)            'ersten 30 Buchstaben
rest = Mid(länge, 31, n)          'alles ab 31
Range("C" & CInt(t) & "").Select
ActiveCell.Value = erste
Rows(ActiveCell.Row + 1).Insert Shift:=xlDown
Range("C" & CInt(t + 1) & "").Select
ActiveCell.Value = rest
End If
t = t + 1
Next C
End Sub

Bei diesem Makro wird jetzt aber eine leere Zeile zuviel eingefügt. Wie bekommen wir die wieder weg?
Vielen Dank schon mal für die Hilfe.

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: letzte Zeile wieder löschen
04.04.2005 13:33:28
Ceyser
Hi,
ich habe das ganze mal etwas umgestellt...

Sub test2()
Dim intZeile As Integer
For intZeile = 18 To 16 Step -1
erste = Left(Cells(i, 3), 30)
rest = Mid(Cells(i, 3), 31, 255)
Cells(i, 3) = erste
Cells(i, 3).Offset(1, 0).Insert
Cells(i + 1, 3) = rest
Next i
End Sub

Gruß
CS
AW: letzte Zeile wieder löschen
04.04.2005 14:16:36
Jörg
Hallo Ceyser Soze,
danke, dass du dich unseres Problems annimmst. Ich probierte eben deinen Vorschlag aus. Es kam aber die Fehlermeldung:
Fehler beim Kompilieren:
Ungültiger Verweis auf Next-Steuervariable
wobei das i hinter dem Next blau unterlegt ist. Oder muss ich für das i selbst etwas einsetzen? Ich weiß da nicht weiter.
Gruß
Jörg
Anzeige
AW: letzte Zeile wieder löschen
04.04.2005 14:30:08
Ceyser
...sorry. das funktioniert.
Vorrausgesetzt die Werte stehen in C16-C17.

Sub test2()
Dim i As Integer
Dim erste As String, rest As String
With ActiveSheet
For i = 18 To 16 Step -1
erste = Left(.Cells(i, 3), 30)
rest = Mid(.Cells(i, 3), 31, 255)
.Cells(i, 3) = erste
.Cells(i, 3).Offset(1, 0).Insert
.Cells(i + 1, 3) = rest
Next i
endwith
End Sub

gruss
CS
AW: letzte Zeile wieder löschen
04.04.2005 14:33:19
ceyser
.....aus dem endwith muss end with gemacht werden.
sorry - habe noch kein syntax-tool
AW: letzte Zeile wieder löschen
04.04.2005 14:38:15
Andi
Du hattest in Deinem ersten posting
for intZeile ...
[...]
next i
geschrieben. Damit geht's natürlich nicht...
Schönen Gruß,
Andi
Anzeige
AW: letzte Zeile wieder löschen
04.04.2005 14:38:47
Ceyser
aber jetzt...

      

Sub test2()

Dim i As Integer

Dim erste As String, rest As String

With ActiveSheet

For i = 18 To 16 Step -1

    erste = Left(.Cells(i, 3), 30)

    rest = Mid(.Cells(i, 3), 31, 255)

    .Cells(i, 3) = erste

    .Cells(i, 3).Offset(1, 0).Insert

    .Cells(i + 1, 3) = rest

Next i

End With

End Sub 



Anzeige
AW: letzte Zeile wieder löschen
04.04.2005 15:30:50
Jörg
Hallo,
danke euch. Es funktioniert aber nicht so wie wir uns das wünschen. Führe ich das Makro so aus, wie du es mir zuletzt zuschicktest, dann wird die Zeichenfolge, die nicht in C16 passt, in C17 geschrieben. Dieser Rest ist in unserem Fall wieder länger als 30 Zeichen und der Rest größer 30 müsste wieder in der Zelle darunter (C18) eingesetzt werden. Zusätzlich müsste jeweils eine neue Zeile eingefügt werden, damit die Zellen C17 und C18 nicht einfach überschrieben werden. In dem Makro, das ich zuerst hier reinstellte funktionierte das auch soweit, nur wurde immer eine Zeile (19) zuviel eingefügt. Die möchte ich jetzt mit dem Makro noch wegbekommen.
Vielen Dank schon mal.
Grüße
Jörg
Anzeige
AW: letzte Zeile wieder löschen
04.04.2005 19:40:13
Ceyser
Hi Jörg,
hatte das am Anfang nicht sofort richtig verstanden.
Ich habe meinen code nochmal überarbeitet.


      
Sub string_teilen()
Dim arrStrings(10) As Variant
Dim intZähler As Integer, i%, j%, k%
With ActiveSheet
For i = 18 To 16 Step -1
    original = .Cells(i, 3)
    intZähler = 1
    arrStrings(intZähler) = Left(original, 30)
    
For j = 31 To 255 Step 30
        intZähler = intZähler + 1
        arrStrings(intZähler) = Mid(original, j, 30)
    
Next j
    
For k = (Application.WorksheetFunction.RoundUp((Len(original) / 30), 0)) To 1 Step -1
        .Cells(i, 3).Offset(1, 0).Insert
        .Cells(i + 1, 3) = arrStrings(k)
    
Next k
    .Cells(i, 3).Delete
Next i
End With
End Sub 


Das müsste funktionieren...
Gruß
CS
Anzeige
AW: letzte Zeile wieder löschen
04.04.2005 19:43:37
Ceyser
ich hab deinen code erst nicht verstanden, daher habe ich einen eigenen geschrieben.
aber jetzt habe ich mir deinen nochmal angesehen. eigentlich hat nicht mehr viel gefehlt:


      
Sub test()
t = 16
n = 255
For Each C In Worksheets(1).Range("C16:C18")
    länge = C.Text
    länge4 = Left(länge, 30)
    
    
If länge4 > "" Then
        erste = Left(länge, 30)            
'ersten 30 Buchstaben
        rest = Mid(länge, 31, n)          'alles ab 31
        
        Range("C" & 
CInt(t) & "").Select
        ActiveCell.Value = erste
        
If rest <> "" Then
            Rows(ActiveCell.Row + 1).Insert Shift:=xlDown
            Range("C" & 
CInt(t + 1) & "").Select
            ActiveCell.Value = rest
        
End If
    
End If
    t = t + 1
Next C
End Sub
 


bei mir hats hingehauen...
Anzeige
AW: letzte Zeile wieder löschen
04.04.2005 19:58:46
Ceyser
...probier deinen code mal mit einem string in zeile C18, der 93 zeichen hat oder so...
AW: letzte Zeile wieder löschen
05.04.2005 11:05:01
Jörg
Hallo Ceyser Soze,
vielen, vielen Dank für die Hilfe. Jetzt funktioniert es. Ich konnte gestern ncht mehr daran arbeiten, da ich noch zu einem ganz anderen Problem gerufen wurde.
Weißt du oder jemand anderes noch eine Lösung, wie das Makro selbst alle Zellen in der Tabelle sucht, wo die Zeichenlänge über die Spaltenbreite hinausgeht und dann die restlichen Zeichen so in die Zellen darunter setzt, wie im Makro oben? Bis jetzt muss dem Makro ja noch gesagt werden, in welcher Zelle der Fall auftritt.
Vielen Dank
Grüße
Jörg
Anzeige
AW: letzte Zeile wieder löschen
05.04.2005 12:20:14
Jörg
Hallo Ceyser Soze,
das letzte von mir angesprochene Problem konnte ich selbst lösen. Ich trug einfach bei t=1 ein und
bei Range("C1:C2000")
und nun durchsucht er die Spalte C von Zeile 1 bis 2000.
Vielen, vielen Dank noch mal.
Grüße
Jörg
AW: letzte Zeile wieder löschen
05.04.2005 15:33:56
Ceyser
Hi Jörg,
falld Du Deine eigene Version benutzt, solltest Du unbedingt prüfen, ob Dein Makro auch im letzten Durchlauf, also beim aufteilen der letzten Zeilen, richtig arbeitet. Als ich das getestet habe, ist mir aufgefallen, dass es bei der letzten Zeile nicht mehr komplett aufteilt...
Gruß
CS

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige