Code reagiert nicht

  • Excel

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Nicoleka95.

    Code reagiert nicht

    hallo,
    ich habe folgendes Problem.
    ich möchte in meine Haupttabelle (Haupt) in die spalte 21 ja/nein/nichtVorhanden eintragen, wenn ich einem anderem dokument die angebotsnummer vorhandenen ist. (Zeile 30)
    jetzt tut der Code bei Ausführung nichts.
    NUR wenn ich in der spalte, wo die Angebotsnummer steht, die Nummer nochmal händich nachtrage und sie nicht von einem anderen Code einfügen lasse.
    Weiß jemand warum das so ist und was ich ändern muss.

    Würde mich über eine Antwort sehr freuen ^^

    Visual Basic-Quellcode

    1. Public Sub Cks()
    2. Dim haupt As Worksheet
    3. Dim wksDaten As Worksheet
    4. Dim wkbDaten As Workbook
    5. 'aktuelles Dokument
    6. Set haupt = Worksheets("Haupttabelle")
    7. 'öffnen Andere Dokument/keine Verzögerung(Screen...)
    8. Application.ScreenUpdating = False
    9. Workbooks.Open ("\\Krones-Intl.Krones-Group.com\DFS\AVT\AFT\FT\Angebot\Aseptik\Angebote\003_CKS_Betrachtung\k150710_Festlegung_AL_Runde_Aseptik.xlsx")
    10. 'Dokument und Tabellenblatt zuordnen
    11. Set wkbDaten = Workbooks("k150710_Festlegung_AL_Runde_Aseptik.xlsx")
    12. Set wksDaten = wkbDaten.Sheets("2017")
    13. Dim zeileQuelle As Integer
    14. Dim spalteQuelle As Integer
    15. Dim zeileZiel As Integer
    16. Dim spalteZiel As Integer
    17. zeileQuelle = 10
    18. zeileZiel = 3
    19. spalteQuelle = 3
    20. spalteZiel = 1
    21. While Not IsEmpty(haupt.Cells(zeileZiel, spalteZiel))
    22. For zeileQuelle = 10 To wksDaten.Cells(Rows.Count, 1).End(xlUp).Row
    23. 'Wenn Belegnummer in cks vorhanden
    24. If haupt.Cells(zeileZiel, 2).Value = wksDaten.Cells(zeileQuelle, spalteQuelle).Value Then
    25. 'wenn in Festlegung Ja
    26. If wksDaten.Cells(zeileQuelle, 10).Value = "ja" Then
    27. 'Ja
    28. haupt.Cells(zeileZiel, 21).Value = "Ja"
    29. Exit For
    30. ElseIf wksDaten.Cells(zeileQuelle, 10).Value = "nein" Then
    31. 'sonst nein
    32. haupt.Cells(zeileZiel, 21).Value = "Nein"
    33. Exit For
    34. Else
    35. 'sonst nichtVorhanden
    36. haupt.Cells(zeileZiel, 21).Value = "NichtVorhanden"
    37. Exit For
    38. End If
    39. End If
    40. Next zeileQuelle
    41. zeileQuelle = 10
    42. zeileZiel = zeileZiel + 1
    43. Wend
    44. 'Dokument Andere schließen
    45. Workbooks("k150710_Festlegung_AL_Runde_Aseptik.xlsx").Close SaveChanges:=False
    46. End Sub


    Code-Tags eingefügt. Farbe "Rot" entfernt. ~Thunderbolt

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Thunderbolt“ ()

    1. Die Farbe Rot ist den Moderatoren vorbehalten.
    2. BitteBitteBitte verwende die CodeTags. Code eingeben, markieren, folgenden Button anklicken

    Dann wird aus

    Dim x as Integer
    x = 1

    in diesem Fall ein

    Visual Basic-Quellcode

    1. Dim x as Integer
    2. x = 1

    => automatische Zeilennummern, Syntax-Highlighting und alle sind zufrieden.

    3. Was bedeutet das [*] hinter dem Smiley?

    Nicoleka95 schrieb:

    NUR wenn ich in der spalte, wo die Angebotsnummer steht, die Nummer nochmal händich nachtrage und sie nicht von einem anderen Code einfügen lasse.
    Dann wird wohl die Angebotsnummer in der Quelltabelle insofern falsch eingetragen, dass der Vergleich fehlschlägt. Lerne zu debuggen. Trag einfach mal vor die problematische Zeile ein:

    Visual Basic-Quellcode

    1. Dim TargetCellValue = haupt.Cells(zeileZiel, 2).Value
    2. Dim SourceCellValue = wksDaten.Cells(zeileQuelle, spalteQuelle).Value
    3. Stop

    Und wenn dann bei Ausführung das Programm bei Stop anhält, fahr mit dem Mauszeiger über TargetCellValue und SourceCellValue und schau, welche Werte die beiden haben. Dann sollte klar werden, wo der Unterschied liegt und der Code nicht macht, was Du im Sinn hast.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Erwischt. Das eine ist eine Zahl, das andere (in Anführungszeichen) ist ein Text. Eine Zahl ist kein Text. Punkt. Eine Möglichkeit wäre, den Code so zu ändern, dass TargetCellValue eben kein Text ist. Oder Du lässt die Zahl als Text interpretieren. So wird mit

    Visual Basic-Quellcode

    1. CStr(SourceCellValue)

    aus 258369 ein "258369".
    Achtung! Nicht falsch verstehen! Damit steht nicht automatisch in SourceCellValue ein Text. Der Zellinhalt (SourceCellValue) bleibt dadurch unangetastet. Mit der Zeile wird nur gesagt, dass man jetzt grad hier in dem Moment eine Textinterpretation von SourceCellValue braucht.

    Visual Basic-Quellcode

    1. If haupt.Cells(zeileZiel, 2).Value = CStr(wksDaten.Cells(zeileQuelle, spalteQuelle).Value) Then

    bedeutet "Wenn der Ausdruck in der Zielzelle gleich der Textinterpretation des Wertes in der Quellzelle ist, dann"
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.