Office: (Office 2016) VBA Code abändern für Barcodes

Helfe beim Thema VBA Code abändern für Barcodes in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo, der Code (aus dem Netz) erstellt mir aus einer Zelle rechts daneben einen Barcode39. Wie muss der Code abgeändert werden, wenn der Code... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von CaMa1511, 22. April 2018.

  1. CaMa1511 Erfahrener User

    VBA Code abändern für Barcodes


    Hallo,

    der Code (aus dem Netz) erstellt mir aus einer Zelle rechts daneben einen Barcode39.
    Wie muss der Code abgeändert werden, wenn der Code darunter ausgegeben werden soll?
    Bitte um Eure Hilfe, danke;-)

    Code:
    Option Explicit
    
    Public Function BarCode_Function(Input_Cell As Range)
    
    '-----BarCode_Funktion-----
    Dim wert As String
    wert = Input_Cell.Formula
    Dim CellID As String
    'Barcode Anzeigen
    CellID = "BarCode_" & Input_Cell.Column & "_" & Input_Cell.Row
    
    Dim x As Integer, Y As Integer, Heigth As Integer
    Y = Input_Cell.Top + 2                          'Barcode Position Höhe (+5)
    x = Input_Cell.Left + Input_Cell.Width + 10     'Barcode Position Spalte (+20)
    Heigth = Input_Cell.Height - 4                  'Barcode Breite (-10)
    
    paintCode39 wert, ActiveSheet, "Barcode_" & CellID, 1, x, Y, Heigth
    On Error Resume Next
    delete_Shape_Clones
    
    BarCode_Function = ""
    
    '-----BarCode_Funktion-----
    
    End Function
    
    
    ' -----------------------------------------------------------------
    ' paintCode39
    ' Prozedur zum erstellen von Code39 Barcodes mit Excel Bord-Mitteln
    ' ------------------------------------------------------------------
    ' Parameter
    ' - Value: Wert, der als Barcode angezeigt werden soll
    ' - Sheet: Arbeitsblatt, auf dem der Barcode gezeichnet werden soll
    ' - Name: Name der zu erstellenden Barcode-Grafik. Der Name muss
    '         innerhalb des Arbeitsblattes eindeutig sein
    ' - ScaleFactor: Faktor für Größenanpassung.
    ' -------------------------------------------------------------------
    Sub Code39()
    
    End Sub
    
    
    
    Public Sub paintCode39(ByVal Value As String, _
                           ByRef Sheet As Worksheet, _
                           ByVal Name As String, _
                           ByVal ScaleFactor As Integer, _
                           ByVal x As Integer, _
                           ByVal Y As Integer, _
                           ByVal Height As Integer _
                           )
        ' Variable anlegen
    
        Dim i As Integer
        Dim j As Integer
        Dim sh As Shape
        Dim code As String
        Dim varArray() As Variant
        Dim iCount As Integer
        
        ' Positionsvariable initialisieren
        ' ggf. Start- und Stopzeichen zum anzuzeigenden Wert hinzufügen
        If Left(Value, 1) <> "*" Then Value = "*" & Value
        If Right(Value, 1) <> "*" Then Value = Value & "*"
        
        ' Ermitteln, ob sich bereits einen alte Version des Barcodes
        ' auf dem Arbeitsblatt befindet.
        For Each sh In Sheet.Shapes
            If sh.Name = Name Then
                ' alte Barcode-Grafik gefunden. Default-Werte für
                ' Positionsvariable überschreiben
                ' alte Grafik löschen
                sh.Delete
                
                ' Schleife beenden
                Exit For
            End If
        Next
        
        ' Mit Schleife den anzuzeigenden Wert zeichenweise durchgehen
        For i = 1 To Len(Value)
        
            ' aktuelles Zeichen gemäß Mapping-Tabelle kodieren
            ' Beispiel: A wird zu 1101010010110
            code = getCode(Mid(Value, i, 1))
            
            ' Prüfen, ob gültige Kodierung gefunden wurde.
            If code = "" Then
                MsgBox "Barcode-Erstellung abgebrochen.", _
                        vbCritical, _
                        "Undefiniertes Zeichen."
                Exit For
            End If
            
            ' den Kode Balken für Balken durchgehen
            For j = 1 To Len(code)
                ' neues Shape-Objekt anlegen mit ScalFactor-Breite anlegen
                Set sh = Sheet.Shapes.AddShape(msoShapeRectangle, _
                                               x, _
                                               Y, _
                                               ScaleFactor, _
                                               Height)
                
                ' X-Position um Breite des ScalFactor weiterschieben
                x = x + ScaleFactor
                
                ' abhängig vom aktuellen Code Shape schwarz oder weiß färben
                If Mid(code, j, 1) = 1 Then
                    ' Kode = 1 --> schwarzer Balken
                    sh.Fill.ForeColor.RGB = RGB(0, 0, 0)
                    sh.Line.ForeColor.RGB = RGB(0, 0, 0)
                Else
                    ' Code = 0 --> weißer Balken
                    sh.Fill.ForeColor.RGB = RGB(255, 255, 255)
                    sh.Line.ForeColor.RGB = RGB(255, 255, 255)
                End If
                
                ' Balken in Array für spätere Gruppierung hinzufügen
                iCount = iCount + 1
                ReDim Preserve varArray(1 To iCount)
                varArray(iCount) = sh.Name
            Next
        Next
    group:
        ' Alle bisher angelegten Balken zu einer einzelnen Grafik gruppieren
        Set sh = Sheet.Shapes.Range(varArray).group
        
        ' gruppierte Grafik benennen
        sh.Name = Name
    End Sub
    ' -----------------------------------------------------------------
    ' getCode
    ' Mapping-Funktion zum Umwandeln eines gegebenen Zeichens in eine
    ' Kodieren zur Generierung eines Code39 Barcode-Elements
    ' ------------------------------------------------------------------
    ' Parameter
    ' - Character: das zu kodierende Zeichen
    ' -------------------------------------------------------------------
    ' Rückgabewert: Kodierung gemäß Code39
    ' 1 = schwarzer Balken
    ' 0 = weißer Balken
    ' Für einen breiten Balken werden zwei gleichfarbige Balken
    ' hintereinander kodiert.
    ' Bei einem nicht im Code39 definierten Zeichen gibt die Funktion
    ' eine leere Zeichenfolge zurück.
    ' -------------------------------------------------------------------
    Private Function getCode(ByVal Character As String) As String
        Dim code As String
        Select Case UCase(Character)
            Case "*"
                code = "1001011011010"
            Case "0"
                code = "1010011011010"
            Case "1"
                code = "1101001010110"
            Case "2"
                code = "1011001010110"
            Case "3"
                code = "1101100101010"
            Case "4"
                code = "1010011010110"
            Case "5"
                code = "1101001101010"
            Case "6"
                code = "1011001101010"
            Case "7"
                code = "1010010110110"
            Case "8"
                code = "1101001011010"
            Case "9"
                code = "1011001011010"
            Case "X"
                code = "1001011010110"
            Case Else
                code = ""
        End Select
        
        getCode = code
    End Function
    
    Private Sub delete_Shape_Clones()
            Dim Sheet As Worksheet
            Set Sheet = ActiveSheet
    
            Dim iShape As Integer
            Dim nShapes As Integer
            nShapes = Sheet.Shapes.Count
            For iShape = 1 To nShapes
    
            Dim objShape As Shape
            Dim iLoop As Integer
    
            For iLoop = iShape + 1 To nShapes
            If Sheet.Shapes(iLoop).Name = Sheet.Shapes(iShape).Name Then
            Sheet.Shapes(iLoop).Delete
            nShapes = nShapes - 1
            End If
            Next
            Next
    
    
    End Sub
    
    
    
     
    CaMa1511, 22. April 2018
    #1
  2. maninweb
    maninweb MVP für Microsoft Excel
    Hallo,

    Du könntest diesen Code ...

    Code:
    Y = Input_Cell.Top + 2                          'Barcode Position Höhe (+5)
    x = Input_Cell.Left + Input_Cell.Width + 10     'Barcode Position Spalte (+20)
    
    ... durch diesen ersetzen ...

    Code:
    Y = Input_Cell.Top + Input_Cell.Height + 2
    x = Input_Cell.Left + 10
    
    Generell würde ich jedoch kein VBA für BarCodes verwenden. Es gibt kostenlose Schriftarten, die genau dasselbe machen. Dann brauchst Du nur den Text bzw. Formel = "*"&A1&"*" schreiben und mit der Schriftart formatieren.

    Gruß
     
    maninweb, 23. April 2018
    #2
  3. CaMa1511 Erfahrener User
    Super vielen Dank, funktioniert super. In der Firma wo viele mit der Datei arbeiten müssten dann alle die neue Schriftart laden, ich glaub da ist es einfachen mit dem code ;-)

    Nochmals Danke!
     
    CaMa1511, 23. April 2018
    #3
Thema:

VBA Code abändern für Barcodes

Die Seite wird geladen...
  1. VBA Code abändern für Barcodes - Similar Threads - VBA Code abändern

  2. Excel VBA - Code Hilfe (Spalten, Werte kopieren etc.)

    in Microsoft Excel Hilfe
    Excel VBA - Code Hilfe (Spalten, Werte kopieren etc.): Hallo, ich benötige Hilfe für ein Problem, welches ich leider selbst schwerlich als Anfänger nicht lösen kann: Ich möchte von dem Tabellenblatt "Tabelle1" aus den Zellen B8:B14, K8:K14, B18:B25,...
  3. VBA Code " Zeilenhöhe bei Verb. Zellen Funktioniert fasst"

    in Microsoft Excel Hilfe
    VBA Code " Zeilenhöhe bei Verb. Zellen Funktioniert fasst": Hallo Leute dieser Code für Zellenhöhe bei Verbundenen Zellen Funktioniert fast. Ich habe ein Code von jemand anderem bekommen der nicht in einem Forum ist. Ich kann gerade diese Person nicht...
  4. PDF mit Namen,Datum speichern im Zielordner

    in Microsoft Excel Hilfe
    PDF mit Namen,Datum speichern im Zielordner: Hallo, habe das Problem den Namen in Zelle D2, Vorname in Zelle D5 , das Datum steht in der Zelle B 10 und soll beim speichern so angezeigt werden (Max Mustermann 2023 Oktober) wie und wo muß ich...
  5. Datentabelle per VBA Makro durch Kopieren und Einfügen einer Kopfzeile aufteilen

    in Microsoft Excel Hilfe
    Datentabelle per VBA Makro durch Kopieren und Einfügen einer Kopfzeile aufteilen: Hallo Zusammen, mein erster Beitrag hier, also schon mal Sorry im Voraus, wenn unvollständig beschrieben *:)* Ich habe das Forum schon nach einem brauchbaren Lösungsansatz durchsucht, bin aber...
  6. UserForm zum bearbeiten von Tabellen und speichern

    in Microsoft Excel Hilfe
    UserForm zum bearbeiten von Tabellen und speichern: Guten Tag Ich habe leider ein Problem, das mich zur Verzweiflung bringt. Vielleicht findet hier jemand einen Lösung für mein Problem. Ich bekommen leider einen Laufzeitfehler '1004'. Zur...
  7. VBA Code Tabellenblatt kopieren und UserForm

    in Microsoft Excel Hilfe
    VBA Code Tabellenblatt kopieren und UserForm: Hallo, ich hoffe mir kann jemand helfen. Schon mal vielen Dank für die Unterstützung. Folgende Thematik: In dem Blatt 1 ist ein ComandButton. Mit Klick soll über VBA folgendes abgefragt...
  8. VBA Code anpassen mit variablem Tabellen Ende

    in Microsoft Excel Hilfe
    VBA Code anpassen mit variablem Tabellen Ende: Hallo, im folgenden Code möchte ich gerne statt eines fest vorgegebenen Tabellen Ende ein variables einsetzen. Sub Verkettung() Dim i As Long For i = 2 To 15000 'Hier soll kein festes Ende...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden