online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon DOMMEl vom 01.12.2021, 20:13 Options

Lösung

Spalte nach Wort durchsuchen VBA Code

Hallo ihr Lieben,

ich habe noch folgende Frage:

Ich suche einen VBA Code der folgendes ausführt.

Er soll den Inhalt einer bestimmten Spalte durchsuchen.
Dies nach dem Inhalt eines vorher festgelegten Feldes.
Wenn die Nr gefunden wurde in der Spalte soll keine Meldung erscheinen. Wenn er die Nummer allerdings nicht findet in der Spalte, soll eine meldung erscheinen.

Bsp:

In Feld A1 im Tabellenblatt "Hallo" steht 12345

in einem anderen Tabellenblatt "Hauptdatei" in Spalte 1 stehen viele Zahlen untereinander

89789
234745
203814
12345

Der Code soll die Spalte durchsuchen nach dem Feld A1 (12345)
Da er was gefunden hat erscheint Keine Meldung.

Steht jetzt im Feld A1 z.b. 99999 und er durchsucht die Spalte findet er natürlich nichts. Als Meldung soll dann erscheinen: "Nr nicht vorhanden ... Neu anlegen".


Ich weiß leider nicht, wie ich das am besten in einen VBA Code packen kann, sodass er funktioniert.

Vielen Dank für eure Hilfe schonmal im Voraus.

Gruß Dominik


Antwort schreiben

Antwort 1 von fedjo vom 02.12.2021, 17:22 Options

Hallo Dominik,
Code in Tabelle2 einfügen.

Kann gelöscht werden nach dem Testen:
MsgBox "Eintrag vorhanden"


Sub Finden()
Dim c, firstAddress
Dim strSuch As String, rngBer As Range
Set rngBer = Sheets("Tabelle2").Range("A1:A" & Range("A65536").End(xlUp).Row)
With rngBer
strSuch = Sheets("Tabelle1").Range("A1").Value
If strSuch = "" Then
Exit Sub
End If
Set c = .Find(strSuch, LookIn:=xlValues)
If c Is Nothing Then
MsgBox "Eintrag nicht vorhanden"
Else
firstAddress = c.Address
Do
MsgBox "Eintrag vorhanden"
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
End Sub

Gruß
fedjo

Antwort 2 von Charlotte_S vom 02.12.2021, 18:40 Options

Hallo Dominik,

hier ein weiterer Vorschlag (- früher angefangen, aber später fertig geworden als fedjo/AW1):

Sub Spalte_durchsuchen()

Dim Suche As Range
Dim SuchSpalte As Integer, SuchZeileVon As Integer, SuchZeileBis As Integer, SuchNummer As Integer
Dim SuchWertZelle As String

'### Diese Werte anpassen ###
SuchSpalte = 28
SuchZeileVon = 1
SuchZeileBis = ThisWorkbook.Worksheets("Tabelle1").Cells(Rows.Count, SuchSpalte).End(xlUp).Row
SuchWertZelle = "A1"
'### Diese Werte anpassen ###

SuchNummer = CInt(Worksheets("Tabelle1").Range(SuchWertZelle).Value)
Set Suche = ThisWorkbook.Worksheets("Tabelle1").Range(Cells(SuchZeileVon, SuchSpalte), _
Cells(SuchZeileBis, SuchSpalte)).Find(SuchNummer, LookIn:=xlValues)

If Suche Is Nothing Then
  MsgBox "Nichts gefunden!", , "Suche nach: " & CStr(SuchNummer)
'Else
'  MsgBox "Gefunden in " & Chr((Suche.Column Mod 26) + 64) & CStr(Suche.Row) & ".", , _
'  "Suche nach: " & CStr(SuchNummer)
End If

End Sub 

MfG Charlotte

Antwort 3 von Beverly vom 02.12.2021, 19:04 Options

Hi Dominik,

wenn der Suchbegriff nur einmalig in Spalte A vorkommt, geht es auch auf diese Weise:

Sub Suche()
    Dim loZeile As Long
    On Error Resume Next
    loZeile = Application.Match(Worksheets("Hallo").Range("A1"), Worksheets("Hauptdatei").Columns("A"), 0)
    On Error GoTo 0
    If loZeile = 0 Then
        MsgBox "Nr nicht vorhanden ... Neu anlegen"
    End If
End Sub


Bis später,
Karin

Antwort 4 von DOMMEl vom 02.12.2021, 21:01 Options

Deins funktioniert wie die anderen auch ... BESTENS...

Ich habe jetzt folgenden Gesamtcode


Sub Kundennummer_in_Hauptdatei_hinzufügen()

Dim loZeile As Long
On Error Resume Next
loZeile = Application.Match(Worksheets("Kundennummer neu").Range("B4"), Worksheets("Kundenstamm").Columns("A"), 0)
On Error GoTo 0
If loZeile = 0 Then
MsgBox "Diese Kundennummer ist im Kundenstamm nicht mit Daten hinterlegt, sodass keine allgemeinen Kundendaten erscheinen. Bitte legen Sie einen neuen Kundensatz an im Kundenstamm oder aktualisieren Sie den gesamten Kundenstamm!"
End If


Dim lngFirstRow As Long
Application.ScreenUpdating = False
'erste freie Zelle in Blatt "Hauptdatei" ermitteln
lngFirstRow = Sheets("Hauptdatei").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
'Wert aus Blatt "Kundennummer" Zelle B4 kopieren...
Sheets("Kundennummer neu").Range("B4").Copy
'und in Blatt "Hauptdatei" erste freie Zelle Spalte A einfügen
Sheets("Hauptdatei").Range("A" & lngFirstRow).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
MsgBox "Eintrag erfolgreich hinzugefügt", vbInformation, "Meldung..."
End Sub



EINE KLEINE FRAGE NOCH:

Was muss ich hinzufügen an "Befehlen", dass wenn der nach der Ausführung des ersten Befehls bei (Miss)Erfolg nicht mehr den zweiten Teil durchführt?? Also wenn er nix findet soll er den zweiten Teil ignorieren.

Antwort 5 von Beverly vom 02.12.2021, 23:01 OptionsLösung

Lösung
Hi Dominik,

mal ungetestet:
Sub Kundennummer_in_Hauptdatei_hinzufügen()
    Dim lngFirstRow As Long
    Dim loZeile As Long
    On Error Resume Next
    loZeile = Application.Match(Worksheets("Kundennummer neu").Range("B4"), Worksheets("Kundenstamm").Columns("A"), 0)
    On Error GoTo 0
    If loZeile = 0 Then
        MsgBox "Diese Kundennummer ist im Kundenstamm nicht mit Daten hinterlegt, sodass keine allgemeinen Kundendaten erscheinen. Bitte legen Sie einen neuen Kundensatz an im Kundenstamm oder aktualisieren Sie den gesamten Kundenstamm!"
    Else
        Application.ScreenUpdating = False
        'erste freie Zelle in Blatt "Hauptdatei" ermitteln
        lngFirstRow = Sheets("Hauptdatei").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
        'Wert aus Blatt "Kundennummer" Zelle B4 kopieren...
        Sheets("Kundennummer neu").Range("B4").Copy
        'und in Blatt "Hauptdatei" erste freie Zelle Spalte A einfügen
        Sheets("Hauptdatei").Range("A" & lngFirstRow).PasteSpecial Paste:=xlPasteValues
        Application.CutCopyMode = False
        MsgBox "Eintrag erfolgreich hinzugefügt", vbInformation, "Meldung..."
    End If
End Sub

Bis später,
Karin

Antwort 6 von DOMMEl vom 02.12.2021, 23:41 Options

funktioniert leider nicht...

da müsste irgendeine "ausschlussklausel" rein, dass sobald die meldung erscheint er den rest nicht mehr ausgibt. aber kp wie die heißen soll

Antwort 7 von DOMMEl vom 02.12.2021, 23:44 Options

TSchuldige...

Danke für den Code er funktioniert.
Super!!

Schönen Abend noch

Ähnliche Themen

Formatierung einer Spalte per VBA
sphaze  05.08.2008 - 15 Hits - 1 Antwort

Werte einer spalte per VBA addieren
nok106  27.08.2008 - 21 Hits - 4 Antworten

Spalte durchsuchen und text ausgeben
joschi123  25.06.2009 - 156 Hits - 1 Antwort

Ergänzung zu VBA Code
DOMMEl  04.10.2009 - 324 Hits - 22 Antworten

VBA Code / Makro
DOMMEl  08.10.2009 - 186 Hits - 3 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 01:23:17 2026