ich möchte nach einer Abfrage (MsgBox) in Spalte A eine Zeile suchen und dann einen bestimmten Wert (auch über Abfrage MsgBox) in der gleichen Zeile aber in Spalte B eintragen.
Ist das möglich?
Sub Abfragen()
Dim A, B, X
A = InputBox("Suche", "Zeile ermitteln")
B = InputBox("Engabe", "Wert eintragen")
If StrPtr(A) 0 And StrPtr(B) 0 Then
X = Application.Match(A, Columns(1), 0)
If IsNumeric(X) Then
Cells(X, 2) = B
Else
MsgBox "Suche war erfolglos", vbCritical, "Kein Treffer!"
End If
End If
End Sub
Sub Abfragen2()
Dim A, B, X
A = InputBox("Suche", "Zeile ermitteln")
B = InputBox("Engabe", "Wert eintragen")
If StrPtr(A) 0 And StrPtr(B) 0 Then
X = Application.Match(CVar(A), Columns(1), 0)
If IsNumeric(X) Then
Cells(X, 2) = B
Else
MsgBox "Suche war erfolglos", vbCritical, "Kein Treffer!"
End If
End If
End Sub
Gruß GerdOption Explicit
Sub SucheUndEingabe()
Dim suchWert As String
Dim eingabeWert As String
Dim fndCell As Range
suchWert = InputBox("Geben Sie den Suchwert für die Spalte A ein:", _
"Suchwert Eingabe")
If suchWert = "" Then Exit Sub
Set fndCell = ActiveSheet.Columns(1).Find(what:=suchWert)
If fndCell Is Nothing Then
MsgBox suchWert & " wurde in Spalte A nicht gefunden!", vbCritical, "Suche erfolglos"
Else
eingabeWert = InputBox(suchWert & " in Zelle " & fndCell.Address(0, 0) & _
"gefunden." & vbCrLf & "Wert für Spalte B eingeben:", "Wert für _
Spalte B")
fndCell.Offset(, 1) = eingabeWert
End If
End Sub
Gruess HansueliÖffne Excel und drücke ALT + F11
, um den VBA-Editor zu starten.
Füge ein neues Modul hinzu:
Einfügen
> Modul
.Kopiere und füge den folgenden Code ein:
Sub SucheUndEingabe()
Dim suchWert As String
Dim eingabeWert As String
Dim fndCell As Range
suchWert = InputBox("Geben Sie den Suchwert für die Spalte A ein:", "Suchwert Eingabe")
If suchWert = "" Then Exit Sub
Set fndCell = ActiveSheet.Columns(1).Find(what:=suchWert)
If fndCell Is Nothing Then
MsgBox suchWert & " wurde in Spalte A nicht gefunden!", vbCritical, "Suche erfolglos"
Else
eingabeWert = InputBox(suchWert & " in Zelle " & fndCell.Address(0, 0) & _
" gefunden." & vbCrLf & "Wert für Spalte B eingeben:", "Wert für Spalte B")
fndCell.Offset(, 1) = eingabeWert
End If
End Sub
Schließe den VBA-Editor und gehe zurück zu Excel.
Führe das Makro aus:
Entwicklertools
> Makros
, wähle SucheUndEingabe
aus und klicke auf Ausführen
.Fehler: "Suche war erfolglos"
Fehler: Eingabewert wird nicht in Spalte B eingetragen
Du kannst auch die Find
-Methode benutzen, um nach dem Wert in Spalte A zu suchen, wie im Beispiel von Hansueli gezeigt:
Set fndCell = ActiveSheet.Columns(1).Find(what:=suchWert)
Eine andere Möglichkeit, das Ergebnis zu verarbeiten, ist die Verwendung von Application.Match
:
X = Application.Match(CVar(A), Columns(1), 0)
Suche nach einem Namen in Spalte A und trage das Alter in Spalte B ein:
Verwende eine Zelle für den Eingabewert:
eingabeWert = Range("C1").Value ' Beispiel für Zelle C1
Verwende Option Explicit
am Anfang Deines Codes, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.
Fehlerbehandlung einfügen: Nutze On Error Resume Next
, um sicherzustellen, dass Dein Makro nicht abstürzt, wenn ein Fehler auftritt.
Testen und Debuggen: Nutze den Debugger im VBA-Editor, um Deine Variablen zu überwachen und den Code Schritt für Schritt auszuführen.
1. Kann ich das Makro auch für andere Spalten verwenden?
Ja, Du kannst die Spaltenreferenzen im Code anpassen, um das Makro für andere Spalten zu verwenden.
2. Wie kann ich den Suchwert direkt aus einer Zelle beziehen?
Du kannst den Suchwert wie folgt zuweisen:
suchWert = Range("A1").Value ' Beispiel für Zelle A1
3. Was tun, wenn ich mehrere Übereinstimmungen habe?
Der Code sucht nur nach der ersten Übereinstimmung. Du müsstest eine Schleife implementieren, um alle Übereinstimmungen zu finden.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen