Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Zellensprung

Betrifft: Zellensprung von: Bob
Geschrieben am: 23.01.2020 22:00:27



Hallo ich würde gerne die Community um Hilfe bitten.
Es geht um eine kleine Arbeitsverbesserung.
Das Makro soll per Button aktivierbar / deaktivierbar sein.
Es gibt bereits eine Arbeitsmappe mit 12 Tabellenblättern, in denen werden die Daten per Barcodescanner erfasst.
Jedes Tabellenblatt ist identisch (Januar bis Dezember).
Die Datenerfassung in den Zellen soll wie folgt funktionieren:
Schritte
1) "E5" - eingabe+Enter (gültig für Zellenbereich "E5:E999")
2) "F5" - eingabe+Enter (gültig für Zellenbereich "F5:F999")
3) "G5" - eingabe+Enter (gültig für Zellenbereich "G5:G999")
4) "H5" - eingabe+Enter (gültig für Zellenbereich "G5:G999")
5) - Zellensprung (Makro abhängig) entweder in "K5" oder "E6"
Makro
1)
nach Enter in der Zeile "H5" greift die
Bedingung 1 wenn
"G5=1"
dann nach Enter Sprung in
"K5" (gültig für Zellenbereich "K5:K999")
und nach Enter in "K5" Sprung in
"N5" (gültig für Zellenbereich "N5:N999")
und nach Enter Sprung in der nächsten freien Zelle im Bereich
"E5:E999"
Diese Prozedur immer wieder ausführen, wenn in der Spalte
"G" eine "1" eingetragen wird."
2)
Bedingung 2 wenn
"G5=0"
dann nach der Eingabe im
"H5"
Sprung in der nächsten freien Zelle im Bereich
"E5:E999" .
Noch eine Dritte Sache,
der per Barcodescanner erfasste Barcode z.B. „1234-4455“,
ergibt immer folgendes Ergebnis: „1234ß4455“.
Die Zeichen „-„ werden momentan durch „ß“ ersetzt.
Lässt sich diese Darstellung ebenfalls in Makro ändern?
Ich hoffe, dass diese Erklärung verständlich ist.
Vielen Dank für die Unterstützung
Mfg
Bob

Betrifft: AW: Zellensprung
von: Bernd
Geschrieben am: 24.01.2020 08:26:54

Servus Bob,

so in der Art:
https://www.herber.de/bbs/user/134658.xlsm

Grüße, Bernd

Betrifft: AW: Zellensprung
von: Bob
Geschrieben am: 24.01.2020 18:15:33

Hallo Danke erstmal für den Versuch allerding funktioniert es bei mir nicht.
Ich habe ein paar kommentare eingefügt wie das funktionieren soll.
Danke

Betrifft: AW: Zellensprung
von: Bob
Geschrieben am: 24.01.2020 18:20:30

Hier die Datei:

https://www.herber.de/bbs/user/134676.xlsm

Danke

Betrifft: AW: Zellensprung
von: Bob
Geschrieben am: 26.01.2020 14:34:48

Hallo ich habe immer noch Hoffnung dass jemand mir helfen kann.
https://www.herber.de/bbs/user/134676.xlsm
Bitte
MfG
Bob

Betrifft: AW: Zellensprung
von: Bernd
Geschrieben am: 27.01.2020 08:18:07

Servus Bob,

versuche es mal so:
Private Sub Worksheet_Change(ByVal Target As Range)
If Aktiv = True Then
    If Target.Address = "$E$5" And Range("E5").Value <> "" Then
        If Target.Value = 0 Or Target.Value = 1 Then
            Range("D5").Value = Date
        End If
        Range("F5").Select
        Exit Sub
    End If
    If Target.Address = "$F$5" And Target.Value <> "" Then
        Range("G5").Select
        Exit Sub
    End If
    If Target.Address = "$G$5" And Target.Value <> "" Then
        Range("H5").Select
        Exit Sub
    End If
    If Target.Address = "$H$5" And Target.Value <> "" Then
        Select Case Range("G5").Value
        Case Is = 1
            Range("K5").Select
        Case Is = 0
            Range("E" & Cells(Rows.Count, "E").End(xlUp).Row + 1).Select
        Case Else
            MsgBox "Wert ausserhalb der erwarteten Grenzen"
        End Select
    End If
    If Target.Address = "$K$5" And Target.Value <> "" Then
        Range("L5").Select
        Exit Sub
    End If
    If Target.Address = "$L$5" And Target.Value <> "" Then
        Range("M5").Select
        Exit Sub
    End If
    If Target.Address = "$M$5" And Target.Value <> "" Then
        Range("N5").Select
        Exit Sub
    End If
    If Target.Address = "$N$5" Then Range("E" & Cells(Rows.Count, "E").End(xlUp).Row + 1). _
Select
End If
End Sub
Der Code setzt jedoch immer die Eingabe in Zeile 5 voraus.
Wenn es immer die letzte Zeile sein soll, dann musst du immer zuerst die letzte Zeile ermitteln und diese dann anstelle der "5" im Code verwenden.

Grüße, Bernd

Betrifft: AW: Zellensprung
von: Bernd
Geschrieben am: 27.01.2020 08:27:55

Servus Bob,

gleich noch mit immer der letzten Zeile:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Dim intLZ As Long
If Aktiv = True Then
    intLZ = Cells(Rows.Count, "E").End(xlUp).Row
    If Target.Address = "$E$" & intLZ And Target.Value <> "" Then
        If Target.Value = 0 Or Target.Value = 1 Then
            Range("D" & intLZ).Value = Date
        End If
        Range("F" & intLZ).Select
        Exit Sub
    End If
    If Target.Address = "$F$" & intLZ And Target.Value <> "" Then
        Range("G" & intLZ).Select
        Exit Sub
    End If
    If Target.Address = "$G$" & intLZ And Target.Value <> "" Then
        Range("H" & intLZ).Select
        Exit Sub
    End If
    If Target.Address = "$H$" & intLZ And Target.Value <> "" Then
        Select Case Range("G" & intLZ).Value
        Case Is = 1
            Range("K" & intLZ).Select
        Case Is = 0
            Range("E" & Cells(Rows.Count, "E").End(xlUp).Row + 1).Select
        Case Else
            MsgBox "Wert ausserhalb der erwarteten Grenzen"
        End Select
    End If
    If Target.Address = "$K$" & intLZ And Target.Value <> "" Then
        Range("L" & intLZ).Select
        Exit Sub
    End If
    If Target.Address = "$L$" & intLZ And Target.Value <> "" Then
        Range("M" & intLZ).Select
        Exit Sub
    End If
    If Target.Address = "$M$" & intLZ And Target.Value <> "" Then
        Range("N" & intLZ).Select
        Exit Sub
    End If
    If Target.Address = "$N$" & intLZ Then Range("E" & Cells(Rows.Count, "E").End(xlUp).Row + 1) _
.Select
End If
End Sub
Grüße, Bernd

Betrifft: AW: Zellensprung
von: Piet
Geschrieben am: 26.01.2020 19:00:53

Hallo Bob - für Hajo - dieser Thread war vorm Frager Offengestellt!!

ich bin mir nicht sicher ob ich die Aufgabe richtig verstanden habe? Wenn ja sollte der Zellsprung in jeder aktuellen Zelle erfolgen. Richtig?? Probier es bitte mal so.

mfg Piet
Private Sub Worksheet_Change(ByVal Target As Range)
Dim TZei As Long, lz1 As Long   'Target Zeile, LastZell
If Target.Count > 1 Then Exit Sub   'Kein Mehrfachbereich!
If Target.Value = "" Then Exit Sub  'Eingabe wurde gelöscht

If Aktiv = True Then
    TZei = Target.Row   'aktuelle Target Zeile
    lz1 = Cells(Rows.Count, "E").End(xlUp).Row + 1 ^ LastZell
    If Target.Address = "$H$" & TZei Then
        Select Case Range("G" & TZei).Value  'Range("G5").Value
        Case Is = 1
            Range("K" & TZei).Select
        Case Is = 0
            Range("E" & lz1).Select
        Case Else
            MsgBox "Wert ausserhalb der erwarteten Grenzen"
        End Select
    End If
    If Target.Address = "$K$" & TZei Then Range("N" & TZei).Select
    If Target.Address = "$N$" & TZei Then Range("E" & lz1).Select
End If
End Sub