Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen

suche mit Makro auf anderem Tabellenblatt

Betrifft: suche mit Makro auf anderem Tabellenblatt von: Dietmar
Geschrieben am: 28.07.2014 12:44:31

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

  

Betrifft: AW: suche mit Makro auf anderem Tabellenblatt von: Hajo_Zi
Geschrieben am: 28.07.2014 12:52:27

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
GrußformelHomepage


  

Betrifft: AW: suche mit Makro auf anderem Tabellenblatt von: Dietmar
Geschrieben am: 28.07.2014 14:49:38

Hallo Hajo,

tut mir leid wenn ich das so schlecht vorbereitet habe, aber natürlich vielen Dank
für deine Problemlösung

Gruß
Dietmar


  

Betrifft: AW: suche mit Makro auf anderem Tabellenblatt von: Daniel
Geschrieben am: 28.07.2014 12:55:12

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


  

Betrifft: AW: suche mit Makro auf anderem Tabellenblatt von: Dietmar
Geschrieben am: 28.07.2014 14:48:22

Hallo Daniel,

vielen Dank für die Problemlösung

Gruß
Dietmar


  

Betrifft: AW: suche mit Makro auf anderem Tabellenblatt von: Adis
Geschrieben am: 28.07.2014 19:17:16

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


  

Betrifft: So nicht !!! von: Nepumuk
Geschrieben am: 28.07.2014 19:53:12

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


  

Betrifft: AW: So nicht !!! von: Adis
Geschrieben am: 28.07.2014 22:48:04

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


  

Betrifft: AW: So nicht !!! von: Nepumuk
Geschrieben am: 28.07.2014 23:32:58

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


 

Beiträge aus den Excel-Beispielen zum Thema "suche mit Makro auf anderem Tabellenblatt"