Office: (Office 365) Excel VBA Code

Helfe beim Thema Excel VBA Code in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo Vielleicht kann mir hierbei wer helfen? Warum funktioniert der Code nicht? Der IF-Codeteile mit "F", "iA" und "O" funktionieren. Aber wenn ich... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von KlausPeter, 11. Januar 2022.

  1. KlausPeter hat Ahnung

    Excel VBA Code


    Hallo

    Vielleicht kann mir hierbei wer helfen? Warum funktioniert der Code nicht?
    Der IF-Codeteile mit "F", "iA" und "O" funktionieren. Aber wenn ich im userform den Teil mit "TF" aufrufe funktioniert der mit den Pfeilen gekennzeichnete Codeabschnitt nicht.

    Wird der Codeteil "iA" auskommentiert funktioniert auch der "TF" Abschnitt wieder.

    Wieso??

    Würde mich über eine Info sehr fereuen.
    Danke schon mal.
    edit: Ich bin nicht der Pro Programmierer.

    Code:
    Private Sub btnSpeichern_Click()
    
    
    'Schneiden
        If cmbSchneiden = "F" Then
            ActiveCell.Offset(0, 49).Value = 0
            ActiveCell.Offset(0, 54).Value = "F"
        End If
        
        If cmbSchneiden = "iA" And txtRestGewichtS <> "" Then
            ActiveCell.Offset(0, 49).Value = CDbl(txtRestGewichtS.Value)
            ActiveCell.Offset(0, 54).Value = cmbSchneiden
           Else
            txtRestGewichtS.Value = txtBGSchneiden.Value
            ActiveCell.Offset(0, 54).Value = cmbSchneiden
        End If
    
        If cmbSchneiden = "TF" And txtRestGewichtS <> 0 Then
          "==>"  ActiveCell.Offset(0, 49).Value = CDbl(txtRestGewichtS.Value)  "<=="
            ActiveCell.Offset(0, 54).Value = cmbSchneiden
           Else
            txtRestGewichtS.Value = txtBGSchneiden.Value
            ActiveCell.Offset(0, 54).Value = cmbSchneiden
        End If
          
        If cmbSchneiden = "O" Then
            ActiveCell.Offset(0, 49).Value = ActiveCell.Offset(0, 48).Value
            ActiveCell.Offset(0, 54).Value = "O"
        End If
     
    KlausPeter, 11. Januar 2022
    #1
  2. Lutz Fricke Erfahrener User
    Hallo KlausPeter,

    was steht denn in den Zellen txtRestGewichtS und txtBGSchneiden?
    Das ist ja der erste offensichtliche Unterschied, ob "iA" auskommentiert ist oder nicht.

    Und mit Beispieldatei wäre die Lösung leichter.

    Gruß,
    Lutz
     
    Lutz Fricke, 11. Januar 2022
    #2
  3. KlausPeter hat Ahnung
    Hallo
    Also in txtRestGewichtS steht der berechnete Wert aus offene Tonnage minus fertiggestellte Tonnage.
    In txtBGSchneiden steht der eingelesene Wert der offenen Tonnage.

    Durch ein Change Event wird die Userform aufgerufen und alle Werte eingelesen. siehe Bild.
    Die Zahl 1000 trage ich im Userform ein.
    Excel VBA Code Teilfertig.JPG

    SG
    KlausPeter
     
    KlausPeter, 11. Januar 2022
    #3
  4. Lutz Fricke Erfahrener User

    Excel VBA Code

    Hallo KlausPeter,

    ein Bild ist wenig hilfreich, da wir nicht sehen, was passiert und was genau im UserForm steht...

    Lauf den Code doch mal im Einzelschritt durch und schaue, wie sich txtRestGewichtS verändert, wenn deine IF "iA"...-Abfrage durchlaufen wird.

    Gruß,
    Lutz
     
    Lutz Fricke, 11. Januar 2022
    #4
  5. KlausPeter hat Ahnung
    Hallo
    Eine Beispieldatei hochladen geht leider nicht da das eine Firmendatei ist.

    Wenn ich den Code in Einzelschritten durchlaufe, dann bleibt er beim Öffnen der Userform stehen. Mache ich da etwas falsch? Ich kann dadurch auch nix auslesen was mit den Wert in txtRestGewichtS passiert. Wie eingangs schon erwähnt bin ich nicht gerade der Erfinder von VBA.
    Ist bei den Prozeduren zwischen "iA" und "TF" zu viel gleich? Das heist er weis nicht genau was passieren soll?
    Denn wenn ich einen der Beiden Blöcke auskommentiere dann funktioniert der andere immer.
    Also hier ist der ganze Code vom Userform.

    Vielleicht kannst du mit diesen Infos was anfangen.

    Code:
    Option Explicit
    
    Private Sub btnAbbrechen_Click()
           
            Application.EnableEvents = False
            Unload Me
            Biegerei.Hide
            Application.Undo
            Application.EnableEvents = True
           
    End Sub
    Private Sub btnSpeichern_Click()
    
    'Schneiden
        If cmbSchneiden = "F" Then
            ActiveCell.Offset(0, 49).Value = 0
            ActiveCell.Offset(0, 54).Value = "F"
        End If
         
        If cmbSchneiden = "iA" And txtRestGewichtS <> "" Then
            ActiveCell.Offset(0, 49).Value = CDbl(txtRestGewichtS.Value)
            ActiveCell.Offset(0, 54).Value = cmbSchneiden
           Else
            txtRestGewichtS.Value = txtBGSchneiden.Value
            ActiveCell.Offset(0, 54).Value = cmbSchneiden
        End If
    
        If cmbSchneiden = "TF" And txtRestGewichtS <> "" Then
            ActiveCell.Offset(0, 49).Value = CDbl(txtRestGewichtS.Value)
            ActiveCell.Offset(0, 54).Value = cmbSchneiden
           Else
            txtRestGewichtS.Value = txtBGSchneiden.Value
            ActiveCell.Offset(0, 54).Value = cmbSchneiden
        End If
           
        If cmbSchneiden = "O" Then
            ActiveCell.Offset(0, 49).Value = ActiveCell.Offset(0, 48).Value
            ActiveCell.Offset(0, 54).Value = "O"
        End If
     
    ''Biegen
    '        If txtRestGewichtB > "" Then
    '        ActiveCell.Offset(0, 57).Value = CDbl(txtRestGewichtB.Value)
    '        ActiveCell.Offset(0, 62).Value = cmbBiegen
    '       Else
    '        txtRestGewichtB.Value = txtBGBiegen.Value
    '        ActiveCell.Offset(0, 62).Value = cmbBiegen
    '    End If
    '
    ''Rollen
    '        If txtRestGewichtR > "" Then
    '        ActiveCell.Offset(0, 65).Value = CDbl(txtRestGewichtR.Value)
    '        ActiveCell.Offset(0, 70).Value = cmbRollen
    '       Else
    '        txtRestGewichtR.Value = txtBGRollen.Value
    '        ActiveCell.Offset(0, 70).Value = cmbRollen
    '    End If
    '
    ''Zusammnebau
    '        If txtRestGewichtZ > "" Then
    '        ActiveCell.Offset(0, 73).Value = CDbl(txtRestGewichtZ.Value)
    '        ActiveCell.Offset(0, 78).Value = cmbZusammenbau
    '       Else
    '        txtRestGewichtZ.Value = txtBGZusammenbau.Value
    '        ActiveCell.Offset(0, 78).Value = cmbZusammenbau
    '       End If
       
       Application.Calculate
       Unload Me
       Biegerei.Hide
     
       
    End Sub
    
    
    Private Sub txtbearbeitetbiegen_Change()
    
        On Error Resume Next
    
        txtRestGewichtB.Value = CDbl(txtBGBiegen) - CDbl(txtbearbeitetbiegen)
        txtRestGewichtB = Format(txtRestGewichtB, "#,##0")
        txtbearbeitetbiegen = Format(txtbearbeitetbiegen, "#,##0")
       
    End Sub
    
    Private Sub txtbearbeitetrollen_Change()
    
        On Error Resume Next
       
        txtRestGewichtR.Value = CDbl(txtBGRollen) - CDbl(txtbearbeitetrollen)
        txtRestGewichtR = Format(txtRestGewichtR, "#,##0")
        txtbearbeitetrollen = Format(txtbearbeitetrollen, "#,##0")
       
    End Sub
    
    Private Sub txtbearbeitetschneiden_Change()
    
        On Error Resume Next
       
        txtRestGewichtS.Value = CDbl(txtBGSchneiden) - CDbl(txtbearbeitetschneiden)
        txtRestGewichtS = Format(txtRestGewichtS, "#,##0")
        txtbearbeitetschneiden = Format(txtbearbeitetschneiden, "#,##0")
       
    End Sub
    
    
    Private Sub txtbearbeitetzusammenbau_Change()
    
        On Error Resume Next
       
        txtRestGewichtZ.Value = CDbl(txtBGZusammenbau) - CDbl(txtbearbeitetzusammenbau)
        txtRestGewichtZ = Format(txtRestGewichtZ, "#,##0")
        txtbearbeitetzusammenbau = Format(txtbearbeitetzusammenbau, "#,##0")
       
    End Sub
    
    
    Private Sub UserForm_Initialize()
    
     With Me.cmbSchneiden
            .AddItem "O"
            .AddItem "iA"
            .AddItem "TF"
            .AddItem "F"
           End With
         
        With Me.cmbBiegen
            .AddItem "O"
            .AddItem "iA"
            .AddItem "TF"
            .AddItem "F"
           End With
         
         
        With Me.cmbRollen
            .AddItem "O"
            .AddItem "iA"
            .AddItem "TF"
            .AddItem "F"
           End With
         
         
        With Me.cmbZusammenbau
            .AddItem "O"
            .AddItem "iA"
            .AddItem "TF"
            .AddItem "F"
           End With
    
    End Sub
    und hier der Code vom change event.

    Code:
     If Target.Value = "TF" Then
           
            With Biegerei
                .txtBGSchneiden.Value = Format(ActiveCell.Offset(0, 49).Value, "#,##0")
                .txtBGBiegen.Value = Format(ActiveCell.Offset(0, 57).Value, "#,##0")
                .txtBGRollen.Value = Format(ActiveCell.Offset(0, 65).Value, "#,##0")
                .txtBGZusammenbau.Value = Format(ActiveCell.Offset(0, 73).Value, "#,##0")
                .cmbSchneiden.Value = ActiveCell.Offset(0, 54).Value
                .cmbBiegen.Value = ActiveCell.Offset(0, 62).Value
                .cmbRollen.Value = ActiveCell.Offset(0, 70).Value
                .cmbZusammenbau.Value = ActiveCell.Offset(0, 78).Value
            End With
    
                   
         If ActiveCell.Offset(0, 49) = 0 Then
            Biegerei.txtBGSchneiden.Visible = False
            Biegerei.txtRestGewichtS.Visible = False
            Biegerei.txtbearbeitetschneiden.Visible = False
            Biegerei.Label1.Visible = False
            Biegerei.Label2.Visible = False
            Biegerei.Label5.Visible = False
            Biegerei.Label17.Visible = False
            Biegerei.cmbSchneiden.Visible = False
           End If
    
        If ActiveCell.Offset(0, 57) = 0 Then
            Biegerei.txtBGBiegen.Visible = False
            Biegerei.txtRestGewichtB.Visible = False
            Biegerei.txtbearbeitetbiegen.Visible = False
            Biegerei.Label6.Visible = False
            Biegerei.Label7.Visible = False
            Biegerei.Label8.Visible = False
            Biegerei.Label18.Visible = False
            Biegerei.cmbBiegen.Visible = False
           End If
    
        If ActiveCell.Offset(0, 65) = 0 Then
            Biegerei.txtBGRollen.Visible = False
            Biegerei.txtRestGewichtR.Visible = False
            Biegerei.txtbearbeitetrollen.Visible = False
            Biegerei.Label9.Visible = False
            Biegerei.Label10.Visible = False
            Biegerei.Label11.Visible = False
            Biegerei.Label19.Visible = False
            Biegerei.cmbRollen.Visible = False
           End If
    
        If ActiveCell.Offset(0, 73) = 0 Then
            Biegerei.txtBGZusammenbau.Visible = False
            Biegerei.txtRestGewichtZ.Visible = False
            Biegerei.txtbearbeitetzusammenbau.Visible = False
            Biegerei.Label12.Visible = False
            Biegerei.Label13.Visible = False
            Biegerei.Label14.Visible = False
            Biegerei.Label15.Visible = False
            Biegerei.cmbZusammenbau.Visible = False
           End If
             Biegerei.Show
           
        End If
    Danke
    SG
    KlausPeter
     
    KlausPeter, 11. Januar 2022
    #5
  6. Lutz Fricke Erfahrener User
    Hallo KlausPeter,

    auch eine Firmendatei lässt sich mit unverfänglichen Daten füllen...

    Du kannst im Private Sub btnSpeichern_Click die erste Zeile mit Code als Stoppmarke markieren. Dann kannst Du auf deinen Button klicken und den Code Schritt für Schritt abarbeiten.

    Gruß,
    Lutz
     
    Lutz Fricke, 11. Januar 2022
    #6
  7. KlausPeter hat Ahnung
    Hallo
    So ich hab es mit deiner Hilfe zum Schrittweisen abarbeiten geschafft.

    Der Fehler war die "else-Prozedur" nach dem If mit "iA". Die hat mir den erechneten Wert wieder auf den Ausgangswert zurückgesetzt.
    Jetzt habe ich die ELSE durch ein ELSEIF ersetzt und die beiden If´s in eine Zusammengelegt und siehe da, es funktioniert.
    Super danke für deine Hilfe. Ich war schon den ganzen Tag auf der Suche nach dem Fehler. Excel VBA Code *:D*Excel VBA Code *:D*Excel VBA Code *:D*Excel VBA Code *:)*Excel VBA Code *:)*Excel VBA Code *:)*

    LG
    KlausPeter

    Code:
    'Schneiden
        If cmbSchneiden = "F" Then
            ActiveCell.Offset(0, 49).Value = 0
            ActiveCell.Offset(0, 54).Value = "F"
        End If
          
        If cmbSchneiden = "iA" And txtRestGewichtS <> "" Then
            ActiveCell.Offset(0, 49).Value = CDbl(txtRestGewichtS.Value)
            ActiveCell.Offset(0, 54).Value = cmbSchneiden
          
           ElseIf cmbSchneiden = "TF" And txtRestGewichtS <> "" Then
            ActiveCell.Offset(0, 49).Value = CDbl(txtRestGewichtS.Value)
            ActiveCell.Offset(0, 54).Value = cmbSchneiden
           Else
            txtRestGewichtS.Value = txtBGSchneiden.Value
            ActiveCell.Offset(0, 54).Value = cmbSchneiden
        End If
            
        If cmbSchneiden = "O" Then
            ActiveCell.Offset(0, 49).Value = ActiveCell.Offset(0, 48).Value
            ActiveCell.Offset(0, 54).Value = "O"
        End If
     
    KlausPeter, 11. Januar 2022
    #7
Thema:

Excel VBA Code

Die Seite wird geladen...
  1. Excel VBA Code - Similar Threads - Excel VBA Code

  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. Tabellenblätter aus Vorlagen-Tabellenblatt generieren mit dynamischen Anpassungen durch Vorgaben

    in Microsoft Excel Hilfe
    Tabellenblätter aus Vorlagen-Tabellenblatt generieren mit dynamischen Anpassungen durch Vorgaben: Hallo, ich suche gerade eine Möglichkeit mittels VBA mehrere Tabellenblätter auf einmal zu generieren (ca. 40), die auf einem Vorlage-Tabellenblatt (TB2) basieren. Das kopieren/ Vervielfachen an...
  4. Problem im Code für Mehrfachauswahl in Dropdownliste

    in Microsoft Excel Hilfe
    Problem im Code für Mehrfachauswahl in Dropdownliste: Hallo beisammen, ich soll für meinen Stiefvater eine Tabelle über seine Bestandskunden und deren Produkte erstellen und bin dabei nun auf folgendes Problem gestoßen: Ich brauche in mehreren...
  5. VBA - Zeilen je nach Bedingung in neues Tabellenblatt verschieben und löschen

    in Microsoft Excel Hilfe
    VBA - Zeilen je nach Bedingung in neues Tabellenblatt verschieben und löschen: Hallo liebe Excel-Kommunity, nach ewigen Stunden des Suchens und Rumprobierens bin ich an dem Punkt angekommen an dem ich verzweifelt um eure Hilfe fragen muss. Da ich leider keinerlei...
  6. VBA-Code Arbeitsblatt wechseln

    in Microsoft Excel Hilfe
    VBA-Code Arbeitsblatt wechseln: Hallo zusammen, ich habe mal wieder eine Frage. Aktuell beschäftige ich mich mit VBA-Codes. Beim öffnen meiner Arbeitsmappe erscheint folgender Hinweis: Private Sub Workbook_Open() 'Titel Hinweis...
  7. VBA Code erweitern

    in Microsoft Excel Hilfe
    VBA Code erweitern: Hallo zusammen, ich habe ein Problem in Excel mit einem VBA Code. In Spalte A habe ich Langtexte und in Spalte B habe ich dazu eine passende Abkürzung. Wenn ich in E5 "mehrere" Wörter schreibe...
  8. Excel VBA Codes Pivot-Aktualisierung, Kommentare, etc.

    in Microsoft Excel Hilfe
    Excel VBA Codes Pivot-Aktualisierung, Kommentare, etc.: Hallo liebe Office-Hilfe Mitglieder, ich bin seit kurzem hier neu registriert und hätte eine (für mich als absolutem Laien in Sachen VBA) Problemstellung, bei der mir hoffentlich jemand von Euch...
  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