Microsoft Excel

Herbers Excel/VBA-Archiv

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

VBA: UF Application.Match


Betrifft: VBA: UF Application.Match von: Charly
Geschrieben am: 25.09.2019 01:39:41

Hallo,

Ich möchte in einem bestimmten Bereich, Werte in die Tabelle eintragen.

Mein Problem:
Per OB1 wähle Ich den Bereich aus u. lasse in der nächsten Freien Zeile Schreiben. Das Funktioniert auch!
Wenn Ich aber OB2 Auswähle, wird nicht in die Tabelle Geschrieben.

Anmerkung zu den OptionButtons:
OB1 = Springe in Zeile 5, ab Zeile 6-404 in letzte Freie Zeile Schreiben (Bereich 1)
OB2 = Springe in Zeile 408, ab Zeile 409-807 in letzte Freie Zeile Schreiben (Bereich 2)
-- Innerhalb dieser Bereiche wird immer eine Zeile beim Schreiben Übersprungen --.

Erläuterung der UF:
In der UF habe Ich eine Vorauswahl über zwei ComoboBoxen mit je einem Wert, anhand dieser Werte werden andere Werte gesucht u. in die UF geladen.
Anschließend Ergänze Ich die noch fehlenden Werte.
Per OptionButton soll dann in einem bestimmten Bereich in der Tabelle diese Werte Eingetragen werden.
Per Button würd der Befehl zum Schreiben ausgelöst. Der Code zum Schreib liegt in einem Modul u. wird per Call aufgerufen.

Das ist der Code wenn OB1 Ausgewählt wurde. Dieser läuft auch!

Sub Bereich_WB1()
    '
    ThisWorkbook.Activate '<< Mappe_Aus!
    '
    Dim sh1 As Worksheet, n1 As Long
    '
    Set sh1 = ThisWorkbook.Sheets("Aus")
    n1 = Application.Match(VBA.CLng(UF5_ID_Auslagern.CB_ID_Aus.Value), sh1.Range("C:C"), 0)
    '
    sh1.Unprotect "1234"
    sh1.Range("E" & n1).Value = UF5_ID_Auslagern.CB_WB.Value
    sh1.Range("G" & n1).Value = UF5_ID_Auslagern.CB_Zi.Value
    sh1.Range("I" & n1).Value = UF5_ID_Auslagern.TB_Name.Value
    sh1.Range("J" & n1).Value = UF5_ID_Auslagern.TB_Geb.Value
    sh1.Range("L" & n1).Value = UF5_ID_Auslagern.TB_Kasse.Value
    sh1.Range("M" & n1).Value = UF5_ID_Auslagern.TB_Privat.Value
    sh1.Range("Q" & n1).Value = UF5_ID_Auslagern.CB_Art
    sh1.Range("S" & n1).Value = UF5_ID_Auslagern.TB_Lieferand.Value
    sh1.Range("U" & n1).Value = UF5_ID_Auslagern.TB_LData.Value
    sh1.Range("W" & n1).Value = UF5_ID_Auslagern.TB_Herst.Value
    sh1.Range("Y" & n1).Value = UF5_ID_Auslagern.TB_Model.Value
    sh1.Range("AA" & n1).Value = UF5_ID_Auslagern.TB_Stre.Value
    sh1.Range("AC" & n1).Value = UF5_ID_Auslagern.TB_SN.Value
    sh1.Range("AE" & n1).Value = UF5_ID_Auslagern.TB_Reg.Value
    sh1.Range("AG" & n1).Value = UF5_ID_Auslagern.TB_Reh.Value
    sh1.Range("AK" & n1).Value = UF5_ID_Auslagern.TB_GeDate2.Value
    sh1.Range("AM" & n1).Value = UF5_ID_Auslagern.CB_änGrund.Value
    sh1.Range("AQ" & n1).Value = UF5_ID_Auslagern.CB_Abholer.Value
    sh1.Range("AS" & n1).Value = UF5_ID_Auslagern.TB_AbDate.Value
    sh1.Protect "1234"
    '
    ' UF-Inhalte werden zurückgesetzt
    Call Löschen.Inhalt_Löschen
    '
    ' Nachricht
    MsgBox "Eingabe wurde Übernommen", vbInformation
    '
    Application.ScreenUpdating = False
    ThisWorkbook.Save
    'ThisWorkbook.Close
    '
    'Workbooks("Mappe_RO.xlsm").Activate
    Application.ScreenUpdating = True
    '
End Sub
Das ist der Code wenn OB2 Ausgewählt wurde. Hier haperts.
Sub Bereich_WB2()
    '
    ThisWorkbook.Activate '<< Mappe_Aus!
    '
    Dim sh2 As Worksheet, n2 As Long
    '
    Set sh2 = ThisWorkbook.Sheets("Aus")
    n2 = Application.Match(VBA.CLng(UF5_ID_Auslagern.CB_ID_Aus.Value), sh2.Range("C:C"), 0)
    
    sh2.Unprotect "1234"
    sh2.Range("E" & n2).Value = UF5_ID_Auslagern.CB_WB.Value
    sh2.Range("G" & n2).Value = UF5_ID_Auslagern.CB_Zi.Value
    sh2.Range("I" & n2).Value = UF5_ID_Auslagern.TB_Name.Value
    sh2.Range("J" & n2).Value = UF5_ID_Auslagern.TB_Geb.Value
    sh2.Range("L" & n2).Value = UF5_ID_Auslagern.TB_Kasse.Value
    sh2.Range("M" & n2).Value = UF5_ID_Auslagern.TB_Privat.Value
    sh2.Range("Q" & n2).Value = UF5_ID_Auslagern.CB_Art
    sh2.Range("S" & n2).Value = UF5_ID_Auslagern.TB_Lieferand.Value
    sh2.Range("U" & n2).Value = UF5_ID_Auslagern.TB_LData.Value
    sh2.Range("W" & n2).Value = UF5_ID_Auslagern.TB_Herst.Value
    sh2.Range("Y" & n2).Value = UF5_ID_Auslagern.TB_Model.Value
    sh2.Range("AA" & n2).Value = UF5_ID_Auslagern.TB_Stre.Value
    sh2.Range("AC" & n2).Value = UF5_ID_Auslagern.TB_SN.Value
    sh2.Range("AE" & n2).Value = UF5_ID_Auslagern.TB_Reg.Value
    sh2.Range("AG" & n2).Value = UF5_ID_Auslagern.TB_Reh.Value
    sh2.Range("AK" & n2).Value = UF5_ID_Auslagern.TB_GeDate2.Value
    sh2.Range("AM" & n2).Value = UF5_ID_Auslagern.CB_änGrund.Value
    sh2.Range("AQ" & n2).Value = UF5_ID_Auslagern.CB_Abholer.Value
    sh2.Range("AS" & n2).Value = UF5_ID_Auslagern.TB_AbDate.Value
    sh2.Protect "1234"
    '
    ' UF-Inhalte werden zurückgesetzt
    Call Löschen.Inhalt_Löschen
    '
    ' Nachricht
    MsgBox "Eingabe wurde Übernommen", vbInformation
    '
    Application.ScreenUpdating = False
    ThisWorkbook.Save
    'ThisWorkbook.Close
    '
    'Workbooks("Mappe_RO.xlsm").Activate
    Application.ScreenUpdating = True
    '
End Sub

  

Betrifft: AW: VBA: UF Application.Match von: Hajo_Zi
Geschrieben am: 25.09.2019 05:40:25

frage jemand der neben Dir sitzt der sieht die Datei.
Die meisten hier sehen Sie nicht.
Da Sie nicht auf Deinen Rechner schauen.
Vielleicht sollte die Datei verlinkt werden?

Der Name einer hochgeladenen Mappe wird im Beitrag automatisch angezeigt, sodass es bei Verwendung von aussagekräftigen Namen leichter fällt, sie später im Ablageordner wiederzufinden und sie gedanklich einem bestimmten Thema zuzuordnen. Namen wie Muster*, Test*, Mappe*, Beispiel*, Fehler*, Kalender*, UserForm*, Forum* usw. sind so allgemein, dass eine Zuordnung zu einem Thema unmöglich gemacht wird.
Es sollte ein aussagekräftiger Name sein.

Das ist nur meine Meinung zu dem Thema.

Benutze hier im Forum die Funktion zum hochladen. Falls Du die nicht benutzen möchtest beachte, von unsicheren Servern wie z.B. www.file-upload.net lade ich keine Datei runter. (lt. Einschätzung meines Virenprogramms)

GrußformelHomepage


  

Betrifft: AW: VBA: UF Application.Match von: Charly
Geschrieben am: 25.09.2019 05:50:24

Alle Mappen sind miteinander Verknüpft

Mappe_ori: Start-Mappe (Verweise)
https://www.herber.de/bbs/user/132179.xlsm
Mappe_RO: Verweise
https://www.herber.de/bbs/user/132180.xlsm
Mappe_Aus:
https://www.herber.de/bbs/user/132181.zip


  

Betrifft: AW: VBA: UF Application.Match von: Charly
Geschrieben am: 25.09.2019 06:07:16

Der Fehler ist in der UF5_ID_Austragen, in der Mappe_Aus.

Danke für deine Hilfe.

Gruß Charly


  

Betrifft: AW: VBA: UF Application.Match von: Charly
Geschrieben am: 25.09.2019 08:04:25

An alle die helfen wollen,

Wie bereits erwähnt sind Verweise zu allen Mappen im VBA hinterlegt.
Es würde nur zu Fehlermeldungen kommen, wenn Ich nur die Mappe mit dem Problem Hochlande.
Darum diese drei Mappen um den richtigen Ablauf der UF zu gewährleisten.

Dies ist die Hauptmappe, Dateiname "Mappe_ori.xlsm" in ihr sind zwei Tab´s "Eingabe, Werte".
Die Tabelle "Werte" ist als Quelle (Verweis) in den anderen Mappen hinterlegt.
Alle weiteren Mappen werden über Tab: Eingabe geöffnet.
https://www.herber.de/bbs/user/132179.xlsm

Diese Mappe ist eine Daten-Mappe, Dateiname "Mappe_RO.xlsm" aus Ihr werden per UF die Werte gesucht.
https://www.herber.de/bbs/user/132180.xlsm

Nun zur eigentlichen Mappe ebenfalls eine Daten-Mappe, Dateiname "Mappe_Aus.xlsm".
Hier werden die gesuchten Werte aus Mappe_RO.xlsm eingelesen, dazu kommen manuelle Werte
die der Benutzer selbst eingibt.

Hier tritt der Beschriebene Fehler auf.
UF: UF5_ID_Austragen, Modul: M_UF5_Wirting, über den Button (Auslagern_Kann gelöscht werden) im Tab "Aus" kann man die UF aufrufen.

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

Gruß Charly


  

Betrifft: AW: VBA: UF Application.Match von: Luschi
Geschrieben am: 25.09.2019 10:35:19

Hallo Charly

in der Vba-Hilfe steht, daß Application.Match(...) einen Fehlerwert zurückliefert, wenn der _ Suchwert nicht gefunden wird (aus welchem Grunde auch immer!). Dieser paßt natürlich nicht in eine Long-Variable, deshalb mache ich das so:

Sub test1()
    Dim v As Variant
    
    v = Application.Match(VBA.CLng("5"), ThisWorkbook.Worksheets("Tabelle1").Range("B:B"), 0)
    If VarType(v) = vbError Then   '10
       MsgBox "Wert '5' nicht gefunden!"
       Err.Clear
       Exit Sub
    Else
       Debug.Print v, VarType(v), "Hurra... gefunden!"
    End If
   '' und hier geht's weiter
End Sub

Gruß von Luschi
aus klein-Paris

PS: der Rückgabetyp bei 'GEFUNDEN' ist nicht 'Long' sondern 'Double'.
    Vervollständige in jedem Modul zu Beginn den Eintrag 'Option Explicit'
    bzw. setzt das Häckchen zu dieser Option unter Extras-Optionen 'Variablendeklaration  _
erforderlich'
    Verwende bitte öffentliche Objektvariablen, die dann im gesamten Projekt verwendet werden
    Dim wbA As Workbook
    Set wbA = Workbooks.Open(Filename:="P:\Doku2\Mappe_RO.xlsm")



  

Betrifft: AW: VBA: UF Application.Match von: Matthias
Geschrieben am: 25.09.2019 11:17:12

Moin!
Kannst du mal dein Vorgehen an einem Beispel beschreiben!? ALso nur kurz in Stichpunkten was du anklickst bzw. auswählst. Und nur kurz wo es deiner Meinung nach dann hinsollte.
Habe mal schnell geschaut. Also der Code funktioniert. Habe in der Form manuell was eingegeben und er hat es auch eingetragen. DAnn habe ich mal was ausgewählt (ist aber nur aus dem Bereic WB1). Das hat er auch wieder richtig eingetragen. Kann deshalb nicht nachvollziehen, was falsch wäre.
VG


  

Betrifft: AW: VBA: UF Application.Match von: Charly
Geschrieben am: 25.09.2019 19:01:13

Hallo Matthias,

Dann habe ich mal was ausgewählt (ist aber nur aus dem Bereic WB1).
Das hat er auch wieder richtig eingetragen. Kann deshalb nicht nachvollziehen, was falsch wäre.

Unter Verwendung von WB1 klappt es auch one Probleme.
Allerdings wenn man WB2, WB3 od. Haus auswählt, dann Erscheint die Fehlermeldung.


  

Betrifft: AW: VBA: UF Application.Match von: Charly
Geschrieben am: 25.09.2019 19:01:31

Hallo Matthias,

Dann habe ich mal was ausgewählt (ist aber nur aus dem Bereic WB1).
Das hat er auch wieder richtig eingetragen. Kann deshalb nicht nachvollziehen, was falsch wäre.

Unter Verwendung von WB1 klappt es auch one Probleme.
Allerdings wenn man WB2, WB3 od. Haus auswählt, dann Erscheint die Fehlermeldung.

Gruß Charly


  

Betrifft: AW: VBA: UF Application.Match von: Charly
Geschrieben am: 25.09.2019 19:02:02

Hallo Matthias,

Dann habe ich mal was ausgewählt (ist aber nur aus dem Bereic WB1).
Das hat er auch wieder richtig eingetragen. Kann deshalb nicht nachvollziehen, was falsch wäre.

Unter Verwendung von WB1 klappt es auch one Probleme.
Allerdings wenn man WB2, WB3 od. Haus auswählt, dann Erscheint die Fehlermeldung.

Gruß Charly


  

Betrifft: AW: VBA: UF Application.Match von: Charly
Geschrieben am: 25.09.2019 19:09:12

Hallo Matthias,

Dann habe ich mal was ausgewählt (ist aber nur aus dem Bereic WB1).
Das hat er auch wieder richtig eingetragen. Kann deshalb nicht nachvollziehen, was falsch wäre.

Unter Verwendung von WB1 klappt es auch one Probleme.
Allerdings wenn man WB2, WB3 od. Haus auswählt, dann Erscheint die Fehlermeldung.

Gruß Charly


  

Betrifft: AW: VBA: UF Application.Match von: Charly
Geschrieben am: 25.09.2019 19:28:05

Sorry für den mehrfach Post, dacht der Beitrag wurde nicht gesendet als Ich Absenden geklickt habe.


  

Betrifft: AW: VBA: UF Application.Match von: Charly
Geschrieben am: 25.09.2019 19:33:52

Sorry für den mehrfach Post, dacht der Beitrag wurde nicht gesendet als Ich Absenden geklickt habe.


  

Betrifft: AW: VBA: UF Application.Match von: Matthias
Geschrieben am: 25.09.2019 22:13:03

Moin!
Meinst du den Laufzeitfehler Index... ?
Das liegt m.E. daran, dass du nicht richtig referenziert hast. Du hast ja 3 Dateien auf aber sprichst nicht alle gezielt mit dem Mappennamen an. Wenn der fehlt, wird die aktuelle Datei (die aktiv ist) genommen. Und wenn es dort das angesprochene Blatt nicht gibt, kommt ein Fehler.
Bei der ID_Change solltest du die Suche (countif) in Spalte 3 jeweils so eintragen:

Workbooks("Mappe_Aus.xlsm").Worksheets("Aus").Columns(3)

VG


  

Betrifft: AW: VBA: UF Application.Match von: Charly
Geschrieben am: 26.09.2019 05:39:06

Hallo Matthias,

danke für den Hinweis, werde dies Berücksichtigen.

Gruß Charly