Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1612to1616
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Unkorrekte VBA Fehler

Unkorrekte VBA Fehler
16.03.2018 16:14:56
Pascal
Hallo
Ich komme folgenden Fehler bei
  • Zeile = WorksheetFunction.Match(Suchen, .Columns(2), 0) 'Zeile erster Fund

  • Laufzeitfehler '1004'
    Die Match-Eigenschaft des WorksheetFunction-Objektes kann nicht zugeordnet werden.
    Was hat dies zu bedeuten?
    Danke für die Hilfe.
    LG Pascal
  • 
    Private Sub NormaleAuslieferungen_Click()
    Dim i As Double, LR As Double, SP As Integer
    Dim Suchen As String, Anzahl, Zeile As Double
    SP = 2 'Spalte B; zur Bestimmung letzte Zeile
    With Sheets("LBs")
    LR = .Cells(.Rows.Count, SP).End(xlUp).Row 'letzte Zeile der Spalte
    For i = 2 To LR
    If Left(.Cells(i, 3), 1) = "1" Then
    Suchen = .Cells(i, 2)
    'Ermittlung wieviele Einträge (gleiche Nr) oberhalb der Zeile vorhanden sind
    Anzahl = Evaluate("=SumProduct((B2:B" & i - 1 & "=""" & Suchen & """) * (1))")
    If Anzahl > 1 Then
    Zeile = WorksheetFunction.Match(Suchen, .Columns(2), 0) 'Zeile erster Fund
    If .Cells(Zeile, 1)  "" Then
    .Cells(i, 1) = .Cells(Zeile, 1).Value
    End If
    Else
    MsgBox "kein Eintrag für " & Suchen & " oberhalb Zeile " & i & " vorhanden"
    End If
    End If
    Next
    End With
    Call Filter
    End Sub
    


  • 16
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Unkorrekte VBA Fehler
    16.03.2018 16:23:38
    Werner
    Hallo Pascal,
    dann gibt es den Suchbegriff der in deiner Variablen "Suchen" steht in Spalte B vom Blatt "LBs" nicht.
    Gruß Werner
    AW: Unkorrekte VBA Fehler
    16.03.2018 16:28:32
    Mullit
    Hallo,
    da wird kein Wert gefunden, bei mehreren Treffern ists immer besser mit der .Find-Methode durchzuloopen...
    Gruß, Mullit
    AW: Unkorrekte VBA Fehler
    16.03.2018 16:42:46
    Mullit
    Hallo,
    ach ja und die Bracket-Notation [] für Zellen , die da im Link steht, vergiß ganz schnell wieder, und sowas steht auf offiziellen M$-Seiten, da bekommt man ja echt die Krise, argh...
    Gruß, Mullit
    Anzeige
    AW: Unkorrekte VBA Fehler
    16.03.2018 19:26:49
    Luschi
    Hallo Mullit,
    
    Bracket-Notation [] für Zellen 
    
    wenn Du da Krisen bekommst, ist das Deine persönliche Schuld.
    Ich werde sie weiter benutzen, besonders im Zusammenhang mit definierten Arbeitsmappen-Namen: einfach praktisch.
    Seit Office '97 spricht M$ davon, die Excel4-Makros gegen entsprechende Vba-Funktionen auszutauschen - doch Pustekuchen.
    Wahrscheinlich ist das Ganze so tief im System verkleistert, daß die Dinger unentfernbar sind.
    Also nutze das, was Vba bietet, zumal der Vba-Editor auch mal eine Frischzellenkur benötigt!
    Wenn ich da an Vb.Net/C# - Version 2017 denke, wie der Compiler mitdenkt - einfach rückständig.
    Doch auch hier hat alles seinen Preis, das neueste Update von Visual Studio 2017: 2,8 GigaByte groß.
    Wohl dem, der nicht in der Prärie seinen Stammsitz hat.
    Gruß von Luschi
    aus klein-Paris
    Anzeige
    AW: Unkorrekte VBA Fehler mit loop, korrekt?
    18.03.2018 15:05:40
    Pascal
    Hallo
    Also indemfall Loopen. Hier den abgeänderten Code. Ist so korrekt?
    Neu:
  • If Anzahl > 1 Then
    Bedingung = True
    Do
    Zeile = WorksheetFunction.Match(Suchen, .Columns(2), 0) 'Zeile erster Fund
    Else
    Zeile = WorksheetFunction.Match(Suchen, .Columns(2), 0) 'Zeile erster Fund
    z = z + 1
    Debug.Print z
    Loop Until Bedingung

  • 
    Private Sub NormaleAuslieferungen_Click()
    Dim i As Double, LR As Double, SP As Integer
    Dim Suchen As String, Anzahl, Zeile As Double
    Dim Bedingung As Boolean
    Dim z As Long
    SP = 2 'Spalte B; zur Bestimmung letzte Zeile
    With Sheets("LBs")
    LR = .Cells(.Rows.Count, SP).End(xlUp).Row 'letzte Zeile der Spalte
    For i = 2 To LR
    If Left(.Cells(i, 3), 1) = "1" Then
    Suchen = .Cells(i, 2)
    'Ermittlung wieviele Einträge (gleiche Nr) oberhalb der Zeile vorhanden sind
    Anzahl = Evaluate("=SumProduct((B2:B" & i - 1 & "=""" & Suchen & """) * (1))") _
    If Anzahl > 1 Then
    Bedingung = True
    Do
    Zeile = WorksheetFunction.Match(Suchen, .Columns(2), 0) 'Zeile erster  _
    Fund
    Else
    Zeile = WorksheetFunction.Match(Suchen, .Columns(2), 0) 'Zeile erster  _
    Fund
    z = z + 1
    Debug.Print z
    Loop Until Bedingung
    If .Cells(Zeile, 1)  "" Then
    .Cells(i, 1) = .Cells(Zeile, 1).Value
    End If
    Else
    MsgBox "kein Eintrag für " & Suchen & " oberhalb Zeile " & i & "  _
    vorhanden"
    End If
    End If
    Next
    End With
    Call Filter
    End Sub
    

  • Anzeige
    AW: Unkorrekte VBA Fehler mit loop, korrekt?
    18.03.2018 18:02:29
    Werner
    Hallo Pascal,
    warum beschreibst du nicht einfach was das Makro eigentlich machen soll -das weiß bis jetzt noch niemand.
    Am besten eine Beispielmappe hier hochladen mit dem was du bereits hast und einer entsprechenden Beschreibung was das Makro machen soll.
    Gruß Werner
    AW: Unkorrekte VBA Fehler mit loop, korrekt?
    20.03.2018 14:07:37
    Pascal
    Hallo Werner
    Ich habe ein Beispiel erstellt.
    Ich habe verschiedene Register erstellt LBs/QuelleTest1/LB/QuelleTest2. In den Quellregister sind immer die ursprünglichen Daten zum Testen.
    Ich möchte folgendes:
    In der Spalte C hat gibt es 1*, das sind für mich wichtig, dass in diese Zeile (Spalte A) ein Wert steht, so. Wie soll Excel zu dem bestimmten Wert kommen?
    Erklärung:
    In der Spalte B hat es verschiedene Nummern, die mehrmals vorkommen.
    Jetzt soll Excel die Zahl in der Spalte B speichern, bei denen in der Spalte C mit 1 beginnt.
    Im Register kommt es vor, dass die gespeicherte Zahl im gleichem Register (Spalte B) steht & gleichzeitig in der Spalte A einen Wert aufweist. Diese Zahl von der Spalte A soll in der Zeile (wo in der Splate C mit 1 beginnt) eingefügt werden.
    Wenn der Wert in der Spalte A mehrmals vorkommen sollte, kann Excel die Unterste nehmen.
    Ich hoffe, dass ich das gut Erklärt habe.
    https://www.herber.de/bbs/user/120547.xlsb
    Anzeige
    AW: Unkorrekte VBA Fehler mit loop, korrekt?
    20.03.2018 14:52:27
    mmat
    Hi,
    naja, das mit dem "durchloopen" (Beitrag von Mullit) war glaubich etwas anders zu verstehen.
    Codevorschlag:
    Private Sub NormaleAuslieferungen_Click()
    Dim i As Double, LR As Double, SP As Integer
    Dim Suchen As String, Anzahl, Zeile As Double, rr as range
    SP = 2 'Spalte B; zur Bestimmung letzte Zeile
    With Sheets("LBs")
    LR = .Cells(.Rows.Count, SP).End(xlUp).Row 'letzte Zeile der Spalte
    For i = 2 To LR
    If Left(.Cells(i, 3), 1) = "1" Then
    Suchen = .Cells(i, 2)
    'Ermittlung wieviele Einträge (gleiche Nr) oberhalb der Zeile vorhanden sind
    Anzahl = Evaluate("=SumProduct((B2:B" & i - 1 & "=""" & Suchen & """) * (1))")
    If Anzahl > 1 Then
    set rr=.Columns(2).find (suchen) 'ggf weitere Parameter für Find ergänzen
    if (rr is nothing) then
    msgbox Suchen + " gibt's 'net"
    else
    Zeile = rr.row'Zeile erster Fund
    If .Cells(Zeile, 1)  "" Then .Cells(i, 1) = .Cells(Zeile, 1).Value
    endif
    Else
    MsgBox "kein Eintrag für " & Suchen & " oberhalb Zeile " & i & " vorhanden"
    End If
    End If
    Next
    End With
    Call Filter
    End Sub
    

    Anzeige
    AW: Erklärung & Verbesserung zusätzliches Details
    20.03.2018 21:26:52
    Pascal
    Hallo Mmat
    Diesen Code funktioniert. Aber jetzt habe ich ein Problem, wo ich denke, dass es ein Detail ist.
    Der Befehl sucht in der Spalte A der oberste Wert der er in der Spalte B gespeichert hat. Aber der oberste Wert in der Spalte A kann auch leer sein. Er soll der Wert in der Spalte B mit der gespeicherten Wert von der Spalte B vergleichen & die bei der Zeile mit grösser als 1 einfügen.
    Weisst du wie ich das meine?
    Statt den obersten Wert in der Spalte A suchen, irgendwo nach einer Übereinstimmung suchen in der Spalte A.
    LG Pascal
    AW: Erklärung & Verbesserung zusätzliches Details
    21.03.2018 10:31:56
    mmat
    Hallo Pascal,
    offen gestanden verstehe ich es nicht. Ich hab eigentlich nur den etwas ungeeigneten "match" gegen eine sinnvolle Konstruktion ausgetauscht, ohne mich groß um den Rest zu kümmern.
    Ohne eine Beispielmappe komme ich hier nicht weiter.
    Anzeige
    AW: Siehe Beitrag an Werner
    21.03.2018 10:56:05
    Pascal
    Siehe Beitrag von mir an Werner. Ich weiss jetzt nicht ob Werner dran ist oder nicht.
    Hallo Werner
    Ich habe ein Beispiel erstellt.
    Ich habe verschiedene Register erstellt LBs/QuelleTest1/LB/QuelleTest2. In den Quellregister sind immer die ursprünglichen Daten zum Testen.
    Ich möchte folgendes:
    In der Spalte C hat gibt es 1*, das sind für mich wichtig, dass in diese Zeile (Spalte A) ein Wert steht, so. Wie soll Excel zu dem bestimmten Wert kommen?
    Erklärung:
    In der Spalte B hat es verschiedene Nummern, die mehrmals vorkommen.
    Jetzt soll Excel die Zahl in der Spalte B speichern, bei denen in der Spalte C mit 1 beginnt.
    Im Register kommt es vor, dass die gespeicherte Zahl im gleichem Register (Spalte B) steht & gleichzeitig in der Spalte A einen Wert aufweist. Diese Zahl von der Spalte A soll in der Zeile (wo in der Splate C mit 1 beginnt) eingefügt werden.
    Wenn der Wert in der Spalte A mehrmals vorkommen sollte, kann Excel die Unterste nehmen.
    Ich hoffe, dass ich das gut Erklärt habe.
    https://www.herber.de/bbs/user/120547.xlsb
    Anzeige
    AW: Unkorrekte VBA Fehler
    21.03.2018 12:40:41
    mmat
    Hallo Pascal,
    ich versuch das mal in eigene Worte zu packen, mal sehen ob das verstanden habe:
    - Suche in Spalte C nach einem Wert der mit 1 beginnt. = "Fundzeile"
    - Nimm den Wert aus Spalte B in der "Fundzeile" als "Suchbegriff"
    - Suche das erste Vorkommen von "Suchbegriff" in Spalte B oberhalb von Fundzeile = "1. Zeile"
    - Übertrage den Wert aus Spalte A der "1. Zeile" in Spalte A der "Fundzeile"
    - Schleife: Suche weiter in Spalte C unterhalt "Fundzeile"
    Isses das ?
    Dann hab ich 2 Problemchen
    - Was passiert wenn es den Suchbegriff nicht gibt, bleibts bei der platten Fehlermeldung wie bisher?
    - Was passiert, wenn in "1. Zeile" der Spalte A nix drin steht ?
    Anzeige
    AW: Unkorrekte VBA Fehler
    21.03.2018 15:42:48
    Pascal
    Hallo Mmat
    Suche in Spalte C nach einem Wert der mit 1 beginnt. = "Fundzeile"
    Ja das ist korrekt.
    - Nimm den Wert aus Spalte B in der "Fundzeile" als "Suchbegriff"
    Ja ist korrekt.
    - Suche das erste Vorkommen von "Suchbegriff" in Spalte B oberhalb von Fundzeile = "1. Zeile"
    Nein nicht korrekt. Für mich ist die "1. Zeile" = Ersten Fund in der Spalte A mit dem
    Suchbegriff.
    Details:
    Bei der erste Übereinstimmung vom "Suchbegriff" muss es die Spalte A
    kontrollieren, ob da einen Wert steht, wenn nein, dann weiter suchen. Das wäre korrekt.
    Das beantwortet auch die Frage: "Was passiert, wenn in "1. Zeile" der Spalte A nix drin steht ?")
    Wenn beim "Suchbegriff" in der Spalte A niergends einen Wert steht, dann muss es mir eine Meldung
    zurückgeben.

    (Das ist auch die Antwort auf: "Was passiert wenn es den Suchbegriff nicht gibt,
    bleibts bei der platten Fehlermeldung wie bisher?")
    - Übertrage den Wert aus Spalte A der "1. Zeile" in Spalte A der "Fundzeile"
    Ja ist korrekt, wenn die Erklärung oben eingehalten wird.
    - Schleife: Suche weiter in Spalte C unterhalb "Fundzeile"
    Ja ist korrekt, bis zum ende des Registers (Worksheet), wo mit 1 beginnt.
    Isses das ?
    Ja mehrheitlich hast du es verstanden.
    Dann hab ich 2 Problemchen
    - Was passiert wenn es den Suchbegriff nicht gibt, bleibts bei der platten Fehlermeldung wie bisher?
    Also das würde heissen, dass überall bei dem "Suchbegriff" in der Spalte A nix drin steht. Ja
    genau, dann muss es mir das Melden.

    - Was passiert, wenn in "1. Zeile" der Spalte A nix drin steht ?
    Dann muss es weiter suchen, bis oberhalb der "Fundzeile" in der Spalte A einen Wert drin steht.

    Anzeige
    AW: Unkorrekte VBA Fehler
    21.03.2018 17:11:33
    mmat
    so?
    Private Sub NormaleAuslieferungen_Click()
    Dim i As Double, LR As Double, SP As Integer
    Dim Suchen As String, Anzahl, Zeile As Double, rr As Range
    SP = 2 'Spalte B; zur Bestimmung letzte Zeile
    With Sheets("LBs")
    LR = .Cells(.Rows.Count, SP).End(xlUp).Row 'letzte Zeile der Spalte
    For i = 2 To LR
    If Left(.Cells(i, 3), 1) = "1" Then
    Suchen = .Cells(i, 2)
    'Ermittlung wieviele Einträge (gleiche Nr) oberhalb der Zeile vorhanden sind
    Anzahl = Evaluate("=SumProduct((B2:B" & i - 1 & "=""" & Suchen & """) * (1))")
    If Anzahl > 1 Then
    Set rr = .Columns(2).Find(Suchen) 'ggf weitere Parameter für Find ergänzen
    If (rr Is Nothing) Then
    MsgBox Suchen + " gibt's 'net"
    Else
    Zeile = rr.Row 'Zeile erster Fund
    If .Cells(Zeile, 1)  "" Then
    .Cells(i, 1) = .Cells(Zeile, 1).Value
    Else
    .Cells(i, 1) = .Cells(Zeile, 1).End(xlUp).Value
    End If
    End If
    Else
    MsgBox "kein Eintrag für " & Suchen & " oberhalb Zeile " & i & " vorhanden"
    End If
    End If
    Next
    End With
    Call Filter
    End Sub
    

    AW: Unkorrekte VBA Fehler
    22.03.2018 09:42:55
    Pascal
    Hallo Mmat
    Es ist noch nicht in Ordnung.
    Ich habe dies im Anhang beschrieben.
    Als Text:
    Ich habe herausgefunden, wenn 2x die "Fundzeile" vorkommt beim gleichem "Suchbegriff" geht er auf Fehler & gibt "Beleg" zurück. Nachdem er bei ersten "Fundzeile" übertragen hat, geht er zur nächsen "Fundzeile". Es sollte eigentlich kein Problem haben, wenn dies dann von der "Fundzeile" zur "1. Zeile" wird.
    https://www.herber.de/bbs/user/120589.xlsx
    Verstehst du es?
    LG Pascal
    bin raus
    22.03.2018 10:11:51
    mmat
    Hallo Pascal,
    sorry, aber da komm ich nicht mehr mit. Vielleicht hat einer der anderen noch eine Idee.

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige