2016-07-12 11 views
0

ich verschiedene Beispiele auf verschiedenen Seiten überprüft habe, und ich bin nicht in der Lage, einen Weg zu finden, um automatisch ein Zeichen zu ersetzen (.), Wenn es in einer Zelle in Excel 2013Automatische Charakter Ersatz Excel

Eingabe Was ich will, ist es, ein "." mit nichts oder eher entfernen Sie den Punkt. Es wäre ein Teil von Zahlen, etwa 33.33.2320 und sollte zu 33332320 editiert werden. Behalten Sie auch nachfolgende Nullen oder führende Nullen bei.

Dies würde ich gerne auf eine ganze Spalte wenn möglich in Excel tun. Der Punkt kann entweder manuell eingegeben oder kopiert/eingefügt werden und muss dabei automatisch entfernt werden.

Ich habe versucht, mit Makros, Ersatz usw., aber das scheint eine Aktion zu sein AFTER nicht bei "Laufzeit", wenn Sie wissen, was ich meine.

Die Datenvalidierung stoppt tatsächlich vom eingegebenen Wert und dies ist nicht das, was ich möchte. Wenn ein Punkt manuell eingegeben oder kopiert/eingefügt wird, sollte er einfach entfernt werden.

Dank

+0

Es heißt Suchen/Ersetzen ... das ist nicht wirklich eine Programmierfrage ... – Chrismas007

+0

'Worksheet_Change' Ereignis funktioniert nicht? –

Antwort

1

Sie einen Makro verwenden könnten, die ausgeführt wird, wenn die Worksheet.Change Event auftreten.

Klicken Sie in Excel mit der rechten Maustaste auf die Registerkarte Arbeitsblattname des Arbeitsblatts, das Sie hören möchten, und wählen Sie View Code. Jetzt befinden Sie sich nicht in einem allgemeinen Modul, sondern in einem Arbeitsblattklassenmodul.

Darin, dass Code setzen:

Private Sub Worksheet_Change(ByVal Target As Range) 

If Target.Column = 3 Then 'only column 3 = C 

    For Each oCell In Target 

    If InStr(oCell.Text, ".") <> 0 Then 
    Application.EnableEvents = False 'We change workshheet cells within Worksheet_Change. 
            'So we must disable events to prevent endless loop. 
    oCell.NumberFormat = "@" 
    oCell.Value = Replace(oCell.Value, ".", "") 
    Application.EnableEvents = True 
    End If 

    Next 

End If 

End Sub 

Jetzt in diesem Arbeitsblatt jedes Mal, wenn sich etwas ändert, dann wird der Code. Wenn die Änderung in der Spalte C ist und die Zelle "." Enthält, ist die Ersetzung abgeschlossen.

Um führende Nullen beizubehalten, wurde die Zelle auf nummeriert.

Beachten Sie die Application.EnableEvents = False und Application.EnableEvents = True. Wenn wir Arbeitsblattzellen innerhalb von Worksheet_Change ändern, müssen wir Ereignisse deaktivieren, um eine Endlosschleife zu verhindern. Außerdem müssen wir Ereignisse später aktivieren, da andernfalls ab diesem Zeitpunkt keine Ereignisprozeduren mehr ausgeführt werden.


Es gibt ein Problem mit diesem. Wenn Sie 001.234 eingeben, gehen die führenden Nullen verloren. Dies liegt daran, dass das Änderungsereignis nach Eingang beginnt und dann die Nummer 1.234 bereits ist. Das ist meiner Meinung nach kein Weg. 001.234.567 wird funktionieren, da dies ist nicht angenommen als Zahl aber als Zeichenfolge.


Wenn möglich, könnten Sie die ganze Spalte in Text Zahlenformat eingestellt. Dies wird das Problem lösen. Aber dann ist Zahleneingabe in dieser Spalte nicht mehr möglich.

+0

Haben Sie überprüft, ob führende Nullen vorhanden sind? Eventuell müssen Sie 'Replace ...' in 'Cstr' umbrechen. –

+0

' Replace' gibt bereits eine Zeichenkette zurück. Wenn das Bedürfnis ist, eine Zahl zu bekommen, die niemals führende Nullen haben wird, dann brauchen wir das Zahlenformat "Text". –

+0

Dies scheint nicht zu funktionieren, wenn * 000.000 * eingegeben wurde. –