PDA

Vollständige Version anzeigen : Wie 0 mit 0 ersetzen per VBA


schwaelbchen
09.07.2015, 07:06
Guten Morgen zusammen,

ich möchte per Button im Zellbereich A4:A628 voranstehende NULLEN "löschen", da diese aus dem SAP kommen.
Dies erreiche ich zumindest manuell wenn man diesen Zellbereich markiert, die Funktion "Ersetzen" nutzt und dort jeweis bei "Suchen nach" und "Ersetzen durch" eine 0 eingibt.

Wie kann ich das nun in einem VBA-Script für einen Button einrichten ?

Danke für Deine Antwort im Voraus.
Jens

Beverly
09.07.2015, 07:10
Hi Jens,

der einfachste Weg: zeichne dein Vorgehen, wie du es beschrieben hast, mit dem Makrorekorder auf.

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

RPP63neu
09.07.2015, 07:27
Hallo!
Eine Alternative wäre Text in Spalten und Zuweisung eines Zahlenformats.
Als Makro:
Sub WegDamit()
Columns(1).TextToColumns
Columns(1).NumberFormat = "0"
End Sub
Gruß Ralf

schwaelbchen
09.07.2015, 08:28
Das mit dem Macro-Recorder war eine sehr gute Idee !

Das kam bei mir dabei raus und funktioniert bestens:

Private Sub CommandButton1_Click()
Range("A4:A628").Select
Selection.Replace What:="0", Replacement:="0", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub

Beverly
09.07.2015, 08:43
Noch ein Tipp: der Makrorekorder zeichnet jeden Schritt auf (dazu ist er ja auch da), dabei aber auch Dinge, die man für die Code-Ausführung eigentlich nicht benötigt - so z.B. Select, also das Markieren von Zellen. Dein Code lässt sich also noch etwas verfeinern, macht aber genau dasselbe:

Private Sub CommandButton1_Click()
Range("A4:A628").Replace What:="0", Replacement:="0", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub


Die Aktionen Select (und Activate) kosten Zeit. Das ist bei diesem kurzen Code logischerweise nicht spürbar, bei umfangreichen Codes dagegen beeinträcht es die Performance schon wesentlich. Deshalb aufgezeichneten Code am besten noch einmal nachbearbeiten und diese Aktionen ausmerzen.

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>