Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Wert aus Zelle in Spalte suchen

VBA Wert aus Zelle in Spalte suchen
07.04.2020 20:28:34
Andreas
Hallo, ich habe kaum Kenntnisse in VBA stehe vor einem Problem, was ich trotz viel recherche nicht lösen konnte.
Folgendes soll mein Makro können:
1. Soll im Tabellenblatt "Start" der Wert in der Zelle F9 kopiert werden. In der Zelle F9 ist eine Formel hinterlegt, ich möchte aber nur den entsprechenden Wert suchen. Der Wert ist im Format "12.345.678 - 01" abgelegt.
2. Dieser Wert soll auf dem Tabellenblatt "Daten" in der Spalte F gesucht werden und anschl. markiert werden.
3. Die Zellen in den Spalten H bis S in der gleichen Zeile wie die Mrkierte sollen kopiert werden.
4. Anschl. sollen diese kopierten Zellen auf dem Tabellenblatt "Start" bei Zelle G9 eingefügt (als Wert) werden.
Klingt so einfach und scheitere ich. Das ist mein bisheriger Ansatz. Der muss aber nicht als Grundlage dienen.Die Zelle Z1 habe ich nur als Hilfsmittel genutzt um die Suchfunktion einzusetzen.
Dim Spalte As Variant
Dim Zeile As Variant
Spalte = ActiveCell.Column
Zeile = ActiveCell.Row
'
Range("F9").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Daten").Select
Range("Z1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Cells.Find(What:=Range("Z1"), After:=ActiveCell, LookIn:=xlFormulas _
, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
Cells(ActiveCell.Row, ActiveCell.Column + 1).Select
Selection.Copy
Sheets("Start").Select
Range("G9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Wert aus Zelle in Spalte suchen
08.04.2020 07:22:15
MCO
Moin!
Probier das mal.
Ein paar Zeilen musst du nach deinen Wünschen noch rauskicken
Sub kopi()
Dim such As Range
Dim gef As Range
Set such = Range("F9")
Range("G9:R9").ClearContents
With Sheets("Daten")
.Cells.Interior.ColorIndex = xlNone 'Färbung löschen
'Parameter von dir übernommen
Set gef = .Cells.Find(What:=such, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, _
SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
'empfohlen
Set gef = .Range("F:F").Find(What:=such, LookIn:=xlValues, LookAt:=xlWhole)
If gef Is Nothing Then
MsgBox "Wert """ & such & """ nicht gefunden", vbCritical + vbOKOnly, "Nicht  _
gefunden"
Exit Sub
End If
'Wenn der Bereich aus Werten besteht genügt
.Range("H" & gef.Row & ":S" & gef.Row).Copy Range("G9") 'ziel ohne Punkt, ohne Bezug  _
auf Sheets("Daten")
'Wenn der Bereich aus Formeln besteht (oder Werten)
.Range("H" & gef.Row & ":S" & gef.Row).Copy
Range("G9").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False,  _
Transpose:=False
.Range("H" & gef.Row & ":S" & gef.Row).Interior.ColorIndex = 4 'markieren
End With
End Sub
Gruß, MCO
Anzeige
AW: VBA Wert aus Zelle in Spalte suchen
08.04.2020 07:58:50
Andreas
Danke MCO! Das hat hervorragend geklappt. Jetzt kann ich weiter bauen.
Gruß Andreas
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
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 Wert aus Zelle in Spalte suchen


Schritt-für-Schritt-Anleitung

  1. Makro erstellen: Öffne das VBA-Editorfenster in Excel (ALT + F11).

  2. Neues Modul hinzufügen: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" und wähle "Einfügen" > "Modul".

  3. Code einfügen: Kopiere den folgenden VBA-Code in das neue Modul:

    Sub kopi()
        Dim such As Range
        Dim gef As Range
        Set such = Range("F9")
        Range("G9:R9").ClearContents
        With Sheets("Daten")
            .Cells.Interior.ColorIndex = xlNone 'Färbung löschen
            Set gef = .Range("F:F").Find(What:=such, LookIn:=xlValues, LookAt:=xlWhole)
            If gef Is Nothing Then
                MsgBox "Wert """ & such & """ nicht gefunden", vbCritical + vbOKOnly, "Nicht gefunden"
                Exit Sub
            End If
            .Range("H" & gef.Row & ":S" & gef.Row).Copy Range("G9")
            .Range("H" & gef.Row & ":S" & gef.Row).Interior.ColorIndex = 4 'markieren
        End With
    End Sub
  4. Makro ausführen: Schließe den VBA-Editor und führe das Makro aus, indem du auf "Entwicklertools" > "Makros" klickst und das Makro "kopi" auswählst.


Häufige Fehler und Lösungen

  • Fehler: Wert nicht gefunden: Wenn die Meldung "Wert nicht gefunden" erscheint, überprüfe, ob der Wert in Zelle F9 richtig formatiert ist und tatsächlich in der Spalte F auf dem Arbeitsblatt "Daten" vorhanden ist.
  • Falscher Bereich kopiert: Stelle sicher, dass der Bereich H:S korrekt eingestellt ist. Ein Tipp: Verwende Range("H" & gef.Row & ":S" & gef.Row) um die korrekten Zeilen zu erfassen.
  • Färbung wird nicht zurückgesetzt: Wenn die Zellenfarbe nicht zurückgesetzt wird, überprüfe den Code, der dafür verantwortlich ist.

Alternative Methoden

Wenn du nicht mit VBA arbeiten möchtest, kannst du auch die Funktion SVERWEIS verwenden, um Werte in einer Spalte zu suchen. Dies ist jedoch nicht so flexibel wie die VBA-Lösung, besonders wenn es um das Kopieren und Einfügen von Werten in andere Zellen geht.


Praktische Beispiele

Beispiel 1: Angenommen, du hast in Zelle F9 den Wert "12.345.678 - 01". Der Code sucht diesen Wert in der Spalte F des Tabellenblatts "Daten" und kopiert den Inhalt der Zeilen H bis S in die Zelle G9 des Tabellenblatts "Start".

Beispiel 2: Mit einer kleinen Anpassung in der Find-Methode kannst du auch nach Teilstrings suchen, indem du LookAt:=xlPart anstelle von LookAt:=xlWhole verwendest.


Tipps für Profis

  • Optimierung der Suche: Verwende die Methode FindNext, um alle Vorkommen eines Wertes in einer Spalte zu finden.
  • Fehlermanagement: Implementiere Fehlerbehandlungsroutinen, um sicherzustellen, dass dein Makro auch bei unerwarteten Eingaben stabil bleibt.
  • Makros dokumentieren: Kommentiere deinen Code gut, damit du und andere ihn in Zukunft leichter verstehen können.

FAQ: Häufige Fragen

1. Wie kann ich den VBA-Code anpassen, um in einer anderen Spalte zu suchen?
Du musst die Zeile .Range("F:F").Find(...) anpassen, um die gewünschte Spalte anzugeben.

2. Funktioniert dieser Code in allen Excel-Versionen?
Ja, dieser Code sollte in den meisten Excel-Versionen funktionieren, die VBA unterstützen, jedoch ist es am besten, es in einer aktuellen Version wie Excel 2016 oder neuer zu testen.

3. Kann ich den Suchbereich anpassen?
Ja, du kannst den Bereich in der Find-Methode ändern, um in einer spezifischen Spalte oder Zeile zu suchen.

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