Registriert seit: 23.01.2017
Version(en): 365 - Version 2208
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
Registriert seit: 02.12.2017
Version(en): Office 365
Warum muss das mit VBA Markiert werden und nicht mit Bedingter Formatierung ?
Registriert seit: 23.01.2017
Version(en): 365 - Version 2208
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
Registriert seit: 02.05.2018
Version(en): Excel 365 & 2016
01.12.2019, 20:33
(Dieser Beitrag wurde zuletzt bearbeitet: 01.12.2019, 20:34 von MisterBurns.)
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.
Schöne Grüße
Berni
Registriert seit: 23.01.2017
Version(en): 365 - Version 2208
01.12.2019, 20:54
(Dieser Beitrag wurde zuletzt bearbeitet: 01.12.2019, 20:57 von Klaus.)
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.
Registriert seit: 02.05.2018
Version(en): Excel 365 & 2016
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.
Schöne Grüße
Berni
Registriert seit: 23.01.2017
Version(en): 365 - Version 2208
Funktioniert tadellos. *rumfreu
Vielen vielen Dank
Liebe Grüße
Klaus
Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
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.
Registriert seit: 23.01.2017
Version(en): 365 - Version 2208
Vielen Dank für den Tipp Käpt'n,
werde ich beherzigen.
Liebe Grüße
Klaus