Suchefunktion durch Makro gestalten

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Suchefunktion durch Makro gestalten

Danke

von funnyzocker » So, 15.04.2007 12:29

Ja Danke nun Funktioniert es so wie ich es mit vorgestellt habe.
Vielen Dank

von Karolus » Sa, 14.04.2007 21:36

Hallo

Tausch mal die ersten beiden Makros gegen:

Code: Alles auswählen

sub sucheanfang
suchdok = thisComponent
suchtab = suchdok.sheets(0) '0→erstes Tabellenblatt
odraw1= suchtab.drawpage
  form1=odraw1.forms.getbyIndex(0)
  oContr=form1.getbyname("TextBox")
suchtext = oContr.Text 
'suchtext = suchtab.getcellbyPosition(3,5).string '-->D6
suchen(suchtext,0)
end sub

sub weitersuchen
suchdok = thisComponent
suchtab = suchdok.sheets(0) 'erstes Tabellenblatt
odraw1= suchtab.drawpage
  form1=odraw1.forms.getbyIndex(0)
  oContr=form1.getbyname("TextBox")
suchtext = oContr.Text 
'suchtext = suchtab.getcellbyPosition(3,5).string '-->D6
suchen(suchtext,1)
end sub
Gruß Karo

Geht ja nicht

von funnyzocker » Sa, 14.04.2007 20:01

Wenn ich das Textfeld mit der Zelle Verknüpfe, wird wenn ich in das Textfeld was eingebe das selbe in der Zelle eingegeben und er findet als erstes das.
Er soll aber nur das Finden was wirklich da ist und nicht was ich als Suche eingegeben habe.

von Karolus » Sa, 14.04.2007 19:51

Hallo

Gib doch in den Einstellungen des Textfeldes unter 'Daten'-->'Verknüpfte Zelle'
die Zelle D6 ein.

Gruß Karo

TExtfeld

von funnyzocker » Sa, 14.04.2007 18:58

Kann ich das irgendwie ändern das es über das Textfeld läuft?
Sieht besser aus

von turtle47 » Sa, 14.04.2007 17:46

Hallo Funnyzocker,
Habe ein Textfeld und eine Schaltfläche.
Wer hat denn was von einem Textfeld geschrieben.
Der zu suchende Text steht in Zelle D6!
Vorgesehen ist die Zelle „D6“ als Suchfeld

Code: Alles auswählen

suchtext = suchtab.getcellbyPosition(3,5).string '-->D6
Viel Erfolg.

Jürgen

von Karolus » Sa, 14.04.2007 17:40

Hallo
Du möchtest alle Tabellen durchsuchen, dafür hatte ich an entsprechender Stelle einen Kommentar eingetragen:

Code: Alles auswählen

...
args1(3).Name = "SearchItem.AllTables"
args1(3).Value = false                       'hier true, falls alle Blätter durchsucht werden sollen 
...
ändere die Zeile auf:

Code: Alles auswählen

...
args1(3).Value = true
....
Gruß Karo

Sorry

von funnyzocker » Sa, 14.04.2007 16:52

Sorry das ich das alte Thema nochmals hochhole.
Aber ich habe das gerade dank der Suche im Forum gefunden.

Ich kann genau das Makro sehr gut gebrauchen nur leider habe ich das Problem das nicht alle Tabellen durchsucht werden.

Ich habe eine Hauptübersicht und je Monat 1 Tabelle.
Nun soll in der Hauptübersicht in Suchformular wo ich einen Auftragsnummer eingeben kann (Die ja unique) ist. Nach Klick sollen alle Tabellen in Durchsucht werden. Leider findet das Makro immer keine Einträge.

Habe ein Textfeld und eine Schaltfläche. Die Schaltfläche Funktioniert (Also es wird die suche ausgeführt) Aber er sucht nicht nach dem eintrag in dem Textfeld. Muss ich die beiden Verknüpfen oder wie?

Makro für Suchefunktion

von Loewelutz » Do, 07.12.2006 07:42

Hey Karo,

Du hast natürlich absolut Recht. Ich hatte irrtümlich die erste Schaltfläche mit der Sub 'suchen' verknüpft, statt mit 'sucheanfang' ?

Nun funktioniert alles perfekt! Ich hatte nicht damit gerechnet, dass sich mein Idealwunsch verwirklichen lässt.

Tausend Dank !!! Lutz

von Karolus » Mi, 06.12.2006 17:58

Hallo Lutz

Ich kann leider nicht die Fehlermeldung nachvollziehen, die du beim Auslösen von 'sucheanfang' erhälst. Bei mir tut dieses Makro genau das was du :
Ließe sich die Sache auch so lösen, dass nach Aktivierung einer einzelnen Schaltfläche die Markierung zunächst zum ersten Treffer wechselt, nach einer erneuten Aktivierung zur zweiten u.s.w.? Das wäre genial.
-hier wünscht, nämlich bei jedem Tastendruck zum nächsten Treffer wechseln.
Was passiert bei dir wenn du die Schaltfläche mehrmals betätigst ?
Falls nur die andere Schaltfläche funktioniert, hast du evtl. irrtümlich die erste Schaltfläche mit mit der Sub 'suchen(.,.,.)' verknüpft, statt mit 'sucheanfang' ?

Gruß

Makro - Suchen

von Loewelutz » Mi, 06.12.2006 16:10

Super Karo, da ziehe ich den Hut!

Durch Dein Makro bin ich kurz vor dem Ziel. Ob Du mir noch bei der Feinabstimmung helfen könntest?

Ich habe beide Schaltflächen „suchen“ und „weitersuchen“ mit dem entsprechenden Makros verknüpft. Beim Auslösen des ersten Makro erhalte ich die Fehlermeldung:

„BASIC-Laufzeitfehler. Argument ist nicht optional“

Danach die Schaltfläche „Weitersuchen“ betätigt und der Suchbegriff im Calc-Dokument wird schwarz hinterlegt (auch Mehrfachtreffer). Allerdings springt das Programm noch nicht automatisch zur entsprechenden Stelle im Dokument (Datei wird später einmal mehrere tausend Zeilen umfassen).

Nun müssen es natürlich nicht unbedingt zwei Schaltflächen sein. Ich habe mir dies bisher nur aus der ursprünglichen `Suchefunktion` abgeschaut.

Ließe sich die Sache auch so lösen, dass nach Aktivierung einer einzelnen Schaltfläche die Markierung zunächst zum ersten Treffer wechselt, nach einer erneuten Aktivierung zur zweiten u.s.w.? Das wäre genial ;-)

Herzlicher Gruß ... Lutz

von Karolus » Mi, 06.12.2006 14:06

Hallo Lutz
Wie lässt sich dieses Problem am geschmeidigsten lösen? (Open Office 1.1)
Mit kreativer Nutzung von ->Extras->Makros aufzeichnen.
Da ich nicht sicher bin, wie gut das in OOo1.1 funktioniert, bin ich für dich mal kreativ geworden :

Code: Alles auswählen

sub sucheanfang
suchdok = thisComponent
suchtab = suchdok.sheets(0) '0→erstes Tabellenblatt
suchtext = suchtab.getcellbyPosition(3,5).string '-->D6
suchen(suchtext,0)
end sub

sub weitersuchen
suchdok = thisComponent
suchtab = suchdok.sheets(0) 'erstes Tabellenblatt
suchtext = suchtab.getcellbyPosition(3,5).string '-->D6
suchen(suchtext,1)
end sub

sub suchen(suchtext,w)
rem aufgezeichneter Code von->su&ersetzen-'suchen', nachträglich sind-
rem - die Variblen 'suchtext' und 'w' eingefügt.
rem define variables
dim document   as object
dim dispatcher as object
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

dim args1(17) as new com.sun.star.beans.PropertyValue
args1(0).Name = "SearchItem.StyleFamily"
args1(0).Value = 2
args1(1).Name = "SearchItem.CellType"
args1(1).Value = 0
args1(2).Name = "SearchItem.RowDirection"
args1(2).Value = true
args1(3).Name = "SearchItem.AllTables"
args1(3).Value = false                       'hier true, falls alle Blätter durchsucht werden sollen
args1(4).Name = "SearchItem.Backward"
args1(4).Value = false
args1(5).Name = "SearchItem.Pattern"
args1(5).Value = false
args1(6).Name = "SearchItem.Content"
args1(6).Value = false
args1(7).Name = "SearchItem.AsianOptions"
args1(7).Value = false
args1(8).Name = "SearchItem.AlgorithmType"
args1(8).Value = 0           '1→'regulärer Ausdruck'
args1(9).Name = "SearchItem.SearchFlags"
args1(9).Value = 65536
args1(10).Name = "SearchItem.SearchString"
args1(10).Value = suchtext          '←da ist die Variable
args1(11).Name = "SearchItem.ReplaceString"
args1(11).Value = ""
args1(12).Name = "SearchItem.Locale"
args1(12).Value = 255
args1(13).Name = "SearchItem.ChangedChars"
args1(13).Value = 2
args1(14).Name = "SearchItem.DeletedChars"
args1(14).Value = 2
args1(15).Name = "SearchItem.InsertedChars"
args1(15).Value = 2
args1(16).Name = "SearchItem.TransliterateFlags"
args1(16).Value = 1280
args1(17).Name = "SearchItem.Command"
args1(17).Value = w         'w=0→suchen,w=1→weitersuchen

dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())


end sub
Speichere den Code in der Standardbiliothek deines Dokuments, und verknüpfe die schaltflächen mit den Subs 'sucheanfang' und 'weitersuchen'.


Gruß Karo

Suchefunktion durch Makro gestalten

von Loewelutz » Mi, 06.12.2006 10:25

In einem Calc-Dokument soll die Suchefunktion komfortabler gestaltet werden, da die übliche Eingabemaske (Strg + „G“) zu viel vom Dokument verdeckt.

Vorgesehen ist die Zelle „D6“ als Suchfeld. Mit einem Button soll die Suche in dem geöffneten Dokument gestartet werden. Mit einem zweiten Button soll weiter gesucht werden.

Wie ich Schaltflächen erstelle, ist mir bekannt. Allerdings fehlen mir die Kenntnisse zur erforderlichen Makroprogrammierung.

Wie lässt sich dieses Problem am geschmeidigsten lösen? (Open Office 1.1)

Herzlichen Dank ... Lutz

Nach oben