| |
 | Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
|
Autor
|
Thema: Suche in mehreren Arbeitblätter (1003 mal gelesen)
|
pi-design Mitglied Design Engineer
  
 Beiträge: 951 Registriert: 09.08.2002 Excel 365 WIN 10 Enterprise 64 Bit
|
erstellt am: 17. Feb. 2010 14:10 <-- editieren / zitieren --> Unities abgeben:         
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
   
 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 / zitieren --> Unities abgeben:          Nur für pi-design
|
pi-design Mitglied Design Engineer
  
 Beiträge: 951 Registriert: 09.08.2002 Excel 365 WIN 10 Enterprise 64 Bit
|
erstellt am: 17. Feb. 2010 14:37 <-- editieren / zitieren --> Unities abgeben:         
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
   
 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 / zitieren --> Unities abgeben:          Nur für pi-design
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
  
 Beiträge: 951 Registriert: 09.08.2002 Excel 365 WIN 10 Enterprise 64 Bit
|
erstellt am: 17. Feb. 2010 15:02 <-- editieren / zitieren --> Unities abgeben:         
|
Paulchen Mitglied Bauing./SW-Entwickler
   
 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 / zitieren --> Unities abgeben:          Nur für pi-design
|
pi-design Mitglied Design Engineer
  
 Beiträge: 951 Registriert: 09.08.2002 Excel 365 WIN 10 Enterprise 64 Bit
|
erstellt am: 18. Feb. 2010 06:39 <-- editieren / zitieren --> Unities abgeben:         
Irgendwie bring ich es trotzdem nicht zum laufen. Mein Code sieht so aus: Code: Sub Start_Filzen() MappeFilzen (wbMappe) End SubPrivate 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
   
 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 / zitieren --> Unities abgeben:          Nur für pi-design
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
  
 Beiträge: 951 Registriert: 09.08.2002 Excel 365 WIN 10 Enterprise 64 Bit
|
erstellt am: 18. Feb. 2010 08:55 <-- editieren / zitieren --> Unities abgeben:         
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
   
 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 / zitieren --> Unities abgeben:          Nur für pi-design
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
  
 Beiträge: 951 Registriert: 09.08.2002 Excel 365 WIN 10 Enterprise 64 Bit
|
erstellt am: 18. Feb. 2010 09:58 <-- editieren / zitieren --> Unities abgeben:         
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
   
 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 / zitieren --> Unities abgeben:          Nur für pi-design
|