Hi Alex,
Hallo Rainer,
das war ja schon fertig, Du hast mir kaum etwas gelassen. 
Naja ein wenig schon
Den Source kann man noch so schoen modifizieren, sprich, ist man Online ? Ist der IE installiert?
Ist er im Online oder Offline Modus und und und 
Auch die Anzeigen (Debug.print) kannst du entfernen. Waren ja
nur zu Testzwecken da
, genauso wie die Kommentare
Die habe ich absichtlich nicht entfernt, dann sieht man,
welche Möglichkeiten es noch gibt. Das ist schon perfekt, wie
Du das gemacht hast, das lasse ich so. 
Ok, überredet 
Die Instanz des IE läuft aber noch! Diese muss beendet werden
und das muss noch in die Function mit rein 
Reicht das ‚Set IE = Nothing‘ nicht?
Nein, das ist eigentlich überfluessig, denn IE wird in der Function declariert. Wenn nun die Function verlassen wird, so verliert auch die Variable IE ihre Gueltigkeit. Ich habe es nur zur Schoenheit mit hingeschrieben 
Solange IE declariert ist und nicht auf Nothing gesetzt ist, so kannst du auf die Eigenschaften des IE zugreifen. Zum Bsp. bei der Zuweisung
wenn du nun davor IE auf Nothing setzt, bekommst du eine Fehlermeldung 
Der IE aber selbst ist ja gestartet (unsichtbar) und nicht geschlossen
Also muss man des noch von Hand machen 
Nur mal ein kleines Demo, was ich in jeden Project mache.
Erstelle mal ein Project. Darauf 4 Button und folgenden Code
'Code in der Form1
Option Explicit
Dim Stat As Boolean
Dim beenden As Boolean
Dim msgo As Boolean
Dim msgw As Boolean
Private Sub Command1\_Click()
Dim maus As New WaitCursor
Call maus
Timer1.Enabled = True
Command2.Enabled = True
Do
DoEvents
Label1.Caption = IIf(Stat, "0000", "0001")
If msgo Then
Set maus = Nothing
MsgBox "Mauszeiger wieder normal, wird aber gleich wieder umgeschalten!"
msgo = False
Call maus
End If
If msgw Then
MsgBox "Mauszeiger als Waitcursor!"
msgw = False
End If
Loop Until beenden
End Sub
Private Sub Command2\_Click()
beenden = True
End Sub
Private Sub Command3\_Click()
msgo = True
End Sub
Private Sub Command4\_Click()
msgw = True
End Sub
Private Sub Form\_Load()
Command1.Caption = "Test starten"
Command2.Caption = "Sub verlassen"
Command2.Enabled = False
Command3.Caption = "Msg anzeigen(Orginaler Mauszeiger)"
Command4.Caption = "Msg anzeigen ( Waitcursor)"
Label1.AutoSize = True
Label1.Caption = ""
Timer1.Interval = 500
Timer1.Enabled = False
End Sub
Private Sub Timer1\_Timer()
Stat = Not (Stat)
End Sub
'Klasse erstellen, namens WaitCursor
'in den Procedure Eigenschaften stelle mal in der Klasse die Sub Show
'als Default ein :smile: ( Procedure ID)
'Dann folgender Source :smile:
Option Explicit
Private mPrevMousePointer As Long
Private Sub Class\_Initialize()
mPrevMousePointer = vbDefault
End Sub
Public Sub Show()
With Screen
mPrevMousePointer = .MousePointer
.MousePointer = vbHourglass
End With
End Sub
Private Sub Class\_Terminate()
Screen.MousePointer = mPrevMousePointer
End Sub
Schau Dir das mal an 
OK, bau ich noch. 
Fein 
Aber nun noch mal schnell was anderes. Ich habe gerade folgenden Tipp erhalten. Möchte man eine Zahl vom Typ Long, speichern oder uebers Netz uebertragen, so Bedarf das 4 Byte ( glaube). Warum also nicht als String speichern mit einer länge von 2 Bytes ?
Möchte man dies, so verwendet folgende Routinen 
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByVal Destination As Long, ByVal Source As Long, ByVal ByteLen As Long)
Public Function LongToString(Expression As Long) As String
Dim tmpString As String
tmpString = Space(2)
Call CopyMemory(StrPtr(tmpString), VarPtr(Expression), 4)
LongToString = tmpString
End Function
Public Function StringToLong(Expression As String) As Long
Dim tmpLong As Long
Call CopyMemory(VarPtr(tmpLong), StrPtr(Expression), 4)
StringToLong = tmpLong
End Function
Kannst ja in die FAQ stellen, denn eines Tages habsch das sicher auch vergessen :s
Gruß, Rainer
MfG Alex