Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Spalte durchsuchen ob Wert vorhanden

VBA Spalte durchsuchen ob Wert vorhanden
26.11.2018 11:40:14
Christian
Hallo Forum,
ich würde gerne eine Art Prüfung vor dem endgültigen Ausführen eines Befehls einbauen.
Ich klicke auf einen CB-Button und dann soll VBA zunächst Spalte B von einem bestimmten WB durchsuchen, ob Eingabe bereits vorhanden ist.
Quasi so:
Private Sub CommandButton1_Click()
Set wkbZiel = Application.Workbooks("...")
With ThisWorkbook.Sheets("...")
If .Range ("B1").Value = 'innerhalb wbkZiel.Worksheets("...").Column(2) ' Spalte B
Then MsgBox ...
Exit Sub
End If
End With
Vielen Dank im Voraus für die Hilfe :-)!
LG,
Christian
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Spalte durchsuchen ob Wert vorhanden
26.11.2018 11:45:00
Daniel
Hi
kannst du beispielsweise mit ZählenWenn (in VBA Worksheetfunction.CountIF) prüfen:
if Worksheetfunction.Countif(wbkZiel.Worksheets("...").Columns(2), .Range ("B1").Value) Then
im IF wird 0 wie FALSE und jeder andere Zahlenwert wie TRUE gewertet.
Gruß Daniel
Anzeige
AW: VBA Spalte durchsuchen ob Wert vorhanden
26.11.2018 13:53:45
Christian
Hi Daniel,
vielen Dank für die schnelle Hilfe!
Leider scheitere ich an der Umsetzung als "VBA-Noob".
Mein Code ist nachfolgender und meckert bzgl. "wkbZiel.Open", und der erste Teil funktioniert auch nicht, es erfolgt keine MsgBox obwohl IF wahr ist.
Bin damit etwas überfordert ...
Private Sub CommandButton1_Click()
Dim wkbZiel As Workbooks
Set wkbZiel = Workbooks("\\XYZ\server01\FO\ÜbersichtGes.xlsm")
With ThisWorkbook.Sheets("FOX")
If WorksheetFunction.CountIf(wbkZiel.Worksheets("Übersicht1").Columns(2), .Range("B1"). _
Value) Then
MsgBox "...", vbExclamation, "Hinweis"
Exit Sub
End If
If MsgBox("...", vbYesNo, "Bestätigung") = vbYes Then
wkbZiel.Open
With wkbZiel.Worksheets("Übersicht1")
.Rows("2:2").Insert Shift:=xlUp
.Range("A2").Value = Range("R1").Value
End With
wkbZiel.Close True
End If
End With
End Sub
LG,
Christian
Anzeige
AW: VBA Spalte durchsuchen ob Wert vorhanden
26.11.2018 14:00:39
Daniel
Hi
das ganze funktioniert so nur, wenn du zuerst die Datei öffnest, da du in VBA sowieso nur mit geöffneten Dateien arbeiten kannst.
auch ein Set wkbZiel = Workbooks(...) geht nur mit einer geöffneten Datei, bzw gleichzeitig mit dem Öffnen der Datei.
korrekt wäre am Anfang ein, damit öffnest du die Datei und weist sie gleich einer Variablen zu.
Set wbkZiel = Workbooks.Open("\\XYZ\server01\FO\ÜbersichtGes.xlsm")

wenn du vor dem Öffnen überprüfen willst, ob ein Wert in einer Spalte vorkommt, dann musst du das entsprechende ZählenWenn mit dem Externen Zellbezug in eine Zelle schreiben und diese Zelle abfragen.
Gruß Daniel
Anzeige
Danke, Daniel!
26.11.2018 15:52:02
Christian
Hi Daniel,
danke für deine Hilfe & deine Erläuterung!
LG,
Christian
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

VBA: Spalte durchsuchen, ob Wert vorhanden ist


Schritt-für-Schritt-Anleitung

Um in Excel VBA zu prüfen, ob ein Wert in einer bestimmten Spalte vorhanden ist, kannst du die WorksheetFunction.CountIf-Funktion verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne dein Excel-Dokument und öffne den VBA-Editor mit ALT + F11.
  2. Füge einen Button (CommandButton) in dein Arbeitsblatt ein.
  3. Doppelklicke auf den Button, um den Code-Editor für den Button zu öffnen.
  4. Gib den folgenden Code ein:
Private Sub CommandButton1_Click()
    Dim wbkZiel As Workbook
    Set wbkZiel = Workbooks.Open("\\XYZ\server01\FO\ÜbersichtGes.xlsm")

    With ThisWorkbook.Sheets("FOX")
        If WorksheetFunction.CountIf(wbkZiel.Worksheets("Übersicht1").Columns(2), .Range("B1").Value) > 0 Then
            MsgBox "Der Wert ist bereits vorhanden!", vbExclamation, "Hinweis"
            Exit Sub
        End If

        If MsgBox("Wert hinzufügen?", vbYesNo, "Bestätigung") = vbYes Then
            With wbkZiel.Worksheets("Übersicht1")
                .Rows("2:2").Insert Shift:=xlUp
                .Range("A2").Value = .Range("R1").Value
            End With
            wbkZiel.Close True
        End If
    End With
End Sub
  1. Teste den Button in deinem Arbeitsblatt.

Häufige Fehler und Lösungen

  • Problem: MsgBox wird nicht angezeigt, obwohl der Wert vorhanden ist.

    • Lösung: Stelle sicher, dass der Pfad zur Arbeitsmappe korrekt ist und dass die Arbeitsmappe geöffnet wird, bevor du die Spalte überprüfst.
  • Problem: wkbZiel.Open wird nicht erkannt.

    • Lösung: Verwende Set wbkZiel = Workbooks.Open("Pfad") anstelle von Set wbkZiel = Workbooks(...).

Alternative Methoden

Eine weitere Methode, um zu prüfen, ob ein Wert in einer Spalte vorhanden ist, ist die Verwendung von Schleifen:

Dim cell As Range
Dim found As Boolean
found = False

For Each cell In wbkZiel.Worksheets("Übersicht1").Columns(2).Cells
    If cell.Value = .Range("B1").Value Then
        found = True
        Exit For
    End If
Next cell

If found Then
    MsgBox "Der Wert ist vorhanden!"
End If

Diese Methode kann nützlich sein, wenn du mehr Flexibilität bei der Überprüfung benötigst.


Praktische Beispiele

  1. Überprüfen, ob ein Wert in zwei Spalten vorkommt:
If WorksheetFunction.CountIfs(wbkZiel.Worksheets("Übersicht1").Columns(2), .Range("B1").Value, wbkZiel.Worksheets("Übersicht1").Columns(3), .Range("C1").Value) > 0 Then
    MsgBox "Wert in beiden Spalten vorhanden!"
End If
  1. Zahlenwerte prüfen:
If WorksheetFunction.CountIf(wbkZiel.Worksheets("Übersicht1").Columns(2), .Range("B1").Value) > 0 Then
    MsgBox "Die Zahl ist vorhanden!"
End If

Tipps für Profis

  • Verwende Option Explicit: Dies zwingt dich, alle Variablen zu deklarieren, was Fehler reduziert.
  • Fehlerbehandlung: Implementiere On Error Resume Next, um unerwartete Fehler zu handhaben.
  • Verwende Named Ranges: Dies macht deinen Code lesbarer und einfacher zu warten, besonders wenn du oft auf die gleichen Daten zugreifen musst.

FAQ: Häufige Fragen

1. Wie kann ich prüfen, ob ein Wert in einer Liste vorhanden ist?
Verwende die CountIf-Funktion, um zu prüfen, ob der Wert in der Liste vorkommt.

2. Was mache ich, wenn die Arbeitsmappe nicht öffnet?
Überprüfe den Pfad zur Datei und stelle sicher, dass die Datei nicht bereits geöffnet ist.

3. Kann ich auch mehrere Spalten gleichzeitig prüfen?
Ja, du kannst CountIfs verwenden, um mehrere Bedingungen zu prüfen.

4. Wie kann ich sicherstellen, dass mein Code effizient ist?
Vermeide unnötige Schleifen und verwende stattdessen Excel-Funktionen, die in VBA aufgerufen werden können.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige