HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Spalten und Zeichen per VBA löschen?

Spalten und Zeichen per VBA löschen?
11.04.2005 19:23:55
Selma
Hallo Leute,
ich würde gern per Makro folgendes erreichen:
1. Spalte B, C, D und H sollen gelöscht werden...
2. in Spalte G sollen von rechts gesehen 7 Zeichen des Zellinhaltes gelöscht werden
Wie mache ich das?
Danke im Voraus....
Liebe Grüße
SELMA

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Benutzer
AW: Spalten und Zeichen per VBA löschen?
11.04.2005 20:00:50
ransi
hallo selma
zu1)
löschen geht z.B. so:
Public

Sub t()
Range("B:B,C:C,D:D,H:H").Delete
End Sub

zu2)
jetzt ist spalte G aber spslte D.
aus welcher zelle willst du jetzt die 7 zeichen löschen?
ransi
AW: Spalten und Zeichen per VBA löschen?
11.04.2005 20:11:41
Selma
Hallo ransi,
danke zu 1)
zu2)
Ich will bei allen Zellen in "jetzt" Spalte D die 7 Zeichen (von rechts gesehen) löschen.
Gruß
SELMA
"jetzt" hat aber nur 5 zeichen !! Und nu..?
11.04.2005 20:20:09
ransi
hallo
"Ich will bei allen Zellen in "jetzt" Spalte D die 7 Zeichen (von rechts gesehen) löschen"
jetzt hat aber nur 5 zeichen.
ist das ein benannter bereich ?
steht da die formel =jetzt() ?
oder wie oder was...?
ransi
Format ändern ?
11.04.2005 21:24:17
ransi
hallo selma
Public

Sub r()
Dim zelle As Range
For Each zelle In Range("D:D").SpecialCells(xlCellTypeFormulas)
If InStr(1, zelle.FormulaLocal, "=JETZT()") > 0 Then zelle.NumberFormat = "dd/mm/yy"
Next
End Sub

ransi
AW: Spalten und Zeichen per VBA löschen?
11.04.2005 20:19:29
Luc
Hallo Selma,
das müsste sich doch wunderbar mit dem Makrorecorder aufzeichnen lassen, zumindest was die gelöschten Spalten betrifft. Für Spalte G brauchst du dann eine einfache While-Schleife:

i=1
with Range("G:G")
while len(.cells(i).value)>6
.cells(i).value=left(.cells(i).value,len(.cells(i).value)-7)
i=i+1
wend
end with 

Voraussetzung ist hierbei, dass alle Zellinhalte mindestens 7 Zeichen lang sind. Bei der ersten Zelle mit kürzerem Inhalt (oder leer) wird die Abarbeitung beendet, weil sonst die Kürzung zu einem Fehler führen würde. Wenn solche und auch leere Zellen zwischendurch auftreten können, muss stattdessen eine For-Schleife gewählt wdn und nach der letzten belegten Zelle beendet wdn. Zellen mit kürzerem Inhalt müssen innerhalb der Schleife per If-Verzweigung übergangen wdn.
Gruß Luc :-?
AW: Spalten und Zeichen per VBA löschen?
11.04.2005 20:47:42
Selma
@ransi
da steht z.B. 25.02.2005 13:50:00
es soll nur dies bleiben 25.02.2005
@Luc
genau wenn eine Leerzelle auftritt, dann wird das Makro nicht weiter ausgeführt. :-)
Code:

Sub DEL()
Range("B:B,C:C,D:D,H:H").Delete
i = 1
With Range("D:D")
While Len(.Cells(i).Value) > 6
.Cells(i).Value = Left(.Cells(i).Value, Len(.Cells(i).Value) - 9)
i = i + 1
Wend
End With
End Sub

Was muss ich noch ändern, damit das Makro korrekt ausgeführt wird ?
Leere Zellen in Spalte D sollen ignoriert werden.
Danke nochmals....
SELMA
AW: Hatte ich bereits angedeutet,...
11.04.2005 21:08:01
Luc
Selma,

with Range("G1:G...")         'für ... die letzte Zeile einsetzen
for i=1 to .cells.count
if len(.cells(i).value)>6
.cells(i).value=left(.cells(i).value,len(.cells(i).value)-7)
end if
next i
end with 

Wenn die Zeilenzahl variieren kann, muss zuvor die Länge des Bereichs in Zeilen ermittelt wdn. Dazu findest du dann bestimmt was in der Archivrecherche.
Ciao Luc :-?
AW: Hatte ich bereits angedeutet,...
11.04.2005 21:22:03
Selma
Danke Luc !
Gruß
SELMA

Meistgelesene Forumthreads (12 Monate)