Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  Suche in mehreren Arbeitblätter

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Suche in mehreren Arbeitblätter (924 mal gelesen)
pi-design
Mitglied
Design Engineer


Sehen Sie sich das Profil von pi-design an!   Senden Sie eine Private Message an pi-design  Schreiben Sie einen Gästebucheintrag für pi-design

Beiträge: 948
Registriert: 09.08.2002

Excel 2007
WIN 7 64bit

erstellt am: 17. Feb. 2010 14:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi,
kann ich von einem Arbeitsblatt (Startseite) aus über eine Funktion oder VBA mehrere Arbeitsblätter nach einem  Begriff (Text oder Zahl) suchen. Dann, wenn er vorhanden ist, direkt in dieses Blatt gehen und die Zelle aktivieren? Wenn ja, wie löst man das als "VBA-Legasteniker"?

------------------
Gruß Pille

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 17. Feb. 2010 14:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für pi-design 10 Unities + Antwort hilfreich

Hallo Pille,

Erstes Register aktivieren - Shift-Taste gedrückt halten - letztes Register aktivieren - Strg+F drücken tut's nicht?

------------------
DIN1055.de  |  Lastannahmen für Anwender NEU: Foren zu DIN 1055

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

pi-design
Mitglied
Design Engineer


Sehen Sie sich das Profil von pi-design an!   Senden Sie eine Private Message an pi-design  Schreiben Sie einen Gästebucheintrag für pi-design

Beiträge: 948
Registriert: 09.08.2002

Excel 2007
WIN 7 64bit

erstellt am: 17. Feb. 2010 14:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:
Original erstellt von Paulchen:
Hallo Pille,

Erstes Register aktivieren - Shift-Taste gedrückt halten - letztes Register aktivieren - Strg+F drücken tut's nicht?


Nein leider nicht. Sollte für den Anwender so einfach wie möglich sein

------------------
Gruß Pille

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 17. Feb. 2010 14:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für pi-design 10 Unities + Antwort hilfreich

Für den Einstieg - anpassungsfähig - sowas hier:
Code:
Private Sub MappeFilzen(wbMappe As Workbook, Optional strSuch As String, Optional msgTitel As String)

'thx to n.
'Durchsucht die aktuelle MAPPE nach strSuchtext - mit 'Strg + f' wird nur das aktuelle BLATT berücksichtigt!

Dim objSheet As Worksheet
Dim objCell As Range
Dim strSuchtext As String
Dim intn As Integer
   
    Application.ScreenUpdating = False
    wbMappe.Activate
   
    Do
    intn = 0 'Initiieren - muß HIER stattfinden, damit die Schleife korrekt verlassen wird!
    strSuchtext = InputBox("Geben Sie den Text ein, der gefunden werden soll:" _
    & vbCrLf & vbCrLf & "Es wird nach allen Vorkommen gesucht - z. B. 'ad' in 'Stadt'.", msgTitel, strSuch)
   
    If strSuchtext <> "" Then 'Kein "Abbrechen", keine Leereingabe!
        strSuchtext = "*" & strSuchtext & "*" 'Erweiterung mit wildcards
        intn = 1 'Steurung der msgbox unten...
            For Each objSheet In ActiveWorkbook.Worksheets
                With objSheet.Cells
                    Set objCell = .Find(What:=strSuchtext)
                    If Not objCell Is Nothing Then
                        objSheet.Activate 'Blatt...
                        objCell.Activate '... und Zelle aktivieren
                        ActiveWindow.SmallScroll Down:=objCell.Row - 15 'sichtbar machen
                        intn = 2 'Suchtext gefunden!
                        Exit Sub
                    End If
                End With
            Next 'nächstes Blatt
    End If

    If intn = 1 Then
        MsgBox "Ihre Suchanfrage '" & Mid(strSuchtext, 2, Len(strSuchtext) - 2) _
        & "' konnte in der aktuellen Mappe nicht gefunden werden.", vbOKOnly, "Mappe durchsuchen"
    End If
    Loop While intn = 1

    Application.ScreenUpdating = True
    Set objCell = Nothing

End Sub


------------------
DIN1055.de  |  Lastannahmen für Anwender NEU: Foren zu DIN 1055

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

pi-design
Mitglied
Design Engineer


Sehen Sie sich das Profil von pi-design an!   Senden Sie eine Private Message an pi-design  Schreiben Sie einen Gästebucheintrag für pi-design

Beiträge: 948
Registriert: 09.08.2002

Excel 2007
WIN 7 64bit

erstellt am: 17. Feb. 2010 15:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Wie starte ich den das Makro?

------------------
Gruß Pille

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 17. Feb. 2010 15:23    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für pi-design 10 Unities + Antwort hilfreich

Mit einem Start-Makro  . Zum Beispiel
Code:
Sub Start_Filzen
  MappeFilzen(ThisWorkbook)
End Sub
Ungetestet. Bei mir wird die Sucherei innerhalb einer weiteren Routine aufgerufen, zu diesem Zeitpunkt sind die Variablen bereits belegt...

Alternativ: Diesen Teil

Code:
wbMappe As Workbook,
rauswerfen, wbMappe innerhalb der Sub belegen.

------------------
DIN1055.de  |  Lastannahmen für Anwender NEU: Foren zu DIN 1055

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

pi-design
Mitglied
Design Engineer


Sehen Sie sich das Profil von pi-design an!   Senden Sie eine Private Message an pi-design  Schreiben Sie einen Gästebucheintrag für pi-design

Beiträge: 948
Registriert: 09.08.2002

Excel 2007
WIN 7 64bit

erstellt am: 18. Feb. 2010 06:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Irgendwie bring ich es trotzdem nicht zum laufen.
Mein Code sieht so aus:

Code:
Sub Start_Filzen()
  MappeFilzen (wbMappe)
End Sub

Private Sub MappeFilzen(wbMappe As Workbook, Optional strSuch As String, Optional msgTitel As String)
'thx to n.
'Durchsucht die aktuelle MAPPE nach strSuchtext - mit 'Strg + f' wird nur das aktuelle BLATT berücksichtigt!

Dim objSheet As Worksheet
Dim objCell As Range
Dim strSuchtext As String
Dim intn As Integer
   
    Application.ScreenUpdating = False
    wbMappe.Activate
   
    Do
    intn = 0 'Initiieren - muß HIER stattfinden, damit die Schleife korrekt verlassen wird!
    strSuchtext = InputBox("Geben Sie den Text ein, der gefunden werden soll:" _
    & vbCrLf & vbCrLf & "Es wird nach allen Vorkommen gesucht - z. B. 'ad' in 'Stadt'.", msgTitel, strSuch)
   
    If strSuchtext <> "" Then 'Kein "Abbrechen", keine Leereingabe!
        strSuchtext = "*" & strSuchtext & "*" 'Erweiterung mit wildcards
        intn = 1 'Steurung der msgbox unten...
            For Each objSheet In ActiveWorkbook.Worksheets
                With objSheet.Cells
                    Set objCell = .Find(What:=strSuchtext)
                    If Not objCell Is Nothing Then
                        objSheet.Activate 'Blatt...
                        objCell.Activate '... und Zelle aktivieren
                        ActiveWindow.SmallScroll Down:=objCell.Row - 15 'sichtbar machen
                        intn = 2 'Suchtext gefunden!
                        Exit Sub
                    End If
                End With
            Next 'nächstes Blatt
    End If

    If intn = 1 Then
        MsgBox "Ihre Suchanfrage '" & Mid(strSuchtext, 2, Len(strSuchtext) - 2) _
        & "' konnte in der aktuellen Mappe nicht gefunden werden.", vbOKOnly, "Mappe durchsuchen"
    End If
    Loop While intn = 1

    Application.ScreenUpdating = True
    Set objCell = Nothing

End Sub


------------------
Gruß Pille

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 18. Feb. 2010 08:34    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für pi-design 10 Unities + Antwort hilfreich

Hallo Pille,

ich vermute, dass die Variable nicht belegt ist. Die Sub fordert ZWINGEND den Parameter Workbook an, sonst läuft nichts. Andere Parameter müssen nicht unbedingt angegeben werden, sie sind optional (wie das Wörtchen schon sagt).

Nun vergleichen wir meinen letzten Beitrag mit Deinem letzten Beitrag.

Code:
'meiner:
Sub Start_Filzen
  MappeFilzen(ThisWorkbook)
End Sub
'und Deiner:
Sub Start_Filzen()
  MappeFilzen (wbMappe)
End Sub
Als Ferndiagnose vermute ich - nachdem Du auch keine genauere Fehlermeldung postest: wbMappe ist "leer", nicht belegt, wie auch immer, wenn Du MappeFilzen starten willst. Da es sich jedoch bei wbMappe um einen Pflicht-Parameter handelt, geht ohne ihn gar nichts; das ist quasi wie ein Auto ohne Lenkrad.

Du musst es entweder
-vorher belegen oder - wie bereits erwähnt -
-aus dem Sub-Aufruf 'rausnehmen und in der Sub selbst definieren.

Mach bitte Folgendes: Tausche in Start_Filzen MappeFilzen (wbMappe) gegen MappeFilzen(ThisWorkbook).

Klappts?

------------------
DIN1055.de  |  Lastannahmen für Anwender NEU: Foren zu DIN 1055

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

pi-design
Mitglied
Design Engineer


Sehen Sie sich das Profil von pi-design an!   Senden Sie eine Private Message an pi-design  Schreiben Sie einen Gästebucheintrag für pi-design

Beiträge: 948
Registriert: 09.08.2002

Excel 2007
WIN 7 64bit

erstellt am: 18. Feb. 2010 08:55    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


ThisWorkbook.jpg

 
Hi,
ich glaube Du mußt mir da ein bisschen mehr auf die Sprünge helfen.
Das Problem ist, das mir komplett die Basics in VBA fehlen. Deshalb weiß ich nicht wie und wo und warum ich irgendwo eine Variable belegen muß.

Meine Fehlermeldung:

------------------
Gruß Pille

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 18. Feb. 2010 09:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für pi-design 10 Unities + Antwort hilfreich

Die Klammern () stören:
Zitat:
Erstes Register aktivieren - Shift-Taste gedrückt halten - letztes Register aktivieren - Strg+F drücken tut's nicht? --> Nein leider nicht. Sollte für den Anwender so einfach wie möglich sein
Möglichkeit 1 - per VBA: Der Anwender stimmt zu, dass er Makros ausführen möchte (Sicherheitseinstellung, Sicherheitsrisiko). Das Suchfenster erscheint, Suchbegriff eingeben, Suche starten. VBA springt zum ersten Treffer. Mehr kann meine Sub nicht.

Zustimmung + Makro-Start = 2 Benutzeraktionen

Möglichkeit 2 - Bordmittel: Du bringst Deinen Anwendern bei, dass sie alle Register markieren und Strg+F drücken. Damit lassen sich alle Vorkommen des Suchbegriffs finden, da der Benutzer "Weitersuchen" kann.

Register markieren + Strg+F = 2 Benutzeraktionen, dafür ist die Mappe "makro-frei".

Ein echter "Gewinn" ist VBA an dieser Stelle IMHO also nicht. Evtl. spart sich der User das Eintippen eines Suchbegriffs, der (optional) vorgeschlagen werden kann (strSuch).

Du entscheidest   .

[Edit:

Zitat:
Das Problem ist, das mir komplett die Basics in VBA fehlen. Deshalb weiß ich nicht wie und wo und warum ich irgendwo eine Variable belegen muß.
*Hüstel* Nunja - Variablenbelegung ist allerdings eine Grundlage, die ich mit Adam und Eva gleichsetze. Du möchtest eine "Programmiersprache" einsetzen? Dann sind auch ein paar Hausaufgaben erforderlich. SCNR /Edit]

------------------
DIN1055.de  |  Lastannahmen für Anwender NEU: Foren zu DIN 1055

[Diese Nachricht wurde von Paulchen am 18. Feb. 2010 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

pi-design
Mitglied
Design Engineer


Sehen Sie sich das Profil von pi-design an!   Senden Sie eine Private Message an pi-design  Schreiben Sie einen Gästebucheintrag für pi-design

Beiträge: 948
Registriert: 09.08.2002

Excel 2007
WIN 7 64bit

erstellt am: 18. Feb. 2010 09:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Super, Danke. Jetzt funzelt es.
Noch ein bisschen feintuning und ist es anwendbar.

Zitat:
Original erstellt von Paulchen:
*Hüstel*[/i] Nunja - Variablenbelegung ist allerdings eine Grundlage, die ich mit Adam und Eva gleichsetze. Du möchtest eine "Programmiersprache" einsetzen? Dann sind auch ein paar Hausaufgaben erforderlich. SCNR  /Edit]



Tja, da hast Du durchaus recht. Die Markroaufzeichnung verleitet halt auch dazu, sich in Gebiete zu verirren, auch wenn man keine Ahnung davon hat.

------------------
Gruß Pille

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 18. Feb. 2010 10:12    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für pi-design 10 Unities + Antwort hilfreich

Richtig  . Aber wie heißt es so schön: Umwege erhöhen die Ortskenntnis. Also nur zu, immer munter drauf los - und bei Fragen: Fragen!

------------------
DIN1055.de  |  Lastannahmen für Anwender NEU: Foren zu DIN 1055

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz