Herbers Excel-Forum - das Archiv

Titel suchen / resume next

Bild

Betrifft: Titel suchen / resume next
von: IngoH

Geschrieben am: 28.12.2006 12:26:24
Hallo allerseits,
2 kleine Fragen eher allgemeiner Art.
Zu 1: Ich muß einen bestimmten Fenstertitel ermitteln, der jedoch
in Teilen je nach aufrufenden User unterschiedlich sein kann.
Nachfolgende Prozedur hatte ich mal im Netz gefunden.
Daraus wollte ich eine Funktion basteln und in dem ****** Teil
nach dem bekannten Namensbestandteil suchen lassen.
Das wird sicher funktionieren, aber evtl. hat jemand eine bessere Lösung parat ?
Public
Sub GetWindowList()
Dim hWnd As Long, sTitle As String, lStyle As Long, Task_name() As String
Dim count As Integer, index As Integer, gefunden As Boolean
hWnd = FindWindowLong(ByVal 0&, ByVal 0&)
hWnd = GetWindow(hWnd, GW_HWNDFIRST)
Do
gefunden = False
lStyle = GetWindowLong(hWnd, GWL_STYLE)
lStyle = lStyle And (WS_VISIBLE Or WS_BORDER)
sTitle = GetWindowTitle(hWnd)
If (lStyle = (WS_VISIBLE Or WS_BORDER)) = True Then
If Trim(sTitle) <> "" Then
For index = 1 To count
If Task_name(index) = sTitle Then
gefunden = True
Exit For
End If
Next index
If Not gefunden Then
count = count + 1
ReDim Preserve Task_name(1 To count)
Task_name(count) = sTitle
End If
End If
End If
hWnd = GetWindow(hWnd, GW_HWNDNEXT)
Loop Until hWnd = 0
For index = 1 To count
MsgBox Task_name(index)
Next index
End Sub

Die zweite Frage bezieht sich auf die Verwendung von Resume next.
In einer Funktion zur Berechnung von Arbeitszeiten unter Berücksichtigung der Berechnung des Ostersonntages gibt es Konstellationen, die Fehler verursachen.
(Typen unverträglich) Die Funktion ist soweit durchdacht, dass diese Kombinationen von vornherein ignoriert werden. Dadurch habe ich natürlich ein paar Zeilen Code produziert.
Mein Kollege meint, einfach die "kurze" Schreibweise verwenden und die Fehler mit Resume next aushebeln, sei die gebräuchliche Variante.
Tja, ist das wirklich gebräuchlich, Fehler zu "überspringen" anstatt sie zu vermeiden ? Einfacher wäre es sicher, aber ich habe da die Befürchtung, dass u.U. ein Programmteil doch einmal nicht sauber durchläuft.
Danke für Eure Meinung
Gruß, Ingo
Bild

Betrifft: AW: Titel suchen / resume next
von: IngoG

Geschrieben am: 28.12.2006 12:36:31
Hallo Ingo,
da Du kein Kriterium kennst, mit dem Du den String automatisch erkennst,
was hälst Du von
'***************************************
text=""
For index = 1 To count
text=text & format(index,"0000") & ": " & Task_name(index) & vbcr
Next index
MsgBox text
'**************************************
vorher mußt Du noch
Dim text as string
einfügen
Gruß Ingo
Bild

Betrifft: Titel suchen(ok) / resume next (offen)
von: IngoH

Geschrieben am: 28.12.2006 13:32:39
Hallo Ingo,
ich schrieb, der Titel ist in Teilen unterschiedlich ;-)
Der nicht unterschiedliche Bereich ist jetzt wie nachfolgend eingebaut.
Klappt auch einwandfrei, um das Fenster in den Vordergrund zu holen.
Ich dachte nur, dass das "durchsuchen" aller Fenstertitel evtl. einfacher geht.
Danke für Deine Antwort und Gruß vom Namensvetter
For index = 1 To count
If Right(Task_name(index), 12) = "Paisy Dialog" Then
Fenstertitel_Paisy_Dialog = Task_name(index)
Exit For
End If
Next index
End Function
Bild

Betrifft: AW: Titel suchen(ok) / resume next (offen)
von: Nepumuk

Geschrieben am: 28.12.2006 14:49:44
Hallo Ingo,
du könntest die Abfrage etwas fürher machen. Also nicht erst alle Fenstertitel sammeln und dann auswerten, sondern gleich auswerten. Bringt zwar nur ein paar Millisekunden, aber es spart ein paar Deklarationen und die zusätzliche Schleife.
Gruß
Nepumuk
Bild

Betrifft: AW: Titel suchen(ok) / resume next (offen)
von: IngoH

Geschrieben am: 28.12.2006 15:53:01
Hallo Nepumuk,
kann ich erst wieder morgen in der Fa. testen.
Ich vermute mal, gleich hinter
If Trim(sTitle) <> "" Then
kann
If Right(Task_name(index), 12) = "Paisy Dialog" Then
anschliessen.
Obwohl, ist If Trim(sTitle) <> "" Then überhaupt wichtig ?
Gruß, Ingo
Bild

Betrifft: AW: Titel suchen(ok) / resume next (offen)
von: Nepumuk
Geschrieben am: 28.12.2006 15:56:56
Hallo Ingo,
ja, das ist schon wichtig, du hast nämlich jederzeit knapp 100 Fenster ohne Titel offen. Die würden ja alle in deinem Array landen. Wenn du natürlich gleich nach deinen Fenster suchst, dann erübrigt sich diese Abfrage.
Gruß
Nepumuk
Bild

Betrifft: AW: Titel suchen(ok) / resume next (offen)
von: IngoH
Geschrieben am: 28.12.2006 16:27:31
ok, dann macht es evtl. wohl Sinn, Fenster ohne Titel
gar nicht erst zu überprüfen.
Wo kommem knapp 100 Fenster her ?
Sind das Dienste des Betriebssystems ?
Ingo
Bild

Betrifft: AW: Titel suchen(ok) / resume next (offen)
von: Nepumuk
Geschrieben am: 28.12.2006 18:02:49
Hallo Ingo,
schau's dir selber an: https://www.herber.de/bbs/user/39229.zip
Gruß
Nepumuk
Bild

Betrifft: Interessant, Danke (o.T.)
von: IngoH
Geschrieben am: 28.12.2006 19:04:00
 Bild
Excel-Beispiele zum Thema "Titel suchen / resume next"
Zellinhalt suchen und Zelle auswählen Suchbegriff über mehrere Tabellenblätter suchen.
Suchen und weitersuchen Zahl +/- 1 suchen
Ein Zeichen in einer Formel suchen Datum suchen und Wert eintragen
Wert in Tabelle suchen und in UserForm ausgeben Letzte Zelle mit Inhalt suchen
Textdatei nach Begriff durchsuchen und Fundzeile importieren Wert in Array suchen, ohne jedes Datenfeld abzufragen