Spalten und Zeichen per VBA löschen?

Bild

Betrifft: Spalten und Zeichen per VBA löschen? von: Selma
Geschrieben am: 11.04.2005 19:23:55

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

Bild


Betrifft: AW: Spalten und Zeichen per VBA löschen? von: ransi
Geschrieben am: 11.04.2005 20:00:50

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


Bild


Betrifft: AW: Spalten und Zeichen per VBA löschen? von: Selma
Geschrieben am: 11.04.2005 20:11:41

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


Bild


Betrifft: "jetzt" hat aber nur 5 zeichen !! Und nu..? von: ransi
Geschrieben am: 11.04.2005 20:20:09

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


Bild


Betrifft: Format ändern ? von: ransi
Geschrieben am: 11.04.2005 21:24:17

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


Bild


Betrifft: AW: Spalten und Zeichen per VBA löschen? von: Luc
Geschrieben am: 11.04.2005 20:19:29

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 :-?


Bild


Betrifft: AW: Spalten und Zeichen per VBA löschen? von: Selma
Geschrieben am: 11.04.2005 20:47:42

@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


Bild


Betrifft: AW: Hatte ich bereits angedeutet,... von: Luc
Geschrieben am: 11.04.2005 21:08:01

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 :-?


Bild


Betrifft: AW: Hatte ich bereits angedeutet,... von: Selma
Geschrieben am: 11.04.2005 21:22:03

Danke Luc !

Gruß
SELMA


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Spalten und Zeichen per VBA löschen?"