Discussion:
prüfen auf vorhandenes Textfeld
(zu alt für eine Antwort)
Markus
2006-05-09 18:05:00 UTC
Permalink
Ich habe in Excel die Möglichkeit, Textfelder zu platzieren, die ich mit
einem bestimmten Namen (z.B. "Textfeld1") versehen kann.
Wie kann ich per VBA überprüfen, ob sich das Objekt überhaupt auf der
aktiven Tabelle befindet?
Ich kann die Objekte mittels folgendem Befehl zählen:

ActiveWorkBook.ActiveSheet.Shapes.Count

und mit

ActiveWorkBook.ActiveSheet.Shapes.Item(1).Name

bekomme ich eben "Textfeld1" zurück.

Leider gibt es den Befehl "ItemExist" in VBA nicht und auch das
Schlüsselwort "Exists" brachte bisher nur Fehlermeldungen.
Wie kann ich prüfen, ob das Objekt überhaupt existiert?
Alexander Wolff
2006-05-09 18:21:19 UTC
Permalink
Post by Markus
Ich habe in Excel die Möglichkeit, Textfelder zu platzieren, die ich
mit einem bestimmten Namen (z.B. "Textfeld1") versehen kann.
Wie kann ich per VBA überprüfen, ob sich das Objekt überhaupt auf der
aktiven Tabelle befindet?
ActiveWorkBook.ActiveSheet.Shapes.Count
und mit
ActiveWorkBook.ActiveSheet.Shapes.Item(1).Name
bekomme ich eben "Textfeld1" zurück.
Leider gibt es den Befehl "ItemExist" in VBA nicht und auch das
Schlüsselwort "Exists" brachte bisher nur Fehlermeldungen.
Wie kann ich prüfen, ob das Objekt überhaupt existiert?
Evtl. erst, nachdem Du eine ShapeRange-Auflistung erstellt hast:
(laut Hilfe zum "Shapes-Auflistungsobjekt")
ActiveWorkBook.ActiveSheet.Shapes.Range("Textfeld1")

oder gleich auch mit
ActiveWorkBook.ActiveSheet.Shapes.Item("Textfeld1").Name

Vielleicht kannst Du ja letzteres mit einer Fehlerroutine verarbeiten.
--
Moin + Gruss Alexander - XPHome SP2 MSO 2000 SP3 +----5----6----5----7-2
Solaiman Ghaus
2006-05-09 20:41:35 UTC
Permalink
Hallo erstmal,
Post by Markus
Ich habe in Excel die Möglichkeit, Textfelder zu platzieren, die ich mit
einem bestimmten Namen (z.B. "Textfeld1") versehen kann.
Wie kann ich per VBA überprüfen, ob sich das Objekt überhaupt auf der
aktiven Tabelle befindet?
ActiveWorkBook.ActiveSheet.Shapes.Count
und mit
ActiveWorkBook.ActiveSheet.Shapes.Item(1).Name
bekomme ich eben "Textfeld1" zurück.
Leider gibt es den Befehl "ItemExist" in VBA nicht und auch das
Schlüsselwort "Exists" brachte bisher nur Fehlermeldungen.
Wie kann ich prüfen, ob das Objekt überhaupt existiert?
so könntest du es prüfen:

If Not ActiveSheet.Shapes("Textfeld1") Is Nothing Then
MsgBox "vorhanden!"
Else
MsgBox "nicht vorhanden!"
End If

Gruß
Solaiman
Markus
2006-05-10 07:02:51 UTC
Permalink
Post by Solaiman Ghaus
Hallo erstmal,
Post by Markus
Ich habe in Excel die Möglichkeit, Textfelder zu platzieren, die ich mit
einem bestimmten Namen (z.B. "Textfeld1") versehen kann.
Wie kann ich per VBA überprüfen, ob sich das Objekt überhaupt auf der
aktiven Tabelle befindet?
ActiveWorkBook.ActiveSheet.Shapes.Count
und mit
ActiveWorkBook.ActiveSheet.Shapes.Item(1).Name
bekomme ich eben "Textfeld1" zurück.
Leider gibt es den Befehl "ItemExist" in VBA nicht und auch das
Schlüsselwort "Exists" brachte bisher nur Fehlermeldungen.
Wie kann ich prüfen, ob das Objekt überhaupt existiert?
If Not ActiveSheet.Shapes("Textfeld1") Is Nothing Then
MsgBox "vorhanden!"
Else
MsgBox "nicht vorhanden!"
End If
Gruß
Solaiman
Das hab ich auch gedacht, aber so funktioniert es nicht.
Excel meldet sich dann immer mit "Das Element mit dem angegeben Namen
wurde nicht gefunden".


Gruß
Markus
Wolfgang Habernoll
2006-05-10 09:26:50 UTC
Permalink
Hallo Markus

probiere es doch mal so

Sub IsTextfeldVorhanden()
Dim iI As Integer
Dim strFelName As String
strFelName = "Textfeld1"

For iI = 1 To ActiveWorkbook.ActiveSheet.Shapes.Count
If ActiveSheet.Shapes.Item(iI).Name = strFelName Then
MsgBox strFelName & " ist vorhanden Index Nr= " & iI
End If
Next

End Sub

mfG
Wolfgang Habernoll
Post by Markus
Post by Solaiman Ghaus
Hallo erstmal,
Post by Markus
Ich habe in Excel die Möglichkeit, Textfelder zu platzieren, die ich mit
einem bestimmten Namen (z.B. "Textfeld1") versehen kann.
Wie kann ich per VBA überprüfen, ob sich das Objekt überhaupt auf der
aktiven Tabelle befindet?
ActiveWorkBook.ActiveSheet.Shapes.Count
und mit
ActiveWorkBook.ActiveSheet.Shapes.Item(1).Name
bekomme ich eben "Textfeld1" zurück.
Leider gibt es den Befehl "ItemExist" in VBA nicht und auch das
Schlüsselwort "Exists" brachte bisher nur Fehlermeldungen.
Wie kann ich prüfen, ob das Objekt überhaupt existiert?
If Not ActiveSheet.Shapes("Textfeld1") Is Nothing Then
MsgBox "vorhanden!"
Else
MsgBox "nicht vorhanden!"
End If
Gruß
Solaiman
Das hab ich auch gedacht, aber so funktioniert es nicht.
Excel meldet sich dann immer mit "Das Element mit dem angegeben Namen
wurde nicht gefunden".
Gruß
Markus
Solaiman Ghaus
2006-05-10 12:25:39 UTC
Permalink
Hallo Markus,
Post by Markus
Post by Solaiman Ghaus
Hallo erstmal,
Post by Markus
Ich habe in Excel die Möglichkeit, Textfelder zu platzieren, die ich mit
einem bestimmten Namen (z.B. "Textfeld1") versehen kann.
Wie kann ich per VBA überprüfen, ob sich das Objekt überhaupt auf der
aktiven Tabelle befindet?
ActiveWorkBook.ActiveSheet.Shapes.Count
und mit
ActiveWorkBook.ActiveSheet.Shapes.Item(1).Name
bekomme ich eben "Textfeld1" zurück.
Leider gibt es den Befehl "ItemExist" in VBA nicht und auch das
Schlüsselwort "Exists" brachte bisher nur Fehlermeldungen.
Wie kann ich prüfen, ob das Objekt überhaupt existiert?
If Not ActiveSheet.Shapes("Textfeld1") Is Nothing Then
MsgBox "vorhanden!"
Else
MsgBox "nicht vorhanden!"
End If
Gruß
Solaiman
Das hab ich auch gedacht, aber so funktioniert es nicht.
Excel meldet sich dann immer mit "Das Element mit dem angegeben Namen
wurde nicht gefunden".
dann musst du es per Fehlerbehandlung abfangen. Hier ein Beispiel:

'------------------------------------------------------------------------------------
Sub ObjektErmittlung()

On Error GoTo Fehler
txt = ActiveSheet.Shapes("Textfeld 1").DrawingObject.Text

Exit Sub
Fehler:
If Err.Number = -2147024809 Then
MsgBox "Element nicht gefunden! " & Chr(10) & "Fehler-Nr: " &
Err.Number & Chr(10) & "Beschreibung: " & Err.Description
Else
MsgBox "Fehler aufgetreten: " & Chr(10) & "Fehler-Nr: " &
Err.Number & Chr(10) & "Beschreibung: " & Err.Description
End If

End Sub
'------------------------------------------------------------------------------------
Post by Markus
Gruß
Markus
Gruß
Solaiman
Markus
2006-05-10 20:16:58 UTC
Permalink
So geht's leider nicht, denn ich möchte aus einem externen Programm darauf
zugreifen,
also nicht im Excel.
Es ist eine bestehende Sofware, die ich aber mit VB gestalten kann so wie
ich es möchte.

Sonst noch eine Idee?


Markus
Post by Solaiman Ghaus
Hallo Markus,
'------------------------------------------------------------------------------------
Sub ObjektErmittlung()
On Error GoTo Fehler
txt = ActiveSheet.Shapes("Textfeld 1").DrawingObject.Text
Exit Sub
If Err.Number = -2147024809 Then
MsgBox "Element nicht gefunden! " & Chr(10) & "Fehler-Nr: " &
Err.Number & Chr(10) & "Beschreibung: " & Err.Description
Else
MsgBox "Fehler aufgetreten: " & Chr(10) & "Fehler-Nr: " & Err.Number &
Chr(10) & "Beschreibung: " & Err.Description
End If
End Sub
'------------------------------------------------------------------------------------
Solaiman Ghaus
2006-05-10 20:42:06 UTC
Permalink
Hallo Markus,
Post by Markus
So geht's leider nicht, denn ich möchte aus einem externen Programm darauf
zugreifen,
also nicht im Excel.
Es ist eine bestehende Sofware, die ich aber mit VB gestalten kann so wie
ich es möchte.
ich kann es nicht nachvollziehen, was du beschreibst. Es ist
unerheblich, ob du die Fehlerbehandlung von externem Programm heraus
oder in Excel direkt durchführst. Die Fehlerbehandlung muß nur der
Programmiersparche konform sein - im Falle von VB ist es aber bereits.
Post by Markus
Sonst noch eine Idee?
Beschreibe doch bitte die ganze Umgebung + Code und Arbeitsablauf
vollständig, sonst ist es schwierig zu verstehen, was du vor hast.
Post by Markus
Markus
Gruß
Solaiman
Post by Markus
Post by Solaiman Ghaus
Hallo Markus,
'------------------------------------------------------------------------------------
Sub ObjektErmittlung()
On Error GoTo Fehler
txt = ActiveSheet.Shapes("Textfeld 1").DrawingObject.Text
Exit Sub
If Err.Number = -2147024809 Then
MsgBox "Element nicht gefunden! " & Chr(10) & "Fehler-Nr: " &
Err.Number & Chr(10) & "Beschreibung: " & Err.Description
Else
MsgBox "Fehler aufgetreten: " & Chr(10) & "Fehler-Nr: " & Err.Number &
Chr(10) & "Beschreibung: " & Err.Description
End If
End Sub
'------------------------------------------------------------------------------------
Markus
2006-05-11 09:12:01 UTC
Permalink
Hallo Solaiman,

erstmal vielen Dank dass du dir für mein Problem so viel Mühe machst.

Es ist so, dass VB anscheinend den Befehl "GoTo Fehler" nicht versteht.
Lt. Beschreibung kann ich nur "On Error Resume Next" ausführen,
oder wenn ich die Fehlerbehandlung wieder aufnehmen möchte,
"On Error GoTo 0" - hab ich mal gelesen.

Ich zitiere:
On Error-Anweisung:
Aktiviert oder deaktiviert die Fehlerbehandlung

Wenn ich die Befehlszeile verwende "On Error GoTo Fehler", so
bekomme ich den Fehler "Syntaxfehler", und das Programm unterbricht.

Zum Arbeitsablauf/Umgebung:

Ich klicke in einer bestehenden Software einen Button, der mir
folgendes tun soll:

Sub OnClick()
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objSheetForm = objWorkbook.WorkSheets("Formatted")
'If Not ObjSheetForm.Shapes("Project") Is Nothing Then

ObjSheetForm.Shapes("Project").Select

ObjExcel.Selection.Characters.Text = Ordercode

End Sub


Und dann befüllt mir das Programm die Werte in Excel.
Aber wenn das "Shapes("Project")" nicht existiert, dann soll er mir eine
MsgBox zeigen.



Markus
Post by Solaiman Ghaus
Hallo Markus,
Post by Markus
So geht's leider nicht, denn ich möchte aus einem externen Programm
darauf zugreifen,
also nicht im Excel.
Es ist eine bestehende Sofware, die ich aber mit VB gestalten kann so wie
ich es möchte.
ich kann es nicht nachvollziehen, was du beschreibst. Es ist unerheblich,
ob du die Fehlerbehandlung von externem Programm heraus oder in Excel
direkt durchführst. Die Fehlerbehandlung muß nur der Programmiersparche
konform sein - im Falle von VB ist es aber bereits.
Post by Markus
Sonst noch eine Idee?
Beschreibe doch bitte die ganze Umgebung + Code und Arbeitsablauf
vollständig, sonst ist es schwierig zu verstehen, was du vor hast.
Post by Markus
Markus
Gruß
Solaiman
Ulli Tolksdorf
2006-05-11 10:43:33 UTC
Permalink
Hallo!

Also ich präferiere Wolfgangs Lösung! Denn da
braucht man mit keiner Fehlerbehandlung zu arbeiten!
Womit sich dein Problem auch erledigt haben dürfte.


Du sprichst aber immer von einem anderen Programm...
Was für eines ist das denn? VB??? Ansonsten mußt du natürlich die
Fehlerbehandlung darin nutzen...

VB aber kann mit

Private Sub Test()
On Error GoTo Fehler

Debug.print 1/0

Exit Sub
Fehler:
MsgBox "Aber aber..."
End Sub

wunderbar umgehen...
Alexander Wolff
2006-05-11 12:16:25 UTC
Permalink
Post by Ulli Tolksdorf
Also ich präferiere Wolfgangs Lösung! Denn da
braucht man mit keiner Fehlerbehandlung zu arbeiten!
Womit sich dein Problem auch erledigt haben dürfte.
Ist es besser, "Berlin" anzusprechen oder "Berlin" mittels einer Schleife
über alle Städte der Welt unbekannten Namens zu suchen? Excel selbst sucht
den Namen bei Direktansprache bestimmt nach einem schnellen Verfahren wie
Binäre Suche, da es selbst wohl die Objektnamen alphabetisch ordnet.

Wenn also auch nur önkwie (und egal wie schmutzig) "Berlin"

direkt ansprechbar ist oder
sonst ein Fehler entsteht,

ist das gewünschte notwendige Ergebnis doch schon schon entstanden. Der
Fehler gibt "Berlin gipps nich" als Info zurück; der anschließende
unvermeidbare Programmabbruch wird durch eine Fehlerbehandlung verhindert.
Das Programm dankt es Dir mit maximalem Speed.
--
Moin + Gruss Alexander - XPHome SP2 MSO 2000 SP3 +----5----6----5----7-2
Solaiman Ghaus
2006-05-11 10:56:41 UTC
Permalink
Hallo Markus,
Post by Markus
Hallo Solaiman,
erstmal vielen Dank dass du dir für mein Problem so viel Mühe machst.
kein Problem, mache ich gerne ;-)
Post by Markus
Es ist so, dass VB anscheinend den Befehl "GoTo Fehler" nicht versteht.
Kurzer Hinweis: VB und VBA unterscheiden sich im Syntax gar nicht. VBA
kannst du einfach gesagt als Teilmenge von VB sehen.

Hier ist nur GoTo der Befehl. "Fehler" ist der Name der Sprungmarke, den
du selber definieren mußt, wie ich es in dem vorigen Beispiel gezeigt habe!
Post by Markus
Lt. Beschreibung kann ich nur "On Error Resume Next" ausführen,
oder wenn ich die Fehlerbehandlung wieder aufnehmen möchte,
"On Error GoTo 0" - hab ich mal gelesen.
On Error Anweisung hat folgenden Syntax:

On Error GoTo Zeile/Sprungmarke
On Error Resume Next
On Error GoTo 0

Schau dir bitte die "On Error" Anweisung in der Hilfe an. Dort ist alles
detailliert erklärt worden.
Post by Markus
Aktiviert oder deaktiviert die Fehlerbehandlung
Wenn ich die Befehlszeile verwende "On Error GoTo Fehler", so
bekomme ich den Fehler "Syntaxfehler", und das Programm unterbricht.
wie oben schon geschrieben. Du mußt die Sprungmarke mit dem Namen
"Fehler" definiert haben, damit du es in der GoTo Anweisung
referenzieren kannst. (Es kann natürlich auch anders heißen als "Fehler"
z.B. "MeineFehlerbehandlung"!)

Syntax für Sprungmarke
Sprungmarkenname:

Doppelpunkt am Ende des Namens markiert die Stelle als Sprungmarke!!!
Post by Markus
Ich klicke in einer bestehenden Software einen Button, der mir
Sub OnClick()
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objSheetForm = objWorkbook.WorkSheets("Formatted")
'If Not ObjSheetForm.Shapes("Project") Is Nothing Then
ObjSheetForm.Shapes("Project").Select
ObjExcel.Selection.Characters.Text = Ordercode
End Sub
Und dann befüllt mir das Programm die Werte in Excel.
Aber wenn das "Shapes("Project")" nicht existiert, dann soll er mir eine
MsgBox zeigen.
Hier dein angepasster Code:

'-------------------------------------------------------------------------------------------
Sub OnClick()
Set ObjExcel = CreateObject("Excel.Application")
ObjExcel.Visible = True
Set ObjSheetForm = objWorkbook.Worksheets("Formatted")

On Error GoTo Fehler
ObjSheetForm.Shapes("Project").Select
ObjExcel.Selection.Characters.Text = Ordercode

Exit Sub
Fehler:
If Err.Number = -2147024809 Then
MsgBox "Element nicht gefunden! " & Chr(10) & "Fehler-Nr: " &
Err.Number & Chr(10) & "Beschreibung: " & Err.Description
Else
MsgBox "Fehler aufgetreten: " & Chr(10) & "Fehler-Nr: " &
Err.Number & Chr(10) & "Beschreibung: " & Err.Description
End If

End Sub
'-------------------------------------------------------------------------------------------
Post by Markus
Markus
Gruß
Solaiman
Post by Markus
Post by Solaiman Ghaus
Hallo Markus,
Post by Markus
So geht's leider nicht, denn ich möchte aus einem externen Programm
darauf zugreifen,
also nicht im Excel.
Es ist eine bestehende Sofware, die ich aber mit VB gestalten kann so wie
ich es möchte.
ich kann es nicht nachvollziehen, was du beschreibst. Es ist unerheblich,
ob du die Fehlerbehandlung von externem Programm heraus oder in Excel
direkt durchführst. Die Fehlerbehandlung muß nur der Programmiersparche
konform sein - im Falle von VB ist es aber bereits.
Post by Markus
Sonst noch eine Idee?
Beschreibe doch bitte die ganze Umgebung + Code und Arbeitsablauf
vollständig, sonst ist es schwierig zu verstehen, was du vor hast.
Post by Markus
Markus
Gruß
Solaiman
Markus
2006-05-11 19:12:16 UTC
Permalink
Ich bin am verzweifeln, jetzt habe ich einen "frischen" Button erzeugt und
folgende
Zeilen eingegeben:

Sub OnClick()

Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objSheetForm = objWorkbook.WorkSheets("Formatted")

On Error GoTo Fehler

Exit Sub

Fehler:
If Err.Number = -2147024809 Then
MsgBox Err.Number & Err.Description
End If

End Sub

Aber es funktioniert einfach nicht! Ohne das irgendetwas Besonderes
drinsteht, bricht
das Programm mit "Genauer Fehler (0) : Syntaxfehler" ab.
Was mache ich falsch?

Markus
Post by Solaiman Ghaus
Hallo Markus,
Post by Markus
Hallo Solaiman,
erstmal vielen Dank dass du dir für mein Problem so viel Mühe machst.
kein Problem, mache ich gerne ;-)
Post by Markus
Es ist so, dass VB anscheinend den Befehl "GoTo Fehler" nicht versteht.
Kurzer Hinweis: VB und VBA unterscheiden sich im Syntax gar nicht. VBA
kannst du einfach gesagt als Teilmenge von VB sehen.
Hier ist nur GoTo der Befehl. "Fehler" ist der Name der Sprungmarke, den
du selber definieren mußt, wie ich es in dem vorigen Beispiel gezeigt habe!
Post by Markus
Lt. Beschreibung kann ich nur "On Error Resume Next" ausführen,
oder wenn ich die Fehlerbehandlung wieder aufnehmen möchte,
"On Error GoTo 0" - hab ich mal gelesen.
On Error GoTo Zeile/Sprungmarke
On Error Resume Next
On Error GoTo 0
Schau dir bitte die "On Error" Anweisung in der Hilfe an. Dort ist alles
detailliert erklärt worden.
Post by Markus
Aktiviert oder deaktiviert die Fehlerbehandlung
Wenn ich die Befehlszeile verwende "On Error GoTo Fehler", so
bekomme ich den Fehler "Syntaxfehler", und das Programm unterbricht.
wie oben schon geschrieben. Du mußt die Sprungmarke mit dem Namen "Fehler"
definiert haben, damit du es in der GoTo Anweisung referenzieren kannst.
(Es kann natürlich auch anders heißen als "Fehler" z.B.
"MeineFehlerbehandlung"!)
Syntax für Sprungmarke
Doppelpunkt am Ende des Namens markiert die Stelle als Sprungmarke!!!
Post by Markus
Ich klicke in einer bestehenden Software einen Button, der mir
Sub OnClick()
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objSheetForm = objWorkbook.WorkSheets("Formatted")
'If Not ObjSheetForm.Shapes("Project") Is Nothing Then
ObjSheetForm.Shapes("Project").Select
ObjExcel.Selection.Characters.Text = Ordercode
End Sub
Und dann befüllt mir das Programm die Werte in Excel.
Aber wenn das "Shapes("Project")" nicht existiert, dann soll er mir eine
MsgBox zeigen.
'-------------------------------------------------------------------------------------------
Sub OnClick()
Set ObjExcel = CreateObject("Excel.Application")
ObjExcel.Visible = True
Set ObjSheetForm = objWorkbook.Worksheets("Formatted")
On Error GoTo Fehler
ObjSheetForm.Shapes("Project").Select
ObjExcel.Selection.Characters.Text = Ordercode
Exit Sub
If Err.Number = -2147024809 Then
MsgBox "Element nicht gefunden! " & Chr(10) & "Fehler-Nr: " &
Err.Number & Chr(10) & "Beschreibung: " & Err.Description
Else
MsgBox "Fehler aufgetreten: " & Chr(10) & "Fehler-Nr: " & Err.Number &
Chr(10) & "Beschreibung: " & Err.Description
End If
End Sub
'-------------------------------------------------------------------------------------------
Post by Markus
Markus
Gruß
Solaiman
Post by Markus
Post by Solaiman Ghaus
Hallo Markus,
Post by Markus
So geht's leider nicht, denn ich möchte aus einem externen Programm
darauf zugreifen,
also nicht im Excel.
Es ist eine bestehende Sofware, die ich aber mit VB gestalten kann so
wie ich es möchte.
ich kann es nicht nachvollziehen, was du beschreibst. Es ist
unerheblich, ob du die Fehlerbehandlung von externem Programm heraus
oder in Excel direkt durchführst. Die Fehlerbehandlung muß nur der
Programmiersparche konform sein - im Falle von VB ist es aber bereits.
Post by Markus
Sonst noch eine Idee?
Beschreibe doch bitte die ganze Umgebung + Code und Arbeitsablauf
vollständig, sonst ist es schwierig zu verstehen, was du vor hast.
Post by Markus
Markus
Gruß
Solaiman
Solaiman Ghaus
2006-05-11 20:45:50 UTC
Permalink
Hallo Markus,
Post by Markus
Ich bin am verzweifeln, jetzt habe ich einen "frischen" Button erzeugt und
folgende
Sub OnClick()
was ist denn OnClick() ??? Das heißt Private Sub Command1_Click(). Wobei
statt "Command1" der Name der Taste stehen muß!
Post by Markus
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objSheetForm = objWorkbook.WorkSheets("Formatted")
wo hast du denn objWorkbook definiert?
Post by Markus
On Error GoTo Fehler
Exit Sub
die beiden obigen Zeilen in dieser Zusammensetzung machen doch überhaupt
keinen Sinn! Nach On Error passiert doch nichts außer Exit Sub.
Post by Markus
If Err.Number = -2147024809 Then
MsgBox Err.Number & Err.Description
End If
End Sub
Aber es funktioniert einfach nicht! Ohne das irgendetwas Besonderes
drinsteht, bricht
das Programm mit "Genauer Fehler (0) : Syntaxfehler" ab.
Was mache ich falsch?
Schreib doch bitte den Kompletten Code hier rein. Dann kann ich dir mehr
sagen, denn so macht es keinen Sinn.

Außerdem gib bitte genaue Auskunft über den Fehler, wann er auftritt -
an welcher Stelle passiert es denn?

Im schlimmsten Fall kannst du mir dein VB-Project (NICHT kompeiliert!)
und Beispieldateien von Excel per Mail schicken. Ich werde es mir
anschauen und werde hier nochmal berichten, was schiefläuft.
Post by Markus
Markus
Gruß
Solaiman
Post by Markus
Post by Solaiman Ghaus
Hallo Markus,
Post by Markus
Hallo Solaiman,
erstmal vielen Dank dass du dir für mein Problem so viel Mühe machst.
kein Problem, mache ich gerne ;-)
Post by Markus
Es ist so, dass VB anscheinend den Befehl "GoTo Fehler" nicht versteht.
Kurzer Hinweis: VB und VBA unterscheiden sich im Syntax gar nicht. VBA
kannst du einfach gesagt als Teilmenge von VB sehen.
Hier ist nur GoTo der Befehl. "Fehler" ist der Name der Sprungmarke, den
du selber definieren mußt, wie ich es in dem vorigen Beispiel gezeigt habe!
Post by Markus
Lt. Beschreibung kann ich nur "On Error Resume Next" ausführen,
oder wenn ich die Fehlerbehandlung wieder aufnehmen möchte,
"On Error GoTo 0" - hab ich mal gelesen.
On Error GoTo Zeile/Sprungmarke
On Error Resume Next
On Error GoTo 0
Schau dir bitte die "On Error" Anweisung in der Hilfe an. Dort ist alles
detailliert erklärt worden.
Post by Markus
Aktiviert oder deaktiviert die Fehlerbehandlung
Wenn ich die Befehlszeile verwende "On Error GoTo Fehler", so
bekomme ich den Fehler "Syntaxfehler", und das Programm unterbricht.
wie oben schon geschrieben. Du mußt die Sprungmarke mit dem Namen "Fehler"
definiert haben, damit du es in der GoTo Anweisung referenzieren kannst.
(Es kann natürlich auch anders heißen als "Fehler" z.B.
"MeineFehlerbehandlung"!)
Syntax für Sprungmarke
Doppelpunkt am Ende des Namens markiert die Stelle als Sprungmarke!!!
Post by Markus
Ich klicke in einer bestehenden Software einen Button, der mir
Sub OnClick()
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objSheetForm = objWorkbook.WorkSheets("Formatted")
'If Not ObjSheetForm.Shapes("Project") Is Nothing Then
ObjSheetForm.Shapes("Project").Select
ObjExcel.Selection.Characters.Text = Ordercode
End Sub
Und dann befüllt mir das Programm die Werte in Excel.
Aber wenn das "Shapes("Project")" nicht existiert, dann soll er mir eine
MsgBox zeigen.
'-------------------------------------------------------------------------------------------
Sub OnClick()
Set ObjExcel = CreateObject("Excel.Application")
ObjExcel.Visible = True
Set ObjSheetForm = objWorkbook.Worksheets("Formatted")
On Error GoTo Fehler
ObjSheetForm.Shapes("Project").Select
ObjExcel.Selection.Characters.Text = Ordercode
Exit Sub
If Err.Number = -2147024809 Then
MsgBox "Element nicht gefunden! " & Chr(10) & "Fehler-Nr: " &
Err.Number & Chr(10) & "Beschreibung: " & Err.Description
Else
MsgBox "Fehler aufgetreten: " & Chr(10) & "Fehler-Nr: " & Err.Number &
Chr(10) & "Beschreibung: " & Err.Description
End If
End Sub
'-------------------------------------------------------------------------------------------
Post by Markus
Markus
Gruß
Solaiman
Post by Markus
Post by Solaiman Ghaus
Hallo Markus,
Post by Markus
So geht's leider nicht, denn ich möchte aus einem externen Programm
darauf zugreifen,
also nicht im Excel.
Es ist eine bestehende Sofware, die ich aber mit VB gestalten kann so
wie ich es möchte.
ich kann es nicht nachvollziehen, was du beschreibst. Es ist
unerheblich, ob du die Fehlerbehandlung von externem Programm heraus
oder in Excel direkt durchführst. Die Fehlerbehandlung muß nur der
Programmiersparche konform sein - im Falle von VB ist es aber bereits.
Post by Markus
Sonst noch eine Idee?
Beschreibe doch bitte die ganze Umgebung + Code und Arbeitsablauf
vollständig, sonst ist es schwierig zu verstehen, was du vor hast.
Post by Markus
Markus
Gruß
Solaiman
Markus
2006-05-12 06:44:49 UTC
Permalink
Hallo Solaiman,

ich sagte doch, dass es sich bei der Software um ein externes Programm
handelt,
da heisst die Routine "Sub OnClick()".
Die Software von der ich spreche, heisst ComosPT - nur wirst du die nicht
kennen.
Das ist eine CAE-Software speziell für die Elektro- und Verfahrenstechnik.
Und bei dieser Software funktioniert auch anscheinend das "GoTo Error"
nicht.

Aber trotzdem Danke für deine Bemühungen, muss ich halt darauf vertrauen,
dass
dieses Objekt vorhanden ist.

Markus
Post by Solaiman Ghaus
Hallo Markus,
Post by Markus
Ich bin am verzweifeln, jetzt habe ich einen "frischen" Button erzeugt
und folgende
Sub OnClick()
was ist denn OnClick() ??? Das heißt Private Sub Command1_Click(). Wobei
statt "Command1" der Name der Taste stehen muß!
Post by Markus
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objSheetForm = objWorkbook.WorkSheets("Formatted")
wo hast du denn objWorkbook definiert?
Post by Markus
On Error GoTo Fehler
Exit Sub
die beiden obigen Zeilen in dieser Zusammensetzung machen doch überhaupt
keinen Sinn! Nach On Error passiert doch nichts außer Exit Sub.
Post by Markus
If Err.Number = -2147024809 Then
MsgBox Err.Number & Err.Description
End If
End Sub
Aber es funktioniert einfach nicht! Ohne das irgendetwas Besonderes
drinsteht, bricht
das Programm mit "Genauer Fehler (0) : Syntaxfehler" ab.
Was mache ich falsch?
Schreib doch bitte den Kompletten Code hier rein. Dann kann ich dir mehr
sagen, denn so macht es keinen Sinn.
Außerdem gib bitte genaue Auskunft über den Fehler, wann er auftritt - an
welcher Stelle passiert es denn?
Im schlimmsten Fall kannst du mir dein VB-Project (NICHT kompeiliert!) und
Beispieldateien von Excel per Mail schicken. Ich werde es mir anschauen
und werde hier nochmal berichten, was schiefläuft.
Post by Markus
Markus
Gruß
Solaiman
Post by Markus
Post by Solaiman Ghaus
Hallo Markus,
Post by Markus
Hallo Solaiman,
erstmal vielen Dank dass du dir für mein Problem so viel Mühe machst.
kein Problem, mache ich gerne ;-)
Post by Markus
Es ist so, dass VB anscheinend den Befehl "GoTo Fehler" nicht versteht.
Kurzer Hinweis: VB und VBA unterscheiden sich im Syntax gar nicht. VBA
kannst du einfach gesagt als Teilmenge von VB sehen.
Hier ist nur GoTo der Befehl. "Fehler" ist der Name der Sprungmarke, den
du selber definieren mußt, wie ich es in dem vorigen Beispiel gezeigt habe!
Post by Markus
Lt. Beschreibung kann ich nur "On Error Resume Next" ausführen,
oder wenn ich die Fehlerbehandlung wieder aufnehmen möchte,
"On Error GoTo 0" - hab ich mal gelesen.
On Error GoTo Zeile/Sprungmarke
On Error Resume Next
On Error GoTo 0
Schau dir bitte die "On Error" Anweisung in der Hilfe an. Dort ist alles
detailliert erklärt worden.
Post by Markus
Aktiviert oder deaktiviert die Fehlerbehandlung
Wenn ich die Befehlszeile verwende "On Error GoTo Fehler", so
bekomme ich den Fehler "Syntaxfehler", und das Programm unterbricht.
wie oben schon geschrieben. Du mußt die Sprungmarke mit dem Namen
"Fehler" definiert haben, damit du es in der GoTo Anweisung
referenzieren kannst. (Es kann natürlich auch anders heißen als "Fehler"
z.B. "MeineFehlerbehandlung"!)
Syntax für Sprungmarke
Doppelpunkt am Ende des Namens markiert die Stelle als Sprungmarke!!!
Post by Markus
Ich klicke in einer bestehenden Software einen Button, der mir
Sub OnClick()
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objSheetForm = objWorkbook.WorkSheets("Formatted")
'If Not ObjSheetForm.Shapes("Project") Is Nothing Then
ObjSheetForm.Shapes("Project").Select
ObjExcel.Selection.Characters.Text = Ordercode
End Sub
Und dann befüllt mir das Programm die Werte in Excel.
Aber wenn das "Shapes("Project")" nicht existiert, dann soll er mir eine
MsgBox zeigen.
'-------------------------------------------------------------------------------------------
Sub OnClick()
Set ObjExcel = CreateObject("Excel.Application")
ObjExcel.Visible = True
Set ObjSheetForm = objWorkbook.Worksheets("Formatted")
On Error GoTo Fehler
ObjSheetForm.Shapes("Project").Select
ObjExcel.Selection.Characters.Text = Ordercode
Exit Sub
If Err.Number = -2147024809 Then
MsgBox "Element nicht gefunden! " & Chr(10) & "Fehler-Nr: " &
Err.Number & Chr(10) & "Beschreibung: " & Err.Description
Else
MsgBox "Fehler aufgetreten: " & Chr(10) & "Fehler-Nr: " & Err.Number
& Chr(10) & "Beschreibung: " & Err.Description
End If
End Sub
'-------------------------------------------------------------------------------------------
Post by Markus
Markus
Gruß
Solaiman
Post by Markus
Post by Solaiman Ghaus
Hallo Markus,
Post by Markus
So geht's leider nicht, denn ich möchte aus einem externen Programm
darauf zugreifen,
also nicht im Excel.
Es ist eine bestehende Sofware, die ich aber mit VB gestalten kann so
wie ich es möchte.
ich kann es nicht nachvollziehen, was du beschreibst. Es ist
unerheblich, ob du die Fehlerbehandlung von externem Programm heraus
oder in Excel direkt durchführst. Die Fehlerbehandlung muß nur der
Programmiersparche konform sein - im Falle von VB ist es aber bereits.
Post by Markus
Sonst noch eine Idee?
Beschreibe doch bitte die ganze Umgebung + Code und Arbeitsablauf
vollständig, sonst ist es schwierig zu verstehen, was du vor hast.
Post by Markus
Markus
Gruß
Solaiman
Solaiman Ghaus
2006-05-12 09:03:53 UTC
Permalink
Hallo Markus,
Post by Markus
Hallo Solaiman,
ich sagte doch, dass es sich bei der Software um ein externes Programm
handelt,
da heisst die Routine "Sub OnClick()".
Die Software von der ich spreche, heisst ComosPT - nur wirst du die nicht
kennen.
Das ist eine CAE-Software speziell für die Elektro- und Verfahrenstechnik.
Und bei dieser Software funktioniert auch anscheinend das "GoTo Error"
nicht.
dann ist diese Software auch nicht mit VB geschrieben, sondern ist
vielleicht JScript oder JavaScript im Spiel!
Post by Markus
Aber trotzdem Danke für deine Bemühungen, muss ich halt darauf vertrauen,
dass
dieses Objekt vorhanden ist.
Ken Problem, gern geschehen ;-)
Post by Markus
Markus
Gruß
Solaiman
Post by Markus
Post by Solaiman Ghaus
Hallo Markus,
Post by Markus
Ich bin am verzweifeln, jetzt habe ich einen "frischen" Button erzeugt
und folgende
Sub OnClick()
was ist denn OnClick() ??? Das heißt Private Sub Command1_Click(). Wobei
statt "Command1" der Name der Taste stehen muß!
Post by Markus
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objSheetForm = objWorkbook.WorkSheets("Formatted")
wo hast du denn objWorkbook definiert?
Post by Markus
On Error GoTo Fehler
Exit Sub
die beiden obigen Zeilen in dieser Zusammensetzung machen doch überhaupt
keinen Sinn! Nach On Error passiert doch nichts außer Exit Sub.
Post by Markus
If Err.Number = -2147024809 Then
MsgBox Err.Number & Err.Description
End If
End Sub
Aber es funktioniert einfach nicht! Ohne das irgendetwas Besonderes
drinsteht, bricht
das Programm mit "Genauer Fehler (0) : Syntaxfehler" ab.
Was mache ich falsch?
Schreib doch bitte den Kompletten Code hier rein. Dann kann ich dir mehr
sagen, denn so macht es keinen Sinn.
Außerdem gib bitte genaue Auskunft über den Fehler, wann er auftritt - an
welcher Stelle passiert es denn?
Im schlimmsten Fall kannst du mir dein VB-Project (NICHT kompeiliert!) und
Beispieldateien von Excel per Mail schicken. Ich werde es mir anschauen
und werde hier nochmal berichten, was schiefläuft.
Post by Markus
Markus
Gruß
Solaiman
Post by Markus
Post by Solaiman Ghaus
Hallo Markus,
Post by Markus
Hallo Solaiman,
erstmal vielen Dank dass du dir für mein Problem so viel Mühe machst.
kein Problem, mache ich gerne ;-)
Post by Markus
Es ist so, dass VB anscheinend den Befehl "GoTo Fehler" nicht versteht.
Kurzer Hinweis: VB und VBA unterscheiden sich im Syntax gar nicht. VBA
kannst du einfach gesagt als Teilmenge von VB sehen.
Hier ist nur GoTo der Befehl. "Fehler" ist der Name der Sprungmarke, den
du selber definieren mußt, wie ich es in dem vorigen Beispiel gezeigt habe!
Post by Markus
Lt. Beschreibung kann ich nur "On Error Resume Next" ausführen,
oder wenn ich die Fehlerbehandlung wieder aufnehmen möchte,
"On Error GoTo 0" - hab ich mal gelesen.
On Error GoTo Zeile/Sprungmarke
On Error Resume Next
On Error GoTo 0
Schau dir bitte die "On Error" Anweisung in der Hilfe an. Dort ist alles
detailliert erklärt worden.
Post by Markus
Aktiviert oder deaktiviert die Fehlerbehandlung
Wenn ich die Befehlszeile verwende "On Error GoTo Fehler", so
bekomme ich den Fehler "Syntaxfehler", und das Programm unterbricht.
wie oben schon geschrieben. Du mußt die Sprungmarke mit dem Namen
"Fehler" definiert haben, damit du es in der GoTo Anweisung
referenzieren kannst. (Es kann natürlich auch anders heißen als "Fehler"
z.B. "MeineFehlerbehandlung"!)
Syntax für Sprungmarke
Doppelpunkt am Ende des Namens markiert die Stelle als Sprungmarke!!!
Post by Markus
Ich klicke in einer bestehenden Software einen Button, der mir
Sub OnClick()
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objSheetForm = objWorkbook.WorkSheets("Formatted")
'If Not ObjSheetForm.Shapes("Project") Is Nothing Then
ObjSheetForm.Shapes("Project").Select
ObjExcel.Selection.Characters.Text = Ordercode
End Sub
Und dann befüllt mir das Programm die Werte in Excel.
Aber wenn das "Shapes("Project")" nicht existiert, dann soll er mir eine
MsgBox zeigen.
'-------------------------------------------------------------------------------------------
Sub OnClick()
Set ObjExcel = CreateObject("Excel.Application")
ObjExcel.Visible = True
Set ObjSheetForm = objWorkbook.Worksheets("Formatted")
On Error GoTo Fehler
ObjSheetForm.Shapes("Project").Select
ObjExcel.Selection.Characters.Text = Ordercode
Exit Sub
If Err.Number = -2147024809 Then
MsgBox "Element nicht gefunden! " & Chr(10) & "Fehler-Nr: " &
Err.Number & Chr(10) & "Beschreibung: " & Err.Description
Else
MsgBox "Fehler aufgetreten: " & Chr(10) & "Fehler-Nr: " & Err.Number
& Chr(10) & "Beschreibung: " & Err.Description
End If
End Sub
'-------------------------------------------------------------------------------------------
Post by Markus
Markus
Gruß
Solaiman
Post by Markus
Post by Solaiman Ghaus
Hallo Markus,
Post by Markus
So geht's leider nicht, denn ich möchte aus einem externen Programm
darauf zugreifen,
also nicht im Excel.
Es ist eine bestehende Sofware, die ich aber mit VB gestalten kann so
wie ich es möchte.
ich kann es nicht nachvollziehen, was du beschreibst. Es ist
unerheblich, ob du die Fehlerbehandlung von externem Programm heraus
oder in Excel direkt durchführst. Die Fehlerbehandlung muß nur der
Programmiersparche konform sein - im Falle von VB ist es aber bereits.
Post by Markus
Sonst noch eine Idee?
Beschreibe doch bitte die ganze Umgebung + Code und Arbeitsablauf
vollständig, sonst ist es schwierig zu verstehen, was du vor hast.
Post by Markus
Markus
Gruß
Solaiman
Loading...