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

Textfeld für VBA-Meldung

Textfeld für VBA-Meldung
24.05.2005 11:37:29
Torsten K.
Hallo beisammen,
in meinem Makro möchte ich ein Textfeld setzen, das den User darauf hinweist, während der Ausführung des Makros einen Augenblick zu warten:

Private Sub cmb_UpLoad_Click()
If MsgBox("Sollen der UpLoad jetzt beginnen?", vbYesNo) = vbYes Then
Dim i As Integer
Dim irow As Integer
Dim wbName As String
Dim Daten() As Long   'Array, noch nicht dimensioniert, da Länge noch nicht bekannt
Dim DatenAnz As Integer
Dim j As Integer
Dim k As Integer
Dim CostCenter As Long
On Error GoTo errHandler
Application.ScreenUpdating = False
'Application.StatusBar = "Dieser Vorgang dauert ein paar Minuten. Bitte Geduld haben..."
Application.DisplayAlerts = False
Application.EnableEvents = False
ActiveSheet.OLEObjects.Add _
(ClassType:="Forms.Checkbox.1", Left:=70, Top:=60, Width:=15, Heigth:=25).Activate
ActiveSheet.OLEObjects(ActiveSheet.OLEObjects.Count).Name = "Nachricht"
ActiveSheet.OLEObjects("Nachricht").Object.Text = "Bitte einen Augenblick warten..."
Code
Application.ScreenUpdating = True
Else
End If
Exit Sub
errHandler:
Application.DisplayAlerts = True
Application.StatusBar = False
Application.EnableEvents = True
MsgBox "Beim UpLoad der Datei" & vbCr & wbName & vbCr & _
"ist ein Fehler aufgetreten!", vbCritical + vbOKOnly, "ABBRUCH!"
End Sub

Leider springt Excel nach der Zeile:
"ActiveSheet.OLEObjects("Nachricht").Object.Text = "Bitte einen Augenblick warten..."
direkt in den errHandler, ohne den Code auszuführen.
Kann mir jemand weiterhelfen?
Vielen Dank im voraus.
Gruß
Torsten

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textfeld für VBA-Meldung
24.05.2005 12:56:38
bst
Hallo Torsten,
es muß Height lauten, nicht Heigth
FWIW,
tu vielleicht sowas in den Errorhandler, dann siehst Du's selber:
debug.print err.number, err.description
oder schreibe immer alles in kleinbuchstaben, und schau dir genau an was klein bleibt ;-)
cu, Bernd
AW: Textfeld für VBA-Meldung
24.05.2005 13:26:02
Torsten K.
Hallo Bernd,
vielen Dank für Deine Rückmeldung.
Den Tip mit dem Kleinschreiben merk' ich mir.
Ansonsten habe ich zwar den von Dir bemerkten Tipfehler korrigiert, aber nach wie vor bricht Excel nach dieser Stelle ab:
"ActiveSheet.OLEObjects("Nachricht").Object.Text = "Bitte einen Augenblick warten..."
Jetzt kommt die Meldung: "Wechseln in den Haltemodus ist zu diesem Zeitpunkt nicht möglich" und im Direktfenster erhalte ich den Hinweis "438 Objekt unterstützt diese Eigenschaft oder Methode nicht".
Kannst Du damit etwas anfangen und mir weiterhelfen?
Gruß
Torsten
Anzeige
AW: Textfeld für VBA-Meldung
24.05.2005 13:38:28
bst
Hallo Torsten,
versuch mal sowas:
Dim obj As OLEObject
Set obj = ActiveSheet.OLEObjects.Add _
(ClassType:="Forms.TextBox.1", Left:=70, Top:=60, Width:=150, Height:=25)
obj.Name = "Nachricht"
obj.Object.Text = "Bitte einen Augenblick warten..."
cu, Bernd
AW: Textfeld für VBA-Meldung
24.05.2005 14:02:55
Torsten K.
Hallo Bernd,
der eigentlich Code läuft zwar jetzt wieder durch, allerdings ohne die Meldung im Textfeld auszugeben. Deine Ergänzung hat also "nicht weiter gestört". :-)
Hast Du noch weitere Ideen?
Gruß
Torsten
AW: Textfeld für VBA-Meldung
24.05.2005 14:09:42
bst
Hi,
kann ich nicht nachvollziehen. Das läuft bei mir.
cu, Bernd
--
Option Explicit

Private Sub cmb_UpLoad_Click()
If MsgBox("Sollen der UpLoad jetzt beginnen?", vbYesNo) = vbYes Then
Dim i As Integer
Dim irow As Integer
Dim wbName As String
Dim Daten() As Long   'Array, noch nicht dimensioniert, da Länge noch nicht bekannt
Dim DatenAnz As Integer
Dim j As Integer
Dim k As Integer
Dim CostCenter As Long
On Error GoTo errHandler
Application.ScreenUpdating = False
'Application.StatusBar = "Dieser Vorgang dauert ein paar Minuten. Bitte Geduld haben..."
Application.DisplayAlerts = False
Application.EnableEvents = False
Dim obj As OLEObject
Set obj = ActiveSheet.OLEObjects.Add _
(ClassType:="Forms.TextBox.1", Left:=70, Top:=60, Width:=150, Height:=25)
Debug.Print TypeName(obj)
obj.Name = "Nachricht"
obj.Object.Text = "Bitte einen Augenblick warten..."
'Code
Application.ScreenUpdating = True
Else
End If
Exit Sub
errHandler:
Debug.Print Err.Number, Err.Description
Application.DisplayAlerts = True
Application.StatusBar = False
Application.EnableEvents = True
MsgBox "Beim UpLoad der Datei" & vbCr & wbName & vbCr & _
"ist ein Fehler aufgetreten!", vbCritical + vbOKOnly, "ABBRUCH!"
End Sub

Anzeige
AW: Textfeld für VBA-Meldung
24.05.2005 15:02:35
Torsten K.
Hi Bernd,
ich habe mittlerweile herausgefunden, daß ich erst den Blattschutz aufheben muß (Daher die Meldung, Objekt könne nicht eingefügt werden). Trotzdem zeigt Excel mir diese blöde Textbox nicht an, obwohl ich im Direktfenster erkennen kann, daß er über "Debug.Print TypeName(obj)" sowohl das OLEObject als auch über "Debug.Print obj.Name" das Objekt "Nachricht" erkennt.
Ich habe keine Zeilen oder Spalten ausgeblendet.
Ich nehme mal an, daß der Ausdruck "Left:=70, Top:=60," die Positionierung des Objekts im WS angibt; auch mit diesen Variablen habe ich "gespielt" - ohne Erfolg. :-(
Woran könnte das denn noch liegen?
Ein ratloser Gruß
Torsten
Anzeige
AW: Textfeld für VBA-Meldung
24.05.2005 16:51:50
bst
Hallo Torsten,
nur eine Idee.
Vielleicht schreibt er ja in das Textfeld rein, dieses liegt aber nicht 'oben'.
Wann löscht Du denn diese Teile eigentlich wieder ?
Durch ActiveSheet.OLEObjects.Add wird ja jedesmal ein neues Textfeld erstelt.
Sonst schicke halt mal Deine ganze Tabelle mit. Dann schau ich's mir mal an.
Aber erst Morgen...
cu, Bernd
AW: Textfeld für VBA-Meldung
24.05.2005 17:17:12
Torsten K.
Hallo Bernd,
das ist sehr nett von Dir, daß Du noch Geduld mit mir hast.
Hier der Link:

Die Datei https://www.herber.de/bbs/user/23163.xls wurde aus Datenschutzgründen gelöscht

Hintergrund der Datei:
In das WS("DATENVJYTD") füge ich die Daten aus SAP ein, wobei CC=Kostenstelle und CostElement=Kostenart sind. Beim UpLoad im WS("VJYTD") werden die Daten dann, abhängig von der Kostenstelle, in die Dateien der enstprechenden Kostenstellen kopiert. Dabei geht Excel eine Liste der Kostenstellen durch, die im WS("FILES") hinterlegt ist. Ich möchte nun, daß der User während dieses Vorganges eine Meldung erhält, die darauf hinweist, daß das Makro noch läuft (Dauer ca. 2 Min). Ich hatte schon eine Meldung in Application.Statusbar, das ist mir allerdings zu wenig, weil sie gerne übersehen wird.
Die Datei ist gekürzt, damit ich sie hochladen konnte.
Vielen Dank für Deine weiteren Bemühungen schon mal im voraus.
Schönen Abend und bis morgen.
Gruß
Torsten
Anzeige
AW: Textfeld für VBA-Meldung
25.05.2005 10:07:47
bst
Morgen Torsten,
verstehe ich immer noch nicht. Das Textfeld wird bei mir eingeblendet.
Allerdings könntest Du Dir das Leben viel einfacher machen.
Laß die Textbox doch einfach in der Tabelle stehen und blende sie nur ein/aus.
Dann kannst Du zumindest vernünftig debuggen.
Oder blende eine Userform ein.
Außerdem würde ich den Code in ein Modul auslagern und die Fehlerbehandlung ändern.
Versuch's mal mit sowas: https://www.herber.de/bbs/user/23195.xls
Gruß, bernd
AW: erledigt - mT
25.05.2005 10:37:13
Torsten K.
Hallo Bernd,
sorry, funktioniert bei mir einfach nicht. Excel bricht ab und weist im Direktfenster aus: " 1004 Die OLEObjects-Eigenschaft des Worksheet-Objektes kann nicht zugeordnet werden.". Ich habe noch das eine und andere versucht, aber nichts hilft.
An der Stelle gebe ich das Vorhaben auf, mit einer Textbox die Lösung zu finden. :-(
Ich werde mich wohl mit einer Lösung über eine Userform beschäftigen müssen. Das mit der Textbox erschien mir einfacher zu sein.
Wie dem auch sei, ich möchte mich trotzdem ganz herzlich für Deine Bemühungen und Deine Geduld mit mir bedanken.
Bis bald mal wieder im Forum.
Gruß
Torsten
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige