Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1408to1412
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

Suche in Tabellen-NamensBereich per Variable

Suche in Tabellen-NamensBereich per Variable
20.02.2015 17:56:30
Frank
Hallo.
ich drehe mich abermals im Kreis.
Möchte in verschiedenen Dateien, jeweils in einem Tabellenblatt mit variierenden Namen, innerhalb von gleichen im Namens-Manager definierten einfachen Zell-Bereichen wie 'Abteilung' = '=Tabelle1!$A$2:$A$199' oder 'Anforderer' = '=Tabelle1!$L$2:$L$199' oder weitere eine genau auf diese Namens-Bereiche eingeschränkte Suche durchführen. Scheitert derzeit immer an mangelnder Objekt-Kenntnis;-)
folgendes Code-Schnipsel bringt die Fehlermeldung: Laufzeitfehler 91 Objektvariable oder With-Blockvariable nicht festgelegt

Private Sub cmdSucheStarten_Click()
Dim SuchSpalte As String
Dim SuchString As String
Dim SuchRange As Object
Dim SuchZeile As Integer
Dim msg
Dim Antwort As Integer
'--- Variable 'SuchSpalte' erhält Wert (String) aus 'ComboBox1'-Auswahl ---
SuchSpalte = ComboBox1.Value
'--- Variable 'SuchString' erhält Wert (String) aus TextBox 'SuchString' ---
SuchString = Me.SuchString.Value
Application.Goto Reference:=SuchSpalte
With Selection
SuchZeile = .Find(What:=SuchString, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:= _
xlByRows).Row
End With
Do While SuchZeile = 0
If SuchZeile = 0 Then ' If SuchZeile Is Nothing Then '
Beep
msg = "Suchbegriff nicht gefunden!" & Chr(10) & _
Chr(10) & _
"Wiederholen:" & Chr(10) & _
"  Bitte neuen Suchbegriff eintragen und die" & _
"  Suche mit Klick auf Button 'Suche starten!'" & _
"   bestätigen." & _
"Abbrechen:" & Chr(10) & _
"  Beendet die Suche und ruft zuvor gezeigten Datensatz auf!"
Antwort = MsgBox(msg, vbRetryCancel + vbExclamation, "Suche fehlgeschlagen!")
Select Case Antwort
Case 2      ' Antwort = 'Cancel' > Suche abbrechen!
Exit Do
Case 4      ' Antwort = 'Retry'  > Suche fortsetzen!
'--- leert alten Suchbegriff aus voriger 'TextBox' für neue Suche! ---
Me.SuchString.Value = ""
End Select
End If
Loop
AktuelleDatenZeile = SuchZeile  ' Variable in folgenden Sub-Aufrufen
TxtBxnFuellenBasis              ' Sub-Aufruf
TxtBxnFuellenPlan               ' Sub-Aufruf
Me.ComboBox1.Clear
End Sub

Die derzeitige Problem-Zeile ist folgende:
SuchZeile = .Find(What:=SuchString, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows).Row
Eigentlich möchte ich im gesamten Code ohne Select auskommen!
Wer hat hierzu einen Tipp!
Meinen herzlichen Dank im Voraus!
Gruß
Frank

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

Betreff
Datum
Anwender
Anzeige
AW: Suche in Tabellen-NamensBereich per Variable
20.02.2015 19:00:07
Luschi
Hallo Frank,
so richtig habe ich nicht verstanden, was Du eigentlich vorhast:
- prüfen, ob die Zelle 'Tabelle1!C5' in irgendeinem definierten Namensbereich des
  Namensmanager vorkommt
- alle Namen des Namensmanagers auslesen und deren Zellbereich auflisten in 1er Tabelle
- oder was ganz Anderes
Gruß von Luschi
aus klein-Paris

AW: Suche in Tabellen-NamensBereich per Variable
23.02.2015 13:12:36
Frank
Hallo Luschi,
danke für Deine Kontaktaufnahme und sorry für meine wirre Beschreibung.
Habe das Problem zwischenzeitlich gelöst. Hatte mich da auch etwas verrant.
Evtl. wird mit folgendem Code deutlich, was ich machen will.
Der betreffende Problemfall ist der mittlere (2te) Sub.

Option Explicit
Option Compare Text
Private Sub UserForm_Initialize()
Dim NamensBer As Name
'Set NamensBer = ThisWorkbook.Worksheets(AusgangsTabelle).Names
'Sheets(AusgangsTabelle).Names 'ActiveWorkbook.Names
Me.ComboBox1.Clear      'ComboBox1 leeren für definierten Startzustand
With ComboBox1
.RowSource = ""
.ColumnHeads = True
.ColumnCount = 1
.AddItem "Bitte einen Such-Bereich wählen!"
'--- folgende For-Next-Schleife sucht alle in der Tabelle verwendeten lokalen 'Names'! ---
For Each NamensBer In ThisWorkbook.Names
If NamensBer.RefersToRange.Parent Is Sheets(AusgangsTabelle) Then   ' Tabelle1
If NamensBer.Name = NamensBer.NameLocal Then
.AddItem NamensBer.Name
End If
End If
Next
.ListIndex = 0  ' Zeigt beim Start direkt den ersten Wert in der Liste an
End With
End Sub
'--- Datensatz-Suche und dessen Anzeige starten:  Formular-Feld zur Suche identifizieren,
' Tab.-Zeile mit Such-String aus 'TextBox' suchen + entspr. Daten in UserForm anzeigen ---
Private Sub cmdSucheStarten_Click()
Dim SuchSpalte As String
Dim SuchString As String
Dim SuchenErgebnis As Object
Dim SuchZeile As Integer
Dim msg
Dim Antwort As Integer
'--- Variable 'SuchSpalte' erhält den Wert (Text-String) aus der Auswahl in 'ComboBox1' ---
SuchSpalte = Me.ComboBox1.Value ' .Text  // '    MsgBox ComboBox1.Text
'--- Variable 'SuchString' erhält den Wert (Text-String) aus TextBox 'TB_SuchString' ---
SuchString = Me.TB_SuchString.Value
'--- Suche nach exaktem String bei Konstante 'xlWhole' + nach Teil-String bei 'xlPart'. ---
Set SuchenErgebnis = ActiveWorkbook.Names(SuchSpalte).RefersToRange. _
Find(what:=SuchString, LookIn:=xlValues, lookat:=xlPart, searchorder:=xlByRows)
If SuchenErgebnis Is Nothing Then
Beep
msg = "Suchbegriff im gewählten Such-Bereich nicht gefunden!" & Chr(10) & _
Chr(10) & _
"Wiederholen:" & vbCrLf & _
"  Bitte neuen Suchbegriff eintragen und/oder" & vbCrLf & _
"  den Such-Bereich ändern und die Suche erneut" & vbCrLf & _
"  mit Klick auf Button 'Suche starten!' bestätigen." & vbCrLf & _
vbLf & _
"  NICHT mit 'Return' bzw. 'Enter' bestätigen!" & vbCrLf & _
vbLf & _
"Abbrechen:" & vbCrLf & _
"  Beendet die Suche und ruft zuvor gezeigten Datensatz auf!"
Antwort = MsgBox(msg, vbRetryCancel + vbExclamation, "Suche fehlgeschlagen!")
Select Case Antwort
Case 2      ' = 'Cancel' > Suche soll abgebrochen werden!
Unload UfrmSuche
Exit Sub ' alt: Exit Do
Case 4      ' = 'Retry'  > Suche mit neuem Such-String fortsetzen!
'- leert alten Suchbegriff in TextBox 'TB_SuchString' für neue Suche! -
'Me.TB_SuchString.Value = ""
With TB_SuchString
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
End Select
Else ' --> Suche erfolgreich: 'SuchenErgebnis' ist nicht 'Nothing'
SuchZeile = SuchenErgebnis.Row
AktuelleDatenZeile = SuchZeile
TxtBxnFuellenBasis   ' (AktuelleDatenZeile, AusgangsTabelle)
TxtBxnFuellenPlan    ' (AktuelleDatenZeile, AusgangsTabelle)
Me.ComboBox1.Clear               ' Überflüssig ?
Me.TB_SuchString.Value = ""      ' Überflüssig ?
Unload UfrmSuche
'Set SuchenErgebnis = Nothing    ' Überflüssig ?
End If
End Sub
Private Sub cmdEscape_Click()
Unload UfrmSuche
End Sub

Gruß
Frank
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige