Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

suchmakro ändern





Frage

hallo excelfreunde ;o) habe mal wieder für mich ein unlösbares problem. da ich weiss, dass ihr viele angaben braucht hoffe ich nichts zu vergessen. habe ein suchmakro das ein/en titel/namen/wort suchen soll aus spalte A. funktioniert soweit bestens solange die spalte A eingeblendet bleibt. aber da mir spalte A optisch auf dem tabellenblatt nicht gefällt, hab ich es kurzerhand ausgeblendet. und wenn spalte A ausgeblendet ist, funktioniert das makro nicht mehr... was muss ich ändern. hier mal das makro: [b] Sub makro06() anfang: Dim zaehler1, zaehler3, zeile1 Dim suche1, suche2, wert01, firstAddress, wert03 zeile1 = 1500 ReDim wert02(zeile1) Rows("6:" & zeile1).EntireRow.Hidden = False wert01 = InputBox("Serie suchen") If wert01 = "" Then End Set suche1 = Worksheets("Serien").Range("a6:a" & zeile1).Find(wert01, LookIn:=xlValues) If Not suche1 Is Nothing Then wert02(suche1.Row) = 1 firstAddress = suche1.Address Do Set suche1 = Worksheets("Serien").Range("a6:a" & zeile1).FindNext(suche1) If Not suche1 Is Nothing And suche1.Address <> firstAddress Then wert02(suche1.Row) = 1 Loop While Not suche1 Is Nothing And suche1.Address <> firstAddress End If For zaehler1 = 6 To zeile1 If wert02(zaehler1) = 0 Then Rows(zaehler1 & ":" & zaehler1).EntireRow.Hidden = True End If wert03 = wert03 + wert02(zaehler1) Next zaehler1 If wert03 = 0 Then zaehler3 = MsgBox("Nix gefunden !!!" & Chr$(13) & "nochmal Suchen ?", vbYesNo + vbQuestion) Rows("6:" & zeile1).EntireRow.Hidden = False End If If zaehler3 = vbYes Then GoTo anfang End Sub[/b]

Antwort 1 von Saarbauer

Hallo,

die Spalte A ausgeblendet wird von Excel wie nicht vorhanden interpretiert (gilt auch für ausgeblendete Zeilen).

Entweden musst du die Spalte Einblenden oder dein Makro so ergänzen, dass für die Ausführung die Spalte eingeschaltet wird oder die Abfrage auf die schtbaren Spalten geändert wird. Wobei ich dich so verstanden habe, dass die zweite Lösung(sichtbare Spalten) nicht von dir gewollt ist.

Gruß

Helmut

Antwort 2 von Ponschonovi

hallo helmut,

danke für die schnelle antwort ;o)

kannst du mir bei der ergänzung behilflich sein ?

funktioniert dann die ergänzung so, dass die spalte bei der suche ein- und nach dem ergebnis ausgeblendet wird ? aber so, dass das gesuchte auch sichtbar bestehen bleibt bis ich es wegklicke.

und wo muss ich die ergänzung einfügen ?

vielen dank
Ponschonovi

Antwort 3 von JoeKe

Hi Ponschonovi,

100% kann ich es jetzt nicht überprüfen, denn ich nutze ein Makro bei dem die Spalten A und B verglichen werden. Dies geht auch bei ausgeblendeter Spalte A.
Aber setze doch in dein Makro folgende Ergänzungen ein:

Cells.EntireColumn.Hidden = False am Anfang deines Makros. Es blendet Spalte A ein.

Columns("A:A").EntireColumn.Hidden = True am Ende deines Makros. Es blendet die Spalte A wieder aus.

Vieleicht hilft dir das.

MfG JöKe

Antwort 4 von JoeKe

Hi ponschonovi,

hab dein Code einwenig verändert. Probier mal folgendes:

Sub makro06()
anfang:
Dim zaehler1, zaehler3, zeile1, strAntwort As String, strAntwort2 As String
Dim suche1, suche2, wert01, firstAddress, wert03
zeile1 = 1500
ReDim wert02(zeile1)
Rows("6:" & zeile1).EntireRow.Hidden = False
wert01 = InputBox("Serie suchen")
Cells.EntireColumn.Hidden = False
If wert01 = "" Then End
Set suche1 = Worksheets("Vergleich").Range("A6:A" & zeile1).Find(wert01, LookIn:=xlValues)
If Not suche1 Is Nothing Then
wert02(suche1.Row) = 1
firstAddress = suche1.Address
Do
Set suche1 = Worksheets("Vergleich").Range("A6:A" & zeile1).FindNext(suche1)
If Not suche1 Is Nothing And suche1.Address <> firstAddress Then wert02(suche1.Row) = 1
Loop While Not suche1 Is Nothing And suche1.Address <> firstAddress
End If
For zaehler1 = 6 To zeile1
If wert02(zaehler1) = 0 Then
Rows(zaehler1 & ":" & zaehler1).EntireRow.Hidden = True
End If
wert03 = wert03 + wert02(zaehler1)
Next zaehler1
If wert03 = 0 Then
zaehler3 = MsgBox("Nix gefunden !!!" & Chr$(13) & "nochmal Suchen ?", vbYesNo + vbQuestion)
End If
If zaehler3 = vbYes Then GoTo anfang
strAntwort = MsgBox("Soll Spalte A ausgeblendet werden?", vbYesNo)
If strAntwort = vbYes Then
Columns("A:A").EntireColumn.Hidden = True
Else
strAntwort2 = MsgBox("Neue Suche?", vbYesNo)
If strAntwort2 = vbYes Then GoTo anfang
Columns("A:A").EntireColumn.Hidden = True
End If
End Sub

Hierbei wird Spalte A zum suchen eingeblendet. Nach Abschluss der Suche wird abgefragt ob Spalte A ausgeblendet werden soll, bei Nein wird eine neue Suche angeboten.

Probiers einfach mal aus.

MfG JöKe

Antwort 5 von Ponschonovi

hallo,

@JöKe super, hat funktioniert, vielen vielen dank !

wenn ich schonmal hier bin, könnt ihr mir villeicht helfen, das suchmakro zusätzlich zu spalte A noch auf spalte E und F zu erweitern, beginnend mit zeile 6 ?

danke schonmal und
internette grüsse
Ponschonovi

Antwort 6 von Ponschonovi

hehe, war ja fast zeitgleich ;o)

Antwort 7 von JoeKe

Hi Ponch,

erstmal noch zum meinem Code. Die Worsheets("Vergleich") must du wieder durch dein Worksheets("Serien") ersetzen.

Und nun zu deiner Zusatzfrage. Soll in Spalte E und F der gleiche Begriff gesucht werden?

MfG JöKe

Antwort 8 von Ponschonovi

auch hallo,

ja, es soll der gleiche begriff gesucht werden...

internette grüsse
Ponschonovi

Antwort 9 von JoeKe

Also Ponch, ich habe mir inzwischen mal eine Test-Datei gebastelt. Bedingt ist das durchführbar. Allerdings müsste deine Variable "zeile1" durch den vorgegebenen Wert 1500 ersetzt werden also überall wo jetzt zeile1 steht muss 1500 hin.
Diese
Set suche1 = Worksheets("Vergleich").Range("A6:A" & zeile1).Find(wert01, LookIn:=xlValues)
und diese
Set suche1 = Worksheets("Vergleich").Range("A6:A" & zeile1).FindNext(suche1)
müssen so geändert werden:
Set suche1 = Worksheets("Vergleich").Range("A6:A1500,E6:E1500,F6:F1500).Find(wert01, LookIn:=xlValues)
die andere ebenso.
Bin mir aber jetzt nicht sicher ob dies die Lösung ist die du suchst.
Wenn deine Datei keine Daten enthält die mich nichts angehen oder dem Datenschutz unterliegen, kanst du sie mir ja mal mit einer kurzen Beschreibung was du machen möchtest mailen. Dann kann ich dir sicher besser helfen.

MfG JöKe

PS: Könnte aber erst Morgen was machen.

Antwort 10 von JoeKe

Ganz vergessen:

joeke@arcor.de

Antwort 11 von JoeKe

joekem@arcor.de

so ist es richtig!

Antwort 12 von Ponschonovi

hallo JöKe,

vielen dank, so toll hab ich mir das makro nicht vorgestellt. ich bin begeistert. danke dafür !

ich fand auch super, das du in grün dazugeschrieben hast welche funktion der code ausführt, so kann man
mehr über die codes lernen...

internette grüsse
Ponschonovi

Antwort 13 von JoeKe

Moin Ponchonovi,

schön das ich es so geworden ist wie du es haben wolltest.

Falls du noch mehr mit Makros machen willst hier noch ein paar Tips um sie übersichtlicher zu gestallten:

  • gib deinen Variablen eindeutige Namen. Vermeide Nummerierungen (zaehler1, zaehler2 usw.) die gerade bei längeren Makros unübersichtlich werden.
  • weise deinen Variablen einen passenden Datentyp zu (interger, string, long usw.). Ansonsten erhalten sie den Typ Variant der mit 22 Bytes den meisten Speicher braucht.
  • gib deinem Makro einen ausagekräftigen Namen. Dann lassen sie sich später für Änderungen oder anderes besser finden.
  • setze Erklärungen, sowie ich es gemacht habe, ein. Dran denken: die Erklärung muss mit einem Hochkomma beginnen (Umschalttaste+Raute).
  • wenn mehrere Auktion stattfinden sollen, und du nicht über ihren Ablauf sicher bist, teste sie in seperaten Makros.

    Genug geschulmeistert! :-))

    Ich möchte aber betonen (bevor eine Diskussion entsteht), dass dies meine persönliche Arbeitsweise ist. Jeder Programmierer hat seine eigene Note.

    Wenn du an einer Liste über Datentypen interesse hast, kann ich dir eine mailen.

    Schönen Tag
    MfG JöKe

  • Ich möchte kostenlos eine Frage an die Mitglieder stellen:


    Ähnliche Themen:


    Suche in allen vorhandenen Beiträgen: