Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1916to1920
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

Macro ausführung String länge

Macro ausführung String länge
26.01.2023 23:49:56
Patrick
Guten tag
Ich habe auf der Arbeit ein Macro um Data Matrix Codes zu Scannen das mir diese dann in einer Formatierten Form ausgibt um sie leichter zu lesen.
Leider haben wir für verschiedene Kunden verschieden lange Codes, und ich wollte fragen ob jemand weis wie ich die ausführung des jeweiligen Macros von der String länge abhängig machen kann ?
In etwa wie  ---  if ( activ cell row ? ) Len(49) then ---- zb
Hier noch das Macro das wir benutzen. Hoffe jemand kann mir helfen. Freundliche Grüße Patrick
Sub Worksheet_Change
    Dim KeyCells As Range
    Set KeyCells = Range("b2:b100000")
    If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
        Zeile = ActiveCell.Row
        Spalte = ActiveCell.Column
        ActiveSheet.Unprotect Password:="xxxxx"
        Scan = Cells(Zeile, 2).Value
        Application.EnableEvents = False
        If Left(Scan, 1) > "]" Then
            Cells(Zeile, 2).Value = ""
        Else
            If Left(Scan, 1) = "]" Then
                Strz0 = Left(Scan, 3) & "  "
                Scan = Mid(Scan, 4, 200)
            Else
                Strz0 = "     "
            End If
            Strz1 = Mid(Scan, 1, 2) & "  "
            Gtin = Mid(Scan, 3, 14) & "  "
            Strz2 = Mid(Scan, 17, 2) & "  "
            Standort = Mid(Scan, 19, 3) & " "
            Seri = Mid(Scan, 22, 10) & " "
            Strz4 = Mid(Scan, 32, 2) & " "
            Verfall = Mid(Scan, 34, 6) & " "
            Strz5 = Mid(Scan, 40, 2) & " "
            Batch = Mid(Scan, 42, 8) & " "
            Strz6 = Mid(Scan, 50, 3) & " "
            PortLaenderCode = Mid(Scan, 53, 200)
            
            
            
            Cells(Zeile, 2).Value = Strz0 & Strz1 & Gtin & Strz2 & Standort & Seri & Strz4 & Verfall & Strz5 & Batch & Strz6 & PortLaenderCode
            
            
            
            
            Cells(Zeile, 3).FormulaR1C1 = "=IF(ISERROR(TEXT(RC[-2]-R[-1]C[-2],""[hh]:mm"")),"""",TEXT(RC[-2]-R[-1]C[-2],""[hh]:mm""))"
            Cells(Zeile, 1).Value = Now()
            Cells(Zeile, 2).Locked = True
            Cells(Zeile + 1, 2).Locked = False
        End If
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="xxxxxx"
        Application.EnableEvents = True
        ActiveWorkbook.Save
    End If
End Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Macro ausführung String länge
27.01.2023 00:08:50
onur
z.B. so:
Select Case Len(Target)
Case 20  
   'Dein Code für Länge=20
Case 30   
    'Dein Code für Länge=30
Case 40   
    'Dein Code für Länge=40
Case Else 
    'Dein Code für andere Länge
End Select

AW: Macro ausführung String länge
27.01.2023 02:42:58
Patrick
Hi danke erstmal für die schnelle Antwort. Leider weis ich nicht wo ich deinen Code einfügen müsste habe ein wenig rum Probiert bekomme aber immer nur einen syntaxfehler.
AW: Macro ausführung String länge
27.01.2023 02:48:42
onur
Woher soll ICH denn wissen, was der Code wann machen soll?
Aber offensichtlich willst du mir nur damit sagen, dass du absolut keine Ahnung hast, was euer Code macht oder bedeutet.
Anzeige
AW: Macro ausführung String länge
27.01.2023 03:00:14
Patrick
Ich weiß was der Code machen soll. Ich scanne einen Code mit einem Handscanner ein, dann wird vom Code geguckt anhand des ersten Zeichens im String ob der Scan valide ist, wenn das zutrifft wird der String in Segmente mit Hilfe von Leerstellen aufgeteilt so das die relevanten Daten zum überprüfen voneinander getrennt sind. Und in einer extra Zeile wird die Aktuelle zeit mit Datum eingetragen.
Sieht dann in der Zelle so aus ( vorher xxxxxxxxxxx / nacher xxxx xxxxxxx xx xx )
Ich würde halt gern den Code mehrmals mit unterschiedlichen Aufteilungen einfügen und durch eine vorgeschaltete längenabfrage des Strings entscheiden lassen welchen der Codes er benutzt.
Anzeige
AW: Macro ausführung String länge
27.01.2023 03:11:48
onur
"wie ich die ausführung des jeweiligen Macros von der String länge abhängig machen kann " - Und genau das habe ich dir gepostet. Du magst zwar wissen, was euer Code machen soll, aber offenbar nicht, was er genau macht, denn sonst würde dir meine Antwort völlig ausreichen.
Da ich aber deine Datei nicht kenne und null Ahnung habe, was dein Code jeweils bei einer Stringlänge von x, y oder z machen soll, kann ich dir nicht helfen.
AW: Macro ausführung String länge
27.01.2023 07:24:44
ralf_b
und was ist nun das Problem? Etwa die Umsetzung vom onurs Vorschlag?
hier hast du einen Versuch. Schau ob passt, an sonsten kannst du es ja anpassen.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 2 Then
       Application.EnableEvents = False
       ActiveSheet.Unprotect Password:="xxxxxx"
       
       If Left(Target.Value, 1) = "]" Then
        
        Target.Offset(0, -1).Value = Now()
        Target = Scanteilen(CStr(Target.Value))
        Target.Offset(0, 1).FormulaR1C1 = "=IF(ISERROR(TEXT(RC[-2]-R[-1]C[-2],""[hh]:mm"")),"""",TEXT(RC[-2]-R[-1]C[-2],""[hh]:mm""))"
        Target.Locked = True
        Target.Offset(1, 0).Locked = False
       Else
         Target.Locked = False
         Target.Value = ""
         Target.Select
       End If
       
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="xxxxxx"
        
        ThisWorkbook.Save
    End If
End Sub
Function Scanteilen(ByVal Scan As String) As String
   
   Select Case Len(Scan)
      
     Case 70
            Strz0 = Left(Scan, 3) & "  "
            Scan = Mid(Scan, 4, 200)
            
            Strz1 = Mid(Scan, 1, 2) & "  "
            Gtin = Mid(Scan, 3, 14) & "  "
            Strz2 = Mid(Scan, 17, 2) & "  "
            Standort = Mid(Scan, 19, 3) & " "
            Seri = Mid(Scan, 22, 10) & " "
            Strz4 = Mid(Scan, 32, 2) & " "
            Verfall = Mid(Scan, 34, 6) & " "
            Strz5 = Mid(Scan, 40, 2) & " "
            Batch = Mid(Scan, 42, 8) & " "
            Strz6 = Mid(Scan, 50, 3) & " "
            PortLaenderCode = Mid(Scan, 53, 200)
      Case 40
        
     Case Else
    End Select
       
    Scanteilen = Strz0 & Strz1 & Gtin & Strz2 & Standort & Seri & Strz4 & Verfall & Strz5 & Batch & Strz6 & PortLaenderCode
            
End Function

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige