Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1372to1376
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
suche mit Makro auf anderem Tabellenblatt
28.07.2014 12:44:31
Dietmar
Hallo an alle,
da bin ich schon wieder mit einem Problem.
Ich habe mal ein Beispiel beigefügt, meine dortige Anmerkung ist mein Problem.
Das Makro habe ich mal gefunden, müsste jedoch geändert werden ( das ist genau mein
Problem ).
https://www.herber.de/bbs/user/91753.xls
Gruß
Dietmar

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

Betreff
Datum
Anwender
Anzeige
AW: suche mit Makro auf anderem Tabellenblatt
28.07.2014 12:52:27
Hajo_Zi
Hallo Dietmar,
es wäre ja fast Klasse, wenn in der Suchspalte auch was stehen würde.
Select, Activate usw. ist in VBA zu 99,9% nicht notwendig.
Der Cursor ist kein Hund der überall rumgeführt werden muss.
Hinweise zu select usw. Hajo-Excel.de
Hinweise zu select usw. Online-Excel.de
Hinweise zu select usw. Online-Excel.de
Private Sub CommandButton1_Click()
Dim rngFind As Range
Dim strTitel As String
strTitel = InputBox("Artikel-Nr.:", "Artikel-Nr. eingeben", , 5, 5)
With Worksheets("Tabelle2")
Set rngFind = .Columns("B").Find(strTitel, _
LookIn:=xlFormulas)
If Not rngFind Is Nothing Then
MsgBox "Es wurde gefunden in Zeile " & rngFind.Row
Else
MsgBox "Es wurde nichts gefunden"
End If
End With
End Sub

Anzeige
AW: suche mit Makro auf anderem Tabellenblatt
28.07.2014 14:49:38
Dietmar
Hallo Hajo,
tut mir leid wenn ich das so schlecht vorbereitet habe, aber natürlich vielen Dank
für deine Problemlösung
Gruß
Dietmar

AW: suche mit Makro auf anderem Tabellenblatt
28.07.2014 12:55:12
Daniel
wenn du mit mehreren Tabellenblättern arbeitest, dann musst du vor jedem Zellbezug (Range, Cells, Rows, Columns) das Tabellenblatt davor schreiben.
Zellbezüge ohne Tabellenblattangabe davor beziehen sich immer entweder auf:
a) auf das Tabellenblatt des Moduls, wenn der Code so wie bei dir in einem Tabellenblattmodul liegt
b) auf das aktive Tabellenblatt, wenn der Code in einem allgemenien Modul oder einer Userform liegt.
Selektieren und Aktivieren funktioniert immer nur auf dem aktiven Tabellenblatt, deswegen sollte das unterbleiben, wenn man mit mehreren Tabellenblättern arbeitet:
Private Sub CommandButton1_Click()
Dim rngFind As Range
Dim strTitel As String
strTitel = InputBox("Artikel-Nr.:", "Artikel-Nr. eingeben", , 5, 5)
Set rngFind = Sheets("Tabelle2").Columns("B").Find(strTitel, LookIn:=xlFormulas)
If Not rngFind Is Nothing Then
MsgBox rngFind.Value
Else
MsgBox "Es wurde nichts gefunden"
End If
End Sub
Gruß Daniel

Anzeige
AW: suche mit Makro auf anderem Tabellenblatt
28.07.2014 14:48:22
Dietmar
Hallo Daniel,
vielen Dank für die Problemlösung
Gruß
Dietmar

AW: suche mit Makro auf anderem Tabellenblatt
28.07.2014 19:17:16
Adis
Hallo
das Ergebnis im Forum ist vielleicht nicht optimal ausgefallen, denn der letzte Code laeuft nicht!
Ich habe es in einer Beispieldatei selbst geprüft und kein Ergebnis bekommen. (Syntacs Fehler)
Set rngFind = Sheets("Tabelle2").Columns("B").Find(strTitel, LookIn:=xlFormulas)
Anbei eine Beispieldatei als sog. Universal Such-Datei für Suche in einer Tabelle
Würde mich freuen wenn sie weiter hilft. Ein Such-Blatt anlegen und Makro kopieren.
https://www.herber.de/bbs/user/91762.xls
Gruss Adis

Anzeige
So nicht !!!
28.07.2014 19:53:12
Nepumuk
Hallo Adis,
wenn du das Forum schon mit deinen Lösungen beglückst, schreib bitte dazu, dass sie unter Umständen dazu führen das alle öffentlichen, lokalen und statischen Variablen zurückgesetzt und damit auch alle Klassen mit aktiven Instanzen zerstört werden.
GoSub, unnötige On Error-Anweisungen und unnötige Sektiererei tun ein übriges um den Code unübersichtlich und langsam zu machen.
Und das Deklarieren von Variablen müssen wir auch noch üben.
Gruß
Nepumuk

AW: So nicht !!!
28.07.2014 22:48:04
Adis
persönliches Hallo an Nepumuk
Es gibt gleich 2 Kritiken an mir, auch wegen der Beispiel Datei Laufwerk C: auflisten. Ich möchte beides hören.
Ja, ich nehme Kritik ernst, bin hier zutiefst betroffen über den Vorwurf Dateienn zu zerstören,nur nehmen alle Excel Profis bitte etwas zur Kenntnis. Wenn man mich niedermacht gehe ich zuerst in die Knie und bin verwirrt, denn der Vorwurf hat es in sich. Das wäre ja ernste Gefährdung von ahnungslosen Fragenden, die ja nicht damit rechnen das damit ihre Dateien zerstören könnten.
Ich bin kein Excel Profi, aber meine Gründlichkeit besteht darin solche Vorwürfe zu prüfen. Indem ich eigene Beispiel Dateien öffen und höflich um Angaben bitte wie man die zerstört. Das will ich selbst sehen!! Ich bin bereit berechtigte Kritik anzunehmen und zu beachten. Meine Stärke ist lieber alles zu prüfen, besonders in Grundsatzfragen die Dateien gefährden können.
Meines Wissens kann ich keine öffentlichen Variablen zerstören, weil alle Makros lediglich in meiner Beispiel Datei laufen, mit Dim deklariert sind (nicht Public), und keine anderen Makros aufgerufen werden. Lediglich die Set Variablen wurden zum Schluss nicht gelöscht. Ob Set Variable in einer anderen Mappe die geöffnet ist weiter existieren weiss ich nicht, prüfe es aber nach. Ich habe auch nicht verstanden wie ich konstante Variable veränderen soll, oder ganze Klassen zerstören kann?
Deutlich erkennbar ist für mich das die Profis im Forum alle Variable auf ihre Art deklarieren. Darin kann man Klassen oder Typen erkennen. Diese Schreibweise ist aber nicht zwingend notwendig. Weil alle Profis die MS Empfehlung beachten dürften sie kaum mit meinen Variablen in Konflikt kommen. Für mich sind sie leichter verständlich. Wo liegt also hier das Problem?
Vielleicht liegt der Hauptpunkt des Ärgerniss ja in meiner Antwort das die Syntac nicht klappt. Das habe ich überprüft, denn mir ist aufgefallen das beim Suchlauf Tabelle2 nicht angegeben war. Das wurde ja berichtigt, aber einfach übersehen, das die Suchdaten in Tabelle2 in Spalte A stehen. Computer sind nun mal nicht schlau, sie können Fehler nicht selbst korrigieren. Die Rückmeldung musste logischweise lauten: MsgBox "kann keine Daten finden"
Das ist mir aber selbst erst aufgefallen, als ich das Makro in einer Mappe getestet habe. Ich war erstaunt das es nicht klappte, und dann kontrollierte ich so lange, bis ich den Schreibfehler sah.
Gruss Adis

Anzeige
AW: So nicht !!!
28.07.2014 23:32:58
Nepumuk
Hallo Adis,
sobald ich auf diese Anweisung laufe: End
Sind alle Variablen zurückgesetzt und alle Klassen zerstört. Nicht irgendeine Datei. Klassen sind virtuelle Objekte die ich im Arbeitsspeicher anlege und die werden dabei gelöscht. Auch geöffnete Datenbanken werden geschlossen.
Diese Anweisung ist, wenn es nur dieses eine Makro in der Mappe gibt kein Problem. Ich habe aber Mappen mit über 100.000 Zeilen Code die teilweise auf 2-3 Datenbanken zugreifen und da ist die End-Anweisung pures Gift. Ich muss nämlich anschließend die Klassen neu initialisieren, Variablen füllen und Datenbanken wieder verbinden (das dauert ein paar Sekunden).
Für mich ist dein Makro ja auch kein Problem, denn darauf bin ich nicht angewiesen. Aber es gibt genügend Leute die sich Code aus Foren zusammenklauben ohne groß Zusammenhänge zu verstehen. Und darum muss ein Code nicht nur solitär funktionieren sondern darf auch in komplexeren Strukturen keine nachteilige Auswirkung haben.
Gruß
Nepumuk
Anzeige

68 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige