Anzeige
Archiv - Navigation
1488to1492
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Select or not Select bei FIND

Select or not Select bei FIND
22.04.2016 21:30:53
Jürgen
Moin!
Ich versuche gerade, alle SELECT und ACTIVATE zu eleminieren...
Kann mir jemand verraten, warum folgende Prozedur läuft:
.Activate 'Tabelle MitarbeiterIn auswählen
.Range("G6:G" & ZeileMax).Select
Selection.Find(What:=NameKlient, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
Folgende Prozedur aber mit der Fehlermeldung 13 "Typen unverträglich" abbricht?
.Range("G6:G" & ZeileMax).Find(What:=NameKlient, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
Vielen Dank im Voraus
Jürgen

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Select or not Select bei FIND
22.04.2016 22:19:15
Peter
Hallo Jürgen,
versuche es doch ganz einfach so:
Option Explicit
Public Sub Test()
Dim rZelle      As Range
Dim NameKlient  As String
Dim ZeileMax    As Long
NameKlient = "Ingrid"
With ThisWorkbook.Worksheets("MitarbeiterIn")
ZeileMax = .Cells(.Rows.Count, 7).End(xlUp).Row
Set rZelle = .Range("G6:G" & ZeileMax).Find(What:=NameKlient, LookIn:=xlFormulas, _
LookAt:=xlPart)
If Not rZelle Is Nothing Then
Range("G" & rZelle.Row).Activate
Else
MsgBox "Der Begriff  """ & NameKlient & """  wurde nicht gefunden."
End If
End With
End Sub

Gruß Peter

Anzeige
@Peter
22.04.2016 22:26:21
Uduuh
Hallo,
Range("G" & rZelle.Row).Activate
ist, wenn auch nicht falsch, so doch zu kompliziert.
rZelle ist doch bereits ein Range-Objekt. Folglich reicht

rZelle.Select
Gruß aus’m Pott
Udo

AW: Select or not Select bei FIND
22.04.2016 22:22:19
Uduuh
Hallo,
weil ohne Activate/Select eine andere Zelle oder nicht das Mitarbeiteblatt aktiv ist.
set rF = .Range("G6:G" & ZeileMax).Find(What:=NameKlient, After:=.range("G6"), LookIn:= _
xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
if not rf is nothing then
.activate
rf.activate
end if
Gruß aus’m Pott
Udo

Anzeige
AW: Select or not Select bei FIND
24.04.2016 10:17:33
Jürgen
Moin!
Vielen Dank für die schnellen Antworten und Lösungsvorschläge. Eine mögliche Lösung habe ich ja, ich möchte die Excel–Logik verstehen und lese Einträge wie: "Select und Activate sind zu 99,9 Prozent überflüssig."
Ich möchte gern wissen, welche Typen sich nicht vertragen und wieso Excel mit Find nichts findet, obwohl ich ihm doch mit ".Range("G6:G" & ZeileMax)." statt "Selection" doch sage, wo er suchen soll. Oder spreche ich die Sprache noch nicht richtig?. (Irgendwann möchte ich bei VBA auch ein gut ankreuzen ;-)
Viele Grüße

AW: Select or not Select bei FIND
24.04.2016 17:50:47
Jürgen
Moin!
Vielen Dank für die schnellen Antworten und Lösungsvorschläge. Eine mögliche Lösung habe ich ja, ich möchte die Excel–Logik verstehen und lese Einträge wie: "Select und Activate sind zu 99,9 Prozent überflüssig."
Ich möchte gern wissen, welche Typen sich nicht vertragen und wieso Excel mit Find nichts findet, obwohl ich ihm doch mit ".Range("G6:G" & ZeileMax)." statt "Selection" doch sage, wo er suchen soll. Oder spreche ich die Sprache noch nicht richtig?. (Irgendwann möchte ich bei VBA auch ein gut ankreuzen ;-)
Viele Grüße
Jürgen

Anzeige
Das Problem ist der Parameter AFTER:=
28.04.2016 19:16:56
Daniel
Hi Jürgen
Der Parameter AFTER:=ActiveCell verursacht den Fehler
hier gibst du ja die Zelle an, bei welcher die Suche beginnen soll.
die Zelle, die du hier angibst, muss logischerweise Bestandteil des Zellbereichs sein, den du durchsuchst (dh diese Zelle muss zum Bereich gehören, den du vor .FIND stehen hast)
liegt diese Zelle ausserhalb des zu durchsuchenden Bereichs, kommt der Fehler 13 "Typen unverträglich"
die ActiveCell ist immer Teil der Selection, dh wenn du zu durchsuchenden Zellbereich vorher selektierst dann funktioniert After:=ActiveCell immer.
Selektierst du nicht, dann liegt die ActiveCell noch in der letzten Selektion und damit wahrscheinlich nicht im zu durchsuchenden Bereich.
Lass den Parameter einfach weg, dieser Parameter ist selten notwendig.
Er wird nur dann benötigt, wenn du eine Liste nach einem mehrfach vorkommenden Suchbegriff durchsuchst um zu verhindern, dass du jedesmal den ersten Wert findest.
(Eselsbrücke: After ist für'n Arsch (meistens zumindest))
also etwa nach dem Prinzip:
set ErsteFundstelle = Columns(1).Find(What:="Suchtext")
Set ZweiteFundstelle = Columns(1).Find(what:="Suchtext", after:=ErsteFundstelle)
if ErsteFundstelle.Address = ZweiteFundstelle.Address Then
Msgbox "Suchtext nur 1x im Text vorhanden"
Else
Msgbox "Suchtext gefunden in: " & ErsteFundstelle.Address & ", " & ZweiteFundstelle.Address
End If
Gruß Daniel

Anzeige
AW: Select or not Select bei FIND
28.04.2016 18:47:10
Michael
Hi zusammen,
nachfolgend was zum Spielen:
Option Explicit
Sub test()
Dim ZeileMax&
Dim NameKlient$
NameKlient = "MustermannFrau"
With Sheets("MitarbeiterIn")
ZeileMax = .Range("G" & .Rows.Count).End(xlUp).Row
.Activate 'Tabelle MitarbeiterIn auswählen
.Range("G6:G" & ZeileMax).Select
Selection.Find(What:=NameKlient, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
MsgBox "Mit Select"
.Range("A1").Activate ' liegt außerhalb des zu durchsuchenden Bereichs
' damit bleibt das Makro mit der Fehlermeldung stehen.
.Range("G6:G" & ZeileMax).Find(What:=NameKlient, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
MsgBox "Ohne Select und OHNE After-Angabe"
.Range("G6").Activate ' liegt innerhalb des zu durchsuchenden Bereichs
.Range("G6:G" & ZeileMax).Find(What:=NameKlient, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
MsgBox "Ohne Select und MIT After-Angabe"
End With
End Sub

Schöne Grüße,
Michael
Anzeige

87 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige