Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1576to1580
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
Inhaltsverzeichnis

Eingabezelle Zahl automatisch ersetzen VBA ?

Eingabezelle Zahl automatisch ersetzen VBA ?
08.09.2017 13:58:43
Erik
Hallo zusammen
ich habe eine Tabelle in der in Spalte E - Teilenummern eingegeben werden.
Jetzt soll in dieser Spalte überprüft werden ob es eine Teilenummerersetzung gibt.
Sprich: in Spalte E10 wird zb. die Zahl 5023844 eingegeben.
Dann soll sobald mit Enter oder Tab bestätigt wird diese Zahl in die neue ersetzte Zahl umspringen.
Die Ersetzungskette für 5023844 ist: 5023844 > 1047035 > 1209799 > 1222116 > 1336797 > 1931955
In diesem Fall sollte 1931955 angezeigt werden.
Ich hab es mit der Auto Korrektur versucht. Allerdings wird dann immer nur in die nächste Zahl ersetzt und nicht in das Ende der Ersetzungskette.
Geht so was vielleicht über VBA, und einem Verweis in eine andere Ersetzungstabelle ?
Vielen Dank
und Gruß
Erik

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

Betreff
Datum
Anwender
Anzeige
AW: Eingabezelle Zahl automatisch ersetzen VBA ?
08.09.2017 14:11:31
UweD
Hallo Eric
Wo / Wie hast du denn die Ersetzungskette abgelegt?
Musterdatei?
AW: Eingabezelle Zahl automatisch ersetzen VBA ?
08.09.2017 15:10:08
UweD
Hallo
folgender Aufbau wurde angenommen:

Tabelle2
 ABCDEFGH
1Ursprung123456 
25023844502384410470351209799122211613367971931955 
347114712      
4815816817     
5        


Tabelle1
 ABCDEF
1    Überschrift 
2    4712 
3    4712 
4    817 
5      
6      
http://excel-inn.de/dateien/vba_beispiele/tabellenanzeige_in_html_addin.zip
http://Hajo-Excel.de/tools.htm
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 21.10 einschl. 64 Bit


das ginge so...
- Rechtsclick auf den Tabellenblattreiter
- Code anzeigen
- Diesen Code dort reinkopieren
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Fehler
    Dim TB, LC As Integer, Z, Zeile As Double
    
    Set TB = Sheets("Tabelle2")
    
    If Not Intersect(Range("E:E"), Target) Is Nothing Then
        If Target.Row <= 1 Then Exit Sub 'wegen Überschrift 
        For Each Z In Target
            If Z <> "" Then
                With TB
                    If WorksheetFunction.CountIf(.Columns(1), Z) > 0 Then
                        Zeile = WorksheetFunction.Match(Z, .Columns(1), 0)
                        LC = .Cells(Zeile, .Columns.Count).End(xlToLeft).Column 'letzte Spalte einer Zeile 
                        
                        Application.EnableEvents = False
                        Z.Value = .Cells(Zeile, LC)
                        MsgBox "Folgenummer wurde eingesetzt"
                        Application.EnableEvents = True
                    End If
                End With
            End If
        Next
    End If
    
    '*** Fehlerbehandlung 
    Err.Clear
Fehler:
    Application.EnableEvents = True
    If Err.Number <> 0 Then MsgBox "Fehler: " & _
        Err.Number & vbLf & Err.Description: Err.Clear
End Sub
Gruß UweD
Über Rückmeldungen würde ich mich freuen
Anzeige
AW: Eingabezelle Zahl automatisch ersetzen VBA ?
08.09.2017 14:43:45
Peter(silie)
Hallo,
ich verstehe die Kette nicht.
Wird die Zahl beim ersten mal jetzt 1047035 und beim nächsten eingeben dann 1209799,
oder werden alle diese Zahlen zu 1931955
AW: Eingabezelle Zahl automatisch ersetzen VBA ?
08.09.2017 15:46:00
Erik
Hallo Uwe, hallo Peter(silie) !
Es funktioniert schon im Ansatz.
Allerdings ist das genau was Peter gefragt hat, das Problem.
solbald eine der "alten" Nummern eingegeben wird soll immer die neuest "1931955" ausgegeben werden.
Das funktioniert im Beispiel von Uwe noch nicht.
Es funktioniert nur bei der Ursprungsnummer.
Vielen Dank
Erik
So vielleicht?
08.09.2017 15:52:54
Peter(silie)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim newNumber As String: newNumber = "1931955"
Select Case Target.Text
Case "5023844":
Target.Value = newNumber
Case "1047035":
Target.Value = newNumber
Case "1209799":
Target.Value = newNumber
Case "1222116":
Target.Value = newNumber
Case "1336797":
Target.Value = newNumber
End Select
End Sub
Gilt das ganze nur für einen bestimmten Bereich, muss dieser Definiert werden.
Melde dich wenn es nicht dass ist was du brauchst, oder es nur in einem Bestimmten Bereich gilt.
Anzeige
AW: Eingabezelle Zahl automatisch ersetzen VBA ?
08.09.2017 16:03:13
UweD
Ok.
dann so
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Fehler
    Dim TB, LC As Integer, C As Range, Z
    
    Set TB = Sheets("Tabelle2")
    
    If Not Intersect(Range("E:E"), Target) Is Nothing Then
        If Target.Row <= 1 Then Exit Sub 'wegen Überschrift 
        For Each Z In Target
            If Z <> "" Then
                With TB
                    Set C = .UsedRange.Find(Z, LookIn:=xlValues)
                    If Not C Is Nothing Then
                        LC = .Cells(C.Row, .Columns.Count).End(xlToLeft).Column
                        If C.Column < LC Then
                            Application.EnableEvents = False
                            Z.Value = .Cells(C.Row, LC)
                            MsgBox "Folgenummer wurde eingesetzt"
                            Application.EnableEvents = True
                        End If
                    End If
                End With
            End If
        Next
    End If
    
    '*** Fehlerbehandlung 
    Err.Clear
Fehler:
    Application.EnableEvents = True
    If Err.Number <> 0 Then MsgBox "Fehler: " & _
        Err.Number & vbLf & Err.Description: Err.Clear
End Sub

LG UweD
Anzeige
AW: Eingabezelle Zahl automatisch ersetzen VBA ?
08.09.2017 16:11:05
Erik
Hallo Uwe,
genau das, was ich gesucht habe. DANKESCHÖN.
Auch an Peter(silie) übrigens genialer Name :-)
Vielen Dank für Deine Hilfestellung.
Gruß
Erik
AW: gern geschehen owt
08.09.2017 16:19:05
UweD

317 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige