Microsoft Excel

Herbers Excel/VBA-Archiv

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

Code funktioniert nicht

Betrifft: Code funktioniert nicht von: Pascal
Geschrieben am: 13.08.2014 09:57:26

Sehr geehrte Damen und Herren

Ich habe eine bitte an euch.

Mein Problem:
Ich möchte Zahlen auslesen und den Auftrag in ein anderen Register auf die entsprechende Zeile einfügen. Dieser Code ist gegangen, obwohl ich nichts verändert habe geht dieser Code nicht mehr. Ich weiss nicht wieso.

Habt ihr vielleicht eine Ahnung?

Was ich bis jetzt ausprobiert habe ohne Erfolg:
- Kompatibilität xls xlsm usw.
- Leerschläge in den Zellen

Details:
Auslesen - AuftrSNrEingelesenMatrix Auftrag zum einfügen = "F2"
Abgleichen mit AuftrSNrEingelesenMatrix - FlasherDaten Spalte C
Einfügen - FlasherDaten Spalte O Doppeltvergabe Spalte P

Wenn ihr noch mehr Infos braucht, bitte unsigniert melden.

Vielen Dank
Liebe Grüsse
Pascal

Code:

  • 
    Sub Kopieren()
    If Range("AuftrSNrEingelesenMatrix!F2") <= 0 Then
        Dim strText As String
        strText = "angeben!"
        MsgBox "Bitte Auftrag " & strText, 16, "Fehler"
        With Sheets("AuftrSNrEingelesenMatrix").Select
        Range("F2").Select
        End With
        Else
    'Blind an
    With Application
        .ScreenUpdating = False
        .Calculation = xlCalculationManual
    End With
    'Variablendeklaration
    Dim lSpalte_AA As Long, iÜberschreiben As Boolean, iVerhalten As Long
        'Withblock öffnen
        With ThisWorkbook.Worksheets("FlasherDaten")
            'Schleife starten
            For lSpalte_AA = 1 To .UsedRange.SpecialCells(xlCellTypeLastCell).Row
                'Git es einen Ausgangswert?
                If .Range("AA" & lSpalte_AA).Value <> "" Then
                    'Ist bereits ein Wert vorhanden?
                    If .Range("O" & lSpalte_AA).Value <> "" And _
                        iÜberschreiben = False And _
                        .Range("O" & lSpalte_AA).Value <> .Range("AA" & lSpalte_AA).Value Then
                        iVerhalten = MsgBox(.Range("O" & lSpalte_AA).Value & " durch " & .Range("AA" _
     _
     & lSpalte_AA).Value & " ersetzen?", vbYesNoCancel, "Daten Überschreiben?")
                        'Überschreiben
                        If iVerhalten = vbYes Then
                            iÜberschreiben = True
                            .Range("O" & lSpalte_AA).Value = .Range("AA" & lSpalte_AA).Value
                        'Zur betroffenen Zeile gehen
                        ElseIf iVerhalten = vbNo Then
                        Dim a5 As String
                        a5 = MsgBox("In Spalte Doppelvergabe einfügen?.", vbYesNo, "Doppelvergabe?") _
     _
    
                        If a5 = vbYes Then
                            Call Kopieren2
                            GoTo Beenden
                        ElseIf a5 = vbNo Then
                        .Range("O" & lSpalte_AA).Select
                        GoTo Beenden
                         End If
                       End If
                    Else
                        .Range("O" & lSpalte_AA).Value = .Range("AA" & lSpalte_AA).Value
                    End If
                End If
            Next lSpalte_AA
        End With
    Beenden:
    'Blind aus
    With Application
        .ScreenUpdating = True
        .Calculation = xlCalculationAutomatic
    End With
    End If
    End Sub
    Sub Kopieren2()
    'Blind an
    With Application
        .ScreenUpdating = False
        .Calculation = xlCalculationManual
    End With
    'Variablendeklaration
    Dim lSpalte_AA As Long, iÜberschreiben As Boolean, iVerhalten As Long
        'Withblock öffnen
        With ThisWorkbook.Worksheets("FlasherDaten")
            'Schleife starten
            For lSpalte_AA = 1 To .UsedRange.SpecialCells(xlCellTypeLastCell).Row
                'Git es einen Ausgangswert?
                If .Range("AA" & lSpalte_AA).Value <> "" Then
                    'Ist bereits ein Wert vorhanden?
                    If .Range("P" & lSpalte_AA).Value <> "" And _
                        iÜberschreiben = False And _
                        .Range("P" & lSpalte_AA).Value <> .Range("AA" & lSpalte_AA).Value Then
                        iVerhalten = MsgBox("Doppelvergabe: " & .Range("P" & lSpalte_AA).Value & "   _
    _
    durch " & .Range("AA" & lSpalte_AA).Value & " ersetzen?", vbYesNoCancel, "Daten Überschreiben?") _
    
                        'Überschreiben
                        If iVerhalten = vbYes Then
                            iÜberschreiben = True
                            .Range("P" & lSpalte_AA).Value = .Range("AA" & lSpalte_AA).Value
                        'Zur betroffenen Zeile gehen
                        ElseIf iVerhalten = vbNo Then
                            .Range("P" & lSpalte_AA).Select
                            GoTo Beenden2
                        End If
                    Else
                        .Range("P" & lSpalte_AA).Value = .Range("AA" & lSpalte_AA).Value
                    End If
                End If
            Next lSpalte_AA
        End With
    Beenden2:
    'Blind aus
    With Application
        .ScreenUpdating = True
        .Calculation = xlCalculationAutomatic
    End With
    End Sub

  •   

    Betrifft: AW: Code funktioniert nicht von: Rudi Maintaire
    Geschrieben am: 13.08.2014 10:10:27

    Hallo,
    geht dieser Code nicht mehr
    immer wieder diese tollen Aussagen.
    Was geht nicht mehr?

    Sollen wir die Mappe nachbauen?
    Lade ein Beispiel hoch.

    Gruß
    Rudi

    P.S.: Variablendeklarationen immer komplett am Anfang des Codes!


      

    Betrifft: AW: Code funktioniert nicht von: Pascal
    Geschrieben am: 13.08.2014 11:19:07

    Hallo zusammen

    Da die Datei grösser als 300kB ist, kann ich leider keine Excel hochladen.
    Also das Einfügen des sogenannten Wert (Auftrag) der Zelle geht nicht. Genau gesagt der Wert auf F2 sollte dann auf FlasherDaten auf Spalte O (wenn auf Spalte O ein Wert, dann nachfragen ob es überschreiben oder in Spalte P schreiben soll).
    Wenn Sie möchten können Sie Ihre E-Mail angeben, dann kann ich die Excel-Datei zuschicken.

    Ich habe provisorisch eine Word Datei erstellt mit Print Screens. Siehe Anhang

    https://www.herber.de/bbs/user/92070.doc

    Bei Fragen bitte nachfragen, Vielen Dank & Liebe Grüsse
    Pascal


      

    Betrifft: AW: Code funktioniert nicht von: Rudi Maintaire
    Geschrieben am: 13.08.2014 14:06:07

    Hallo,
    Da die Datei grösser als 300kB ist,
    dann speck sie ab.

    Was sollen wir mit Screenshots?

    Gruß
    Rudi


      

    Betrifft: AW: Code funktioniert nicht von: Pascal
    Geschrieben am: 14.08.2014 10:21:36

    https://www.herber.de/bbs/user/92095.zip

    Guten Tag
    Jetzt habe ich die Datei abgespeckt.
    LG Pascal


      

    Betrifft: AW: Code funktioniert nicht von: fcs
    Geschrieben am: 16.08.2014 16:11:07

    Hallo Pascal,


    merkwürdig ist schon einmal, dass der Code, den du in deiner Eingangsfrage gepostet hast, anders ist als in der Datei.

    Im geposteten Code vergleichst du Werte mit Spalte AA in der Datei mit Spalte CC.

    Die Spalte CC ist komplett leer. Dadurch läuft der Code komplett durch, denn die Zeile
    If .Range("CC" & lSpalte_AA).Value <> "" Then
    wird nie True.

    Ob diese fehlenden Werte oder eine falsche Spalte im Code das Problem sind kann man als außenstehender nicht beurteilen. Da müsstest du ggf. mal den Ersteller der Makros kontaktieren.

    Außerdem ist es keine so gute Idee, den Zeilen-Zähler lSpalte_AA bei 1 beginnen zu lassen, wenn die relevanten Daten ab Zeile 11 beginnen.

    Gruß
    Franz


      

    Betrifft: Unsignierte Meldung von: Luc:-?
    Geschrieben am: 13.08.2014 10:36:39

    Wohin ist der Code denn gegangen, Pascal,
    issa nu wech…? ;-]
    Ansonsten schließe ich mich Rudi an!
    Gruß!