Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
768to772
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
768to772
768to772
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Excel soll sich bemerkbar machen

Excel soll sich bemerkbar machen
29.05.2006 19:29:01
robert@fam-gronegger.de
Hallo,
ich habe derzeit ein Makro laufen, dass den Wert einer Zelle laufend mit dem Wert einer anderen abgleicht. Die Information in der ersten Zelle wird über eine externe Datenquelle "gefüttert".
Sofern die Bedingung des Makros erfüllt ist, bringt excel eine MessageBox.
Nun kann es sein, dass die Excel Tabelle im Hintergrund aktiv ist und ich in einer anderen Anwendung (z.B Word) arbeite.
Das Problem ist, dass ich von der MessageBox nur etwas mitbekomme, wenn ich in Excel bin bzw. Excel aufrufe.
Wisst Ihr eine Anweisung, dass sich Excel über das gesamte Windows bemerkbar macht? Mir würde es auch schon genügen, wenn die Anwendung in der Startleiste blinkt!
Vielen Dank vorab
Robert

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel soll sich bemerkbar machen
29.05.2006 20:02:58
Nepumuk
Hallo Robert,
es ginge zwar mit eine Msgbox auch, aber mit einem Userform wäre es viel einfacher. Das kannst du mit der API - Funktion "SetWindowPos" in den Vordergrund bringen.
Gruß
Nepumuk

AW: Excel soll sich bemerkbar machen
29.05.2006 22:32:04
Robert
Hallo,
vielen dank füpr die info.
mit api hatte ich bisher nichts am hut.
durch ausprobieren habe ich das ganze jetzt wiefolgt ins makro gepackt.
leider hat s noch nicht den gewünschten effekt:
Private Declare Function SetWindowPos Lib "user32" () As Boolean
Private Sub Worksheet_Calculate()
On Error Resume Next
If Range("D28").Value = "nein" Then
If Range("C28").Value &gt Range("B28").Value Then
SetWindowPos
MsgBox "Limit erreicht in Reihe 28"
Range("D28").Value = "ja"
End If
End If
muss ich bei dem Befehl SetWindowPos im Makro noch etwas weiteres angeben? (Wohin z.B.)
Gruß
Robert
Anzeige
AW: Excel soll sich bemerkbar machen
30.05.2006 15:36:39
Nepumuk
Hallo Robert,
ganz so einfach ist es nicht. :-)
Option Explicit

Private Declare Function FindWindow Lib "User32.dll" Alias "FindWindowA" ( _
    ByVal lpClassName As String, _
    ByVal lpWindowName As String) As Long
Private Declare Sub SetWindowPos Lib "User32.dll" ( _
    ByVal hWnd As Long, _
    ByVal hWndInsertAfter As Long, _
    ByVal X As Long, _
    ByVal Y As Long, _
    ByVal cx As Long, _
    ByVal cy As Long, _
    ByVal wFlags As Long)

Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2
Private Const SWP_NOSIZE = &H1
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOACTIVATE = &H10
Private Const SWP_SHOWWINDOW = &H40

Private Sub prcExcel_to_front()
    Dim hWnd As Long
    hWnd = FindWindow("XLMAIN", Application.Caption)
    SetWindowPos hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or _
        SWP_NOSIZE Or SWP_NOACTIVATE Or SWP_SHOWWINDOW
    SetWindowPos hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
End Sub

Public Sub test()
    Application.OnTime Time + TimeSerial(0, 0, 5), "prcExcel_to_front"
End Sub

Gruß
Nepumuk

Anzeige
AW: Excel soll sich bemerkbar machen
30.05.2006 22:01:47
Robert
hallo,
super.
vielen dank, dass ist genau das ding, was ich wollte.
da wär ich kläglich für alle zeit gescheitert....
zwei fragen habe ich noch:
für was ist das makro test gut?
muss man programmierer sein, um das zu können oder nur ein gutes buch gelesen haben?
viele grüße & nochmals vielen dank
robert
AW: Excel soll sich bemerkbar machen
30.05.2006 22:17:04
Nepumuk
Hallo Robert,
über 25 Jahre Erfahrung und ein gutes Buch. Die Routine test ist nur zum testen, diese startet die andere Prozedur nach 5 Sekunden.
Gruß
Nepumuk

AW: Excel soll sich bemerkbar machen
30.05.2006 22:24:01
Robert
und welches buch ist empfehlenswert?
eine weitere frage hätte ich noch.
ich suche verzweifelt nach einer funktion, mit der überprüfen kann, ob der inhalt einer zelle eine zahl (mit nachkommastellen) ist. aber irgendwie finde ich nix passendes (Auch im objektkatalog).
weisst du hier eventuell weiter?
viele grüße
robert
Anzeige
AW: Excel soll sich bemerkbar machen
30.05.2006 22:33:17
Nepumuk
Hallo Robert,
ein gutes Buch:
Titel: Excel VBA
Autor: Michael Schwimmer
ISBN: 3-8273-2183-2
Preis: 39,95€ (Schau mal bei Amazon, da hab ich meines für 15€ bekommen)
Prüfen, ob eine Nachkommazahl drin steht, einfach so:
Public Sub test()
    With Cells(1, 1)
        If IsNumeric(.Text) Then
            If .Value <> Fix(.Value) Then MsgBox "Nachkommastellen vorhanden"
        End If
    End With
End Sub

Gruß
Nepumuk

Anzeige
AW: Excel soll sich bemerkbar machen
05.06.2006 13:58:51
robert
hallo,
im "betrieb" ist mir aufgefallen, dass das excel fenster nur bei manchen anwendungen in den vordergrund kommt. bei anderen macht es nur den ton, kommt aber nicht nach vorne.
hast du eine idee, woran das liegen kann?
gruß
robert
AW: Excel soll sich bemerkbar machen
30.05.2006 22:31:46
Robert
und welches buch ist empfehlenswert?
eine weitere frage hätte ich noch.
ich suche verzweifelt nach einer funktion, mit der überprüfen kann, ob der inhalt einer zelle eine zahl (mit nachkommastellen) ist. aber irgendwie finde ich nix passendes (Auch im objektkatalog).
weisst du hier eventuell weiter?
viele grüße
robert
AW: Excel soll sich bemerkbar machen
29.05.2006 21:50:58
K.Rola
Hallo,
das kannst du mit der API-Funktion:
Private Declare Function FlashWindowEx Lib "user32" (pfwi As FLASHWINFO) As Boolean
lösen.
Gruß K.Rola
Anzeige
AW: Excel soll sich bemerkbar machen
29.05.2006 22:33:28
Robert
Hallo,
vielen dank füpr die info.
mit api hatte ich bisher nichts am hut.
durch ausprobieren habe ich das ganze jetzt wiefolgt ins makro gepackt.
leider hat s noch nicht den gewünschten effekt:
Private Declare Function FlashWindowEx Lib "user32" () As Boolean
Private Sub Worksheet_Calculate()
On Error Resume Next
If Range("D28").Value = "nein" Then
If Range("C28").Value &gt Range("B28").Value Then
FlashWindowEx
MsgBox "Limit erreicht in Reihe 28"
Range("D28").Value = "ja"
End If
End If
muss ich bei dem Befehl FlashWindowEx im Makro noch etwas weiteres angeben? (Wohin z.B.)
Gruß
Robert
Anzeige
AW: Excel soll sich bemerkbar machen
29.05.2006 22:43:22
K.Rola
Hallo,
ganz so einfach ist es nicht. Lad am besten mal eine verschlankte Beispielmappe hoch,
in der nur das relavante Makro enthalten ist.
Gruß K.Rola
AW: Excel soll sich bemerkbar machen
29.05.2006 22:51:56
Robert
Hallo,
dafür reichen die vba kenntnisse dann nicht mehr aus...
anbei die datei:
https://www.herber.de/bbs/user/33987.xls
viele grüße
AW: Excel soll sich bemerkbar machen
30.05.2006 09:23:28
Robert
hi,
vielen dank für den code.
jetzt blinkt es zwar, aber das excel fenster springt noch nicht in den vordergrund....
gibt es für so eine funktion einen code?
vielen dank vorab
gruß
Anzeige
AW: Excel soll sich bemerkbar machen
30.05.2006 14:36:36
K.Rola
Hallo,
"...Mir würde es auch schon genügen, wenn die Anwendung in der Startleiste blinkt!.."
Davon bin ich ausgegangen. Natürlich gibt es auch noch andere Möglichkeiten.
Gruß K.Rola
AW: Excel soll sich bemerkbar machen
30.05.2006 19:31:47
Robert
hi,
sorry für das mißverständnis. mit starteliste meinte ich die windows-leiste, in der auch beispielsweise der startbutton steckt!
aber ich bin immer wieder erstaunt, was alles mit den makros möglich ist.
vielen herzlichen dank nochmal für deine bemühungen.
viele grüße
robert

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige