Anzeige
Archiv - Navigation
840to844
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
840to844
840to844
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Suchscript mit Laufzeitfehler...Wer kann helfen?

Suchscript mit Laufzeitfehler...Wer kann helfen?
25.01.2007 11:57:47
Albus
Moinsn.... hab ein problem:
Ich habe ein Suchscript was mir immer folgenen fehler ausspuckt
Laufzeitfehler 1004: Die Find Eigenschaft des Range-Objektes kann nicht zugeordnet werden...
und zwar an folgender stelle:
Set rngSuchErgebnis = wsTabelle.Cells.Find(strSuchBegriff) (war gelb markiert)
soweit find ich das ganz gut WENN NUR DIESER DÄMLICHE FEHLER NICHT WÄHRE....KANN MIT BITTE JEMAND MAL HELFEN....DANKE IM VORRAUS!
hier der rest vom scribt:

Private Sub CommandButton46_Click()
' Diese Funktion sucht in allen geöffneten Exceldateien nach einem Suchbegriff und listet
' die Ergebnisse in einer Listbox auf. Wird in der Listbox auf einen Eintrag geklickt, so
' wird die Fundstelle angezeigt.
' Um dieses Beispiel nachzuvollziehen, benötigt man eine UserForm mit Namen "UserForm1".
' Darauf muss eine ListBox mit Namen "ListBox1" vorhanden sein. Diese muss in ihren Eigen-
' schaften bei "ColomnCount" den Wert "3" haben. In der Listbox muss folgender Code ein-
' gefügt werden:
' 

Private Sub ListBox1_Click()
'   Workbooks(ListBox1.Column(0)).Activate
'   Worksheets(ListBox1.Column(1)).Activate
'   Range(ListBox1.Column(2)).Select
' End Sub

'=========================================================================================
Dim wbExcelDatei As Workbook
Dim wsTabelle As Worksheet
Dim strSuchBegriff As String
Dim rngSuchErgebnis As Range
Dim strErsteAdresse As String
'-----------------------------------------------------------------------------------------
' Suchbegriffseingabe
'-----------------------------------------------------------------------------------------
strSuchBegriff = InputBox("Bitte Artikelnummer eingeben:", "Alle Regale durchsuchen")
'-----------------------------------------------------------------------------------------
' Abbrechen gedrückt -> Beenden
'-----------------------------------------------------------------------------------------
If strSuchBegriff = "" Then Exit Sub
'-----------------------------------------------------------------------------------------
' Alle geöffneten Exceldatein durchlaufen
'-----------------------------------------------------------------------------------------
For Each wbExcelDatei In Workbooks
'-------------------------------------------------------------------------------------
' Alle Tabellenblätter in den geöffneten Exceldatein durchlaufen
'-------------------------------------------------------------------------------------
For Each wsTabelle In wbExcelDatei.Sheets
'---------------------------------------------------------------------------------
' Suchbegriff suchen
'---------------------------------------------------------------------------------
Set rngSuchErgebnis = wsTabelle.Cells.Find(strSuchBegriff)
'---------------------------------------------------------------------------------
' Wurde etwas gefunden, dann...
'---------------------------------------------------------------------------------
If Not rngSuchErgebnis Is Nothing Then
'-----------------------------------------------------------------------------
' ...Adresse der 1. Fundstelle speichern
'-----------------------------------------------------------------------------
strErsteAdresse = rngSuchErgebnis.Address
'-----------------------------------------------------------------------------
' Alle weiteren Fundstellen suchen
'-----------------------------------------------------------------------------
Do
'-------------------------------------------------------------------------
' Fundstellen in einer Listbox auflisten
'-------------------------------------------------------------------------
With UserForm1.ListBox1
.AddItem
.Column(0, .ListCount - 1) = wbExcelDatei.Name
.Column(1, .ListCount - 1) = wsTabelle.Name
.Column(2, .ListCount - 1) = rngSuchErgebnis.Address
End With
'-------------------------------------------------------------------------
' Weitere Fundstelle auf dem Blatt?
'-------------------------------------------------------------------------
Set rngSuchErgebnis = wsTabelle.Cells.FindNext(rngSuchErgebnis)
Loop While Not rngSuchErgebnis Is Nothing And rngSuchErgebnis.Address strErsteAdresse
End If
Next
Next

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suchscript mit Laufzeitfehler...Wer kann helfen?
25.01.2007 12:40:11
haw
Hallo,
ich vermute, dass du nicht nur Tabellen, sondern auch z.B. Diagramme in der Datei hast.
Da es dort keine Cells gibt, kommt die Fehlermeldung.
Ich würde erstens den Sheets-Namen einer Variablen zuweisen, die du nach dem Fehlerauftritt auslesen kannst, oder den Sheets-Namen im Direktfenster ausgeben lassen.
Weiters würde ich Sheets durch Worksheets ersetzen, da dann nur Tabellen durchlaufen werden.
Sonst hätte ich vorerst keine Idee
Gruß Heinz
AW: Suchscript mit Laufzeitfehler...Wer kann helfen?
25.01.2007 12:59:28
Albus
Ich habe ein zwei Bilder in der Ersten Tabelle....
"Ich würde erstens den Sheets-Namen einer Variablen zuweisen, die du nach dem Fehlerauftritt auslesen kannst, oder den Sheets-Namen im Direktfenster ausgeben lassen."
Wie ich das? kleines Beispielscript?
"Weiters würde ich Sheets durch Worksheets ersetzen, da dann nur Tabellen durchlaufen werden."
Öhm... gleiche frage wie oben...Programmieren ist nicht meine stärke... kannst du/jemand mir dabei vlt helfen oder ein paar kleine detailliertere hinweise geben wie ich das anzustellen habe...
VIELEN DANK IM VORRAUS... das script ist nämlich sehr cool... vlt hilft es ja dann auch anderen..
Grüße Albrecht
Anzeige
AW: Suchscript mit Laufzeitfehler...Wer kann helfen?
25.01.2007 13:13:06
haw
Hallo,
Füge folgende Zeile nach der Zeile For Each wsTabelle In wbExcelDatei.Sheets ein:
Debug.Print wsTabelle.name
Wenn der Fehler auftritt, klickst du auf Debuggen und bist im VBE. Dann blendest du mit Strg+G das Direktfenster ein. Da siehst du dann den Namen der Tabelle, bei der der Fehler auftritt.
Wenn du allerdings bereits auf Worksheets korrigiert hast, sollte der Fehler nicht mehr auftreten, ich würde allerdings - aus Interesse - zuerst überprüfen, welches Sheet die Probleme auslöst.
Statt der Zeile
For Each wsTabelle In wbExcelDatei.Sheets schreibst du nun:
For Each wsTabelle In wbExcelDatei.WorkSheets
Gruß Heinz
Anzeige
AW: Suchscript mit Laufzeitfehler...Wer kann helfen?
25.01.2007 14:12:36
Albus
Also... er gibt mir die erste Tabelle an ("Übersicht") ...dort liegt quasi ein lageplan....
Vlt zur Problemlösung:
Den muss ich nicht durchsuchen (wird anscheinend ja trotzdem gemacht)... vlt kann man ihn ausschliessen (also Tabelle 1) .... wie würde ich das anstellen...vlt kommt der fehler dann nicht mehr
VIELEN DANK und beste Grüße Albus
AW: Suchscript mit Laufzeitfehler...Wer kann helfen?
25.01.2007 14:25:45
haw
Hallo,
Nach der Zeile
For Each wsTabelle In wbExcelDatei.Worksheets
fügst du eine If-Bedingung ein:
If wsTabelle.name "Übersicht" Then
und nach der Zeile
End If
fügst du noch eine Zeile mitEnd If ein.
Dann wird der Code nur abgearbeitet, wenn die Tabelle nicht "Übersicht" heißt.
Ich hoffe, du hast nicht noch andere Tabellen, die Probleme bereiten.
Gruß Heinz
Anzeige
AW: Suchscript mit Laufzeitfehler...Wer kann helfen?
25.01.2007 14:40:03
Albus
Damn... das gibt sich nix.... immernoch der selbe fehler...
All die Andere Tabellen haben nur ne kleine Box und einen Button...
Aber ich könnte die "cell range" definieren, weil ich genau weiss wo er suchen soll...vlt schränkt das unser problem ein....
Aber auch in einer reinen tabelle spackt das Script ab... immer wieder an der selben stelle.... hmmm...gibt es vlt eine alternative zu dem script oder hab ich dihc jetzt bei deiner programmierehre gepackt ;)
währe schön wenn wir das lösen könnten
Grüße
Albus
AW: Suchscript mit Laufzeitfehler...Wer kann helfen?
25.01.2007 15:13:40
Albus
Hab noch ein anderes Scribt gefunden...hier allerdings ein Objektfehler bei noch nicht eingegebenen text.... damn
'Ok anbei der kompl. Code mit kleinen Erläuterungen
'Aufbau: (UserForm)
'- 2 CommandButton (ComandButton1/CmdAbbruch)
'- 6 TextBoxen (txtAngebotNr/txtDatum/txtKunde/ect..)
'- 2 Listboxen (ListBox1/ListBox2)

Private Sub CmdAbbruch_Click()
Unload Me
End Sub


Private Sub CommandButton1_Click()
Dim s As String
Dim Found As Range
Dim FirstAddress As String
Dim i As Integer    ' Zeile
i = 0
If txtSuche.Text = "" Then
MsgBox "Kein Eintrag vorhanden!", vbCritical, "Was soll ich den suchen?"
txtSuche.SetFocus
Else
End If
Eingabe = txtSuche.Text
If Eingabe = "" Then Exit Sub
ListBox1.Clear
ListBox2.Clear
With ActiveSheet
Set Found = .Cells.Find(Eingabe, LookAt:=xlPart)
If Not Found Is Nothing Then
FirstAddress = Found.Address
ListBox1.ColumnCount = 2
ListBox1.AddItem Found
ListBox1.List(i, 1) = Cells(Found.Row, 13)
ListBox2.AddItem Found.Row
i = i + 1
Do
Found.Activate
Set Found = Cells.FindNext(After:=ActiveCell)
On Error Resume Next
If Found.Address = FirstAddress Then Exit Do
ListBox1.AddItem Found
ListBox1.List(i, 1) = Cells(Found.Row, 13)
ListBox2.AddItem Found.Row
i = i + 1
Loop
End If
End With
CommandButton1.Caption = "Neue Suche"
End Sub

'##############################
'Hier erfolgt die Ausgabe des gesuchten
'in einer TextBox per Auswahl in der ListBox

Private Sub ListBox1_Click()
If ListBox1.Value <> "" Then
On Error Resume Next
ListBox2.ListIndex = ListBox1.ListIndex
txtAngebotNr = Cells(ListBox2.Value, 2)
txtDatum = Cells(ListBox2.Value, 3)
txtKunde = Cells(ListBox2.Value, 5)
txtOrt = Cells(ListBox2.Value, 10) & " " & Cells(ListBox2.Value, 11)
txtGesamtPreis = Cells(ListBox2.Value, 20) & " €"
txtAuftragswert = Cells(ListBox2.Value, 21) & " €"
End If
End Sub

'#################################
'Hier wird die betreffende Zeile markiert bei
'einem Doppelklick

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
If ListBox1.Value <> "" Then
On Error Resume Next
ListBox2.ListIndex = ListBox1.ListIndex
Rows(ListBox2.Value).Select
End If
End Sub


Private Sub UserForm_Activate()
CommandButton1.Caption = "Suche"
End Sub

vlt kann man sie ja zusammenfriemeln
Anzeige
AW: Suchscript mit Laufzeitfehler...Wer kann helfen?
25.01.2007 17:46:56
Kurt

Private Sub CommandButton1_Click()
Dim s As String
Dim Found As Range
Dim FirstAddress As String
Dim i As Integer    ' Zeile
i = 0
If txtSuche.Text <> "" Then
Eingabe = txtSuche.Text
If Eingabe = "" Then Exit Sub
ListBox1.Clear
ListBox2.Clear
With ActiveSheet
Set Found = .Cells.Find(Eingabe, LookAt:=xlPart)
If Not Found Is Nothing Then
FirstAddress = Found.Address
ListBox1.ColumnCount = 2
ListBox1.AddItem Found
ListBox1.List(i, 1) = Cells(Found.Row, 13)
ListBox2.AddItem Found.Row
i = i + 1
Do
Found.Activate
Set Found = Cells.FindNext(After:=ActiveCell)
On Error Resume Next
If Found.Address = FirstAddress Then Exit Do
ListBox1.AddItem Found
ListBox1.List(i, 1) = Cells(Found.Row, 13)
ListBox2.AddItem Found.Row
i = i + 1
Loop
End If
End With
CommandButton1.Caption = "Neue Suche"
Else
MsgBox "Kein Eintrag vorhanden!", vbCritical, "Was soll ich denn suchen?"
txtSuche.SetFocus
End If
End Sub

mfg Kurt
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige