Clever-Excel-Forum

Normale Version: VBA - Wert aus Zelle in Spalte suchen und markieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Einen schönen Sonntag wünsche ich  :)

Ich würde gern folgende Suche als VBA gestalten:

Der Wert aus Zelle CB7 soll in Spalte B gesucht und markiert werden.

Ich finde alle möglichen Suchkonstellationen im Netz. Aber jedesmal wird dort direkt im Code der Suchwert eingegeben. 
Mein Suchwert steht aber in einer Zelle.

Wie setzt man das am besten um?

Viele Grüße
Klaus
Warum muss das mit VBA Markiert werden und nicht mit Bedingter Formatierung ?
Guten Abend Frogger,

...weil ein anderer Code auf dann gefundene Position zugreift und von dort weiter arbeitet (Zellen nach oben und rechts abzählt und kopierte Werte einfügt)...

viele Grüße
Klaus
Hallo Klaus,

das ist aber ein völlig unnötiger Umweg, das ist wie jemanden anzurufen um ihm mitzuteilen, dass man ihm eben eine Email geschrieben hat.
Mit VBA Zellen zu markieren kann man sich in 99,99 % aller Fälle sparen. Zeig doch mal deinen Code, der mit dem gesuchten weiterarbeiten soll. In den kann man den Suchcode einfach einbauen.
Und beschreibe außerdem, in welcher Zelle der Suchbegriff steht.
Hallo Mr. Burns,

vielen Dank für deine Hilfe.

Jo, in diesem Fall besteht der Ablauf aus mehreren Modulen welche je nach Ereignis per Call aufgerufen werden.


Eine Variante ist jene.


Code:
ActiveCell.Value = ActiveCell.Offset(-1, 0) + 1

If [CI2] = 2 Then
Range("CV7:CV16").Copy
            ActiveCell.Offset(0, 13).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=True

Der Suchwert steht in Zelle CB7. Gesucht wird in Spalte B.

...nebenbei bemerkt ist mir das select nicht unwillkommen. Application Display steht auf false und so ist es eine einfache Weise den Timer, welcher auf der Datei liegt, bei jedem select neu zu aktivieren.
Na, dann geb ich dir einfach mal beide Möglichkeiten an die Hand:

Mit Select (bäh)

Code:
Sub Finden()
Set Treffer = Sheets("Tabelle2").Columns(2).Find(what:=Range("CB7"), lookat:=xlWhole)
If Not Treffer Is Nothing Then
   Treffer.Select
End If
End Sub


Ohne Select (bravo!)

Code:
Option Explicit
Public Treffer As Range

Sub Finden()
Set Treffer = Sheets("Tabelle2").Columns(2).Find(what:=Range("CB7"), lookat:=xlWhole)
If Not Treffer Is Nothing Then
   Call abc
End If
End Sub


Sub abc()
Cells(Treffer.Row, Treffer.Column).Value = Cells(Treffer.Row, Treffer.Column).Offset(-1, 0) + 1

If [CI2] = 2 Then
Range("CV7:CV16").Copy
            Cells(Treffer.Row, Treffer.Column).Offset(0, 13).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=True
End Sub
Treffer.Column könnte man natürlich auch durch "B" oder 2 ersetzen, allerdings finde ich es so variabler, falls sich die Suchspalte mal ändern sollte.
Funktioniert tadellos.  *rumfreu

Vielen vielen Dank

Liebe Grüße
Klaus
Hallo Klaus,

Zitat:If [CI2] = 2 Then
Range("CV7:CV16").Copy

wenn jede Menge Zellabfragen gemacht werden sollen, dann schlage ich vor,
Dir mal Select Case-Abfragen anzusehen. Das ist leichter zu handhaben als die
IF-Abfragen.
Vielen Dank für den Tipp Käpt'n,
werde ich beherzigen.

Liebe Grüße
Klaus