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 Neuer User

    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 Neuer User
    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 Neuer User
    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 Neuer User
    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 Filter bei VBA berücksichtigen

    in Microsoft Excel Hilfe
    Excel Filter bei VBA berücksichtigen: Hallo zusammen, ich glaube, ich habe ein kniffligeres Problem. Gerne auch neue Ansätze. Ich versuchs kurz und präzise. Der Anwender kreuzt in Spalte F("Auswahl") an, welche Nummern er aus Spalte...
  3. Werte der letzten Zelle einer Spalte in mehreren Tabellenblättern ermitteln

    in Microsoft Excel Hilfe
    Werte der letzten Zelle einer Spalte in mehreren Tabellenblättern ermitteln: Hallihalllo, Ich sitze gerade an meine Bachelorarbeit und muss mittels VBA ein Auswertungsprogramm für erhobene Daten erarbeiten. Ich suche schon ewig im Internet nach dem passenden Code und...
  4. Termine in Excel importieren mit VBA-Code

    in Microsoft Excel Hilfe
    Termine in Excel importieren mit VBA-Code: Guten Tag zusammen Ich möchte gerne mittels Button, resp. VBA-Code die Outlook-Termine (MS Office Standard 2016) in Excel 2016 importieren. Vielen Dank für die Unterstützung. 368530
  5. Makro VBA: Kopieren aus Quelldatei nach Zieldatei über mehrere Tabellen

    in Microsoft Excel Hilfe
    Makro VBA: Kopieren aus Quelldatei nach Zieldatei über mehrere Tabellen: Hallo, leider kann ich maximal Makros aufzeichnen. Damit komme ich bei meinem jetzigen Problem allerdings nicht weiter. Problem: Monatlich soll ein Auszug von Daten aus einer Quelldatei die ich...
  6. Excel VBA Code ComboBox abhänigkeit

    in Microsoft Excel Hilfe
    Excel VBA Code ComboBox abhänigkeit: Hallo, vielleicht kann mir einer von euch netten Menschen helfen. Habe 2 Tabellen, Tabelle 1 ist enthalten, ID und Account Tabelle 2 enthält ID ACC und Charakter und dann will ich per...
  7. VBA Code mehrere Excel Tabellen aktualisieren

    in Microsoft Excel Hilfe
    VBA Code mehrere Excel Tabellen aktualisieren: Hallo ich habe mehrere Excel Tabellen mit dem gleichen Inhalt (3D Koordinaten). Ich möchte die Änderung nur in eine Tabelle einfügen. Und über ein VBA Code an alle andere Tabellen weitergeben...
  8. VBA Verschlankung. Zusammenfassung von mehreren intelligenten Tabellen

    in Microsoft Excel Hilfe
    VBA Verschlankung. Zusammenfassung von mehreren intelligenten Tabellen: Hallo, bisher arbeite ich mehr mit der Makro Aufnahmefunktion. Ich würde nun gern den VBA Code verschlanken. Ich habe 13 Blätter (Name:"1"-"13")mit jeweils einer intelligenten Tabelle...
  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