Office: (Office 2016) Vba

Helfe beim Thema Vba in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo Zusammen, nach dem man mir nun gesagt hat Makro Aufzeichnen sei alle nicht so toll, habe ich mich echt ne Weile mit VBA auseinandergesetzt :-)... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Strolch, 27. März 2020.

  1. Strolch Erfahrener User

    Vba


    Hallo Zusammen,

    nach dem man mir nun gesagt hat Makro Aufzeichnen sei alle nicht so toll, habe ich mich echt ne Weile mit VBA auseinandergesetzt :-)

    nun habe ich die nachfolgenden Codes, der obere funktioniert super der untere nicht :-( obwohl ich ihn nur auf eine andere Liste und andere Spalten übertragen habe... Nun ist es aber so das in der Suchspalte O nicht immer Inhalte stehen, kann das der Fehler sein?

    PHP:
    Sub SVERWEIS_aus_Shoppingcart_aus_EVO()
    Debug.Print Now

    Dim i 
    As LongletzteZeile As Long
    Dim Arbeitsmappe 
    As Workbook
    Dim Datenbasis 
    As Worksheet
    Dim Ziel 
    As Worksheet
    Dim Bereich 
    As Range
    Dim ZelleFirma 
    As Range
    Dim WsF 
    As WorksheetFunction

    Set Arbeitsmappe 
    ThisWorkbook
    Set Datenbasis 
    Arbeitsmappe.Worksheets("Shoppingcart_aus_EVO")
    Set Ziel Arbeitsmappe.Worksheets("Arbeitsliste")

    letzteZeile Datenbasis.Range("K" Rows.Count).End(xlUp).Row

    Set Bereich 
    Datenbasis.Range("A1:W" letzteZeile)
    Set WsF Application.WorksheetFunction

    For 2 To Ziel.Range("K" Rows.Count).End(xlUp).Row
        On Error Resume Next
        Ziel
    .Range("F" i).Value WsF.VLookup(Ziel.Range("K" i).ValueBereich2False)
         
    Ziel.Range("C" i).Value WsF.VLookup(Ziel.Range("K" i).ValueBereich23False)
         
    Ziel.Range("J" i).Value WsF.VLookup(Ziel.Range("K" i).ValueBereich10False)
         
    Ziel.Range("L" i).Value WsF.VLookup(Ziel.Range("K" i).ValueBereich5False)
         
    Ziel.Range("O" i).Value WsF.VLookup(Ziel.Range("K" i).ValueBereich20False)
         
    Ziel.Range("N" i).Value WsF.VLookup(Ziel.Range("K" i).ValueBereich4False)
        
    Ziel.Range("G" i).Value "DG"
        
    Next i

    Debug
    .Print Now
    End Sub
    Sub SVERWEIS_SAP_Bericht
    ()
    Debug.Print Now

    Dim i 
    As LongletzteZeile As Long
    Dim Arbeitsmappe 
    As Workbook
    Dim Datenbasis 
    As Worksheet
    Dim Ziel 
    As Worksheet
    Dim Bereich 
    As Range
    Dim ZelleFirma 
    As Range
    Dim WsF 
    As WorksheetFunction

    Set Arbeitsmappe 
    ThisWorkbook
    Set Datenbasis 
    Arbeitsmappe.Worksheets("SAP_Bericht")
    Set Ziel Arbeitsmappe.Worksheets("Arbeitsliste")

    letzteZeile Datenbasis.Range("O" Rows.Count).End(xlUp).Row

    Set Bereich 
    Datenbasis.Range("A2:W" letzteZeile)
    Set WsF Application.WorksheetFunction

    For 2 To Ziel.Range("O" Rows.Count).End(xlUp).Row
        On Error Resume Next
        Ziel
    .Range("T" i).Value WsF.VLookup(Ziel.Range("O" i).ValueBereich2False)
        
    Ziel.Range("P" i).Value WsF.VLookup(Ziel.Range("O" i).ValueBereich9False)
         
    Ziel.Range("Q" i).Value WsF.VLookup(Ziel.Range("O" i).ValueBereich7False)
         
        
    Next i
     
    Debug
    .Print Now
    End Sub
    Ich hoffe hier kann mir Jemand helfen?
     
    Strolch, 27. März 2020
    #1
  2. Exl121150 Erfahrener User
    Hallo,

    die VBA-Funktion "VLookup" entspricht im Arbeitsblatt der "SVERWEIS"-Funktion und es ist klar, dass, wenn diese Funktion genau den entscheidenden Wert, nach dem sie suchen soll, nicht erhält, es zu einem Fehler kommt - im Arbeitsblatt wäre das ein "#NV" (="nicht verfügbar").

    Es gibt dann im Prinzip 2 Möglichkeiten, dieses Problem zu umschiffen:
    1. Man bettet die VLOOKUP-Funktion in eine IFNA(…)-Funktion (entspricht im Arbeitsblatt: WENNNV(…)) ein, zB.
      Code:
         '...
         [COLOR="#0000CD"][B]Dim Suche As Variant[/B][/COLOR]
         With Ziel
           For i = 2 To .Range("O" & Rows.Count).End(xlUp).Row
             On Error Resume Next
             Suche = .Range("O" & i).Value
             .Range("T" & i).Value = [COLOR="#0000CD"][B]WsF.IfNa([/B][/COLOR]WsF.VLookup(Suche, Bereich, 2, False)[COLOR="#0000CD"][B], "Leer2")[/B][/COLOR]
             .Range("P" & i).Value = [COLOR="#0000CD"][B]WsF.IfNa([/B][/COLOR]WsF.VLookup(Suche, Bereich, 9, False)[COLOR="#0000CD"][B], "Leer9")[/B][/COLOR]
             .Range("Q" & i).Value = [COLOR="#0000CD"][B]WsF.IfNa[/B][/COLOR](WsF.VLookup(Suche, Bereich, 7, False)[COLOR="#0000CD"][B], 77.5)[/B][/COLOR]
           Next i
         End With
        '...
      
    2. oder aber du überprüfst bereits die Variant-Variable "Suche", ob sie einen Leer-Wert hat mit einer der Funktionen:
      IsEmpty(Suche) oder IsNull(Suche) oder Len(Suche)=0
      Code:
         '....
         [COLOR="#0000CD"][B]Dim Suche As Variant[/B][/COLOR]
         With Ziel
           For i = 2 To .Range("O" & Rows.Count).End(xlUp).Row
             On Error Resume Next
             Suche = .Range("O" & i).Value
             [COLOR="#0000CD"][B]If IsEmpty(Suche) Then Suche = "LeerWert"[/B][/COLOR]
             .Range("T" & i).Value = WsF.VLookup(Suche, Bereich, 2, False)
             .Range("P" & i).Value = WsF.VLookup(Suche, Bereich, 9, False)
             .Range("Q" & i).Value = WsF.VLookup(Suche, Bereich, 7, False)
           Next i
         End With
        '....
      
     
    Exl121150, 28. März 2020
    #2
  3. Strolch Erfahrener User
    Huhu vielen Dank für deine Hilfreichen Antworten, ich werde es gleich mal ausprobieren welche Variante für mich die Sinnvollste ist, aber tausend Dank....
     
    Strolch, 30. März 2020
    #3
  4. Strolch Erfahrener User

    Vba

    Ich Danke dir sehr das hat super geklappt :-)
     
    Strolch, 31. März 2020
    #4
Thema:

Vba

Die Seite wird geladen...
  1. Vba - Similar Threads - Vba

  2. VBA: Spalten auf anderen Worksheeds in der Mappe ausblenden.

    in Microsoft Excel Hilfe
    VBA: Spalten auf anderen Worksheeds in der Mappe ausblenden.: Hallo zusammen, Eine Tabelle mit 9 Worksheets, Datenblatt, Studien, Studie_1 ...Studie_7. Auf dem Deckblatt werden in Zelle B4-B10 die Namen der Studien eingetragen. Davon abhängig ob ein Name...
  3. VBA Zeilen kopieren mit Bedingung

    in Microsoft Excel Hilfe
    VBA Zeilen kopieren mit Bedingung: Hallo zusammen, Ich möchte per Makro Zeilen aus Tabelle2 in Tabelle3 kopieren, wenn eine Bedingung erfüllt ist. Bedingung: Der Wert in Spalte E (Tabelle2) kommt in Tabelle1 in Spalte E vor....
  4. VBA - Datensätze ans Ende einer anderen Tabelle kopieren

    in Microsoft Excel Hilfe
    VBA - Datensätze ans Ende einer anderen Tabelle kopieren: Hallo zusammen, ich habe gerade eine "Abrechnungs"-Datei für einen Kindergartenbasar erstellt. Es wäre klasse, wenn man per Schaltfläche die Datensätze aus der Tabelle "Kaeufer" ans Ende der...
  5. Laufzeitfehler 9 VBA

    in Microsoft Excel Hilfe
    Laufzeitfehler 9 VBA: Nschdem ich die Office Version von 2010 auf 2019 aktualisiert habe wird mir der Laufzeitfehler 9 ausgegeben. Das ist der Code Sub FiberCollect() Dim NumRows As Long 'letzte celle Dim Counter As...
  6. Excel VBA Spalten mit Ordnerinhalt vergleichen

    in Microsoft Excel Hilfe
    Excel VBA Spalten mit Ordnerinhalt vergleichen: Hallo, Bin ehr Excel VBA Neuling, Würde aber gerne in einer bestehender Tabelle die Auflistung der Ordner mit dem eigentlichen Stand in den besagten Ordner kontrollieren. Also in der Spalte Q10...
  7. VBA - letzte nicht-leere Spalte

    in Microsoft Excel Hilfe
    VBA - letzte nicht-leere Spalte: Moin, liebe VBA-Spezis, mit Cells(99, Columns.Count).End(xlToLeft).Column bestimme ich die Spaltenzahl der letzten benutzten Zelle in Zeile 99. Soweit, so klar. Nun habe ich aber Formeln in...
  8. Summieren farbiger Zahlen anhand des Farbcodes ohne VBA

    in Microsoft Excel Hilfe
    Summieren farbiger Zahlen anhand des Farbcodes ohne VBA: Hallo liebes Forum, welche Formel muss ich eingeben, wenn ich farbige Ziffern (z.B. rot = Farbcode 3; grün = 4) addieren möchte. Danke im voraus für die schnelle Antwort Gruß mfkathie
  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