Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Inventor
  VBA Modul/Form per ilogic starten

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:   VBA Modul/Form per ilogic starten (253 mal gelesen)
Bienenkopf
Mitglied
Maschinenbau Ingenieur


Sehen Sie sich das Profil von Bienenkopf an!   Senden Sie eine Private Message an Bienenkopf  Schreiben Sie einen Gästebucheintrag für Bienenkopf

Beiträge: 180
Registriert: 04.11.2005

Inventor 2011

erstellt am: 05. Nov. 2018 11:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen,

ich habe mir eine Userform per VBA zurecht gebastelt und starte diese per ilogic.

Das Problem:
Wenn ich die Userform als Makro oder direkt in VBA-Editor starte, öffnet sich sofort die Userform und ich kann sie bearbeiten.
Starte ich es allerdings per ilogic, öffnet sich zwar auch die Userform sofort, aber die Maus wird zur Sanduhr welche einige Sekunden verbleibt. Erst im Anschluss kann ich die Userform bearbeiten.
Hat jemand eine Idee warum das soviel länger dauert, als das Makro manuel zu starten und wie ich das ggf. Ändern kann?

Der ilogic Code zum starten ist überschaubar  Vllt habe ich ja was vergessen?

Code:
InventorVb.RunMacro ("Anwendungsprojekt", "Index_1", "Index_1" )

iLogicVb.UpdateWhenDone = True 'Update the Text instantly


------------------
MfG
Pablo                        
lesen gefährdet die Dummheit

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Bienenkopf
Mitglied
Maschinenbau Ingenieur


Sehen Sie sich das Profil von Bienenkopf an!   Senden Sie eine Private Message an Bienenkopf  Schreiben Sie einen Gästebucheintrag für Bienenkopf

Beiträge: 180
Registriert: 04.11.2005

Inventor 2011

erstellt am: 12. Nov. 2018 11:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hat keiner von euch eine Idee woran das liegen könnte? 

------------------
MfG Pablo                        
lesen gefährdet die Dummheit

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Ruzy5624
Mitglied
Konstruktionsleiter / staatl. gepr. Techniker


Sehen Sie sich das Profil von Ruzy5624 an!   Senden Sie eine Private Message an Ruzy5624  Schreiben Sie einen Gästebucheintrag für Ruzy5624

Beiträge: 272
Registriert: 01.07.2015

Product Design Suite 2018 Ultimate
Visual Studio 2017
Windows 10 Pro
Intel Xeon E3-1245 v5 @ 3,5GHz
Nvidia Quadro M4000 8GB
RAM 32GB
2x 24" Monitore FullHD
SpaceMouse Pro

erstellt am: 12. Nov. 2018 22:34    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Bienenkopf 10 Unities + Antwort hilfreich

Hallo,

ich habe es gerade einmal selbst getestet und kann deinen beschriebenen Effekt leider nicht rekonstruieren.

Wenn ich mittels iLogic eine VBA UserForm, bzw. die Sub zum Aufruf der Form auslöse, öffnet sich die UserForm sofort und auch nach dem Öffnen habe ich keine Sanduhr oder dergleichen.
Ich kann mit der UserForm sofort arbeiten.

Zum Aufruf der Form habe ich den gleichen Code genutzt wie von dir vorgegeben.

Eventuell hat deine UserForm Inhalte, welche den Effekt auslösen?!?

------------------
Mit Besten Grüßen

Marcel

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Bienenkopf
Mitglied
Maschinenbau Ingenieur


Sehen Sie sich das Profil von Bienenkopf an!   Senden Sie eine Private Message an Bienenkopf  Schreiben Sie einen Gästebucheintrag für Bienenkopf

Beiträge: 180
Registriert: 04.11.2005

Inventor 2011

erstellt am: 16. Nov. 2018 10:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

könnte gut sein, dass es am Code liegt, aber wieso habe ich das Problem dann nicht, wenn ich es in VBA auslöse? Das Problem tritt, wie gesagt, nur auf wenn ich es aus Inventor heraus per ilogic starte...

Ich habe den VBA Code hier mal dargelegt. Ich kann natürlich nicht erwarten, dass jmd diesen langen Code prüft, aber vllt hat ja jmd Lust 
Die UserForm besteht aus 4 Eingabefeldern, die auf Custom iproperties verweisen

Code:
Option Explicit
--------------------------------------------------
'Abbrechen Button klicken
Private Sub CommandButton_Abbrechen_Click()
    Unload UserForm_Index_1
End Sub
-------------------------------------------------
'Vorschläge im Textfeld
Public Sub UserForm_Initialize()

    ' Get the active document.
    Dim doc As Document
    Set doc = ThisApplication.ActiveDocument

    ' Get the custom property set.
    Dim customPropSet As PropertySet
    Set customPropSet = doc.PropertySets.Item("Inventor User Defined Properties")
           
    Dim IndexCurrent As Property
    Dim AenderungCurrent As Property
    Dim DatumCurrent As Property
    Dim NameCurrent As Property
           
    'Versuche die iProperty Einträge abzurufen
    On Error Resume Next
    Set IndexCurrent = customPropSet.Item("1.Index")
    Set AenderungCurrent = customPropSet.Item("1.Änderung")
    Set DatumCurrent = customPropSet.Item("1.Datum")
    Set NameCurrent = customPropSet.Item("1.Name")

    'Wenn iProperty Einträge abzurufen fehlerhaft dann
    If Err.Number <> 0 Then
        IndexCurrent.Value = ""
        AenderungCurrent.Value = ""
        DatumCurrent.Value = ""
        NameCurrent.Value = ""
    End If
           
    ' Wenn iPropertie noch nicht vorhanden dann zeige... sonst zeige bestehenden Wert
    If IndexCurrent.Value = "" Then
    UserForm_Index_1.TextBox_Index.Value = "A"
    Else: UserForm_Index_1.TextBox_Index.Value = IndexCurrent.Value
    End If
   
    If AenderungCurrent.Value = "" Then
    UserForm_Index_1.TextBox_Aenderung.Value = ""
    Else: UserForm_Index_1.TextBox_Aenderung.Value = AenderungCurrent.Value
    End If

    If DatumCurrent.Value = "" Then
    UserForm_Index_1.TextBox_Datum.Value = Format(Date, "dd.mm.yyyy")
    Else: UserForm_Index_1.TextBox_Datum.Value = DatumCurrent.Value
    End If

    If NameCurrent.Value = "" Then
    UserForm_Index_1.TextBox_Name.Value = ThisApplication.GeneralOptions.UserName
    Else: UserForm_Index_1.TextBox_Name.Value = NameCurrent.Value
    End If


End Sub
----------------------------------------------------

Private Sub CommandButton_Uebernehmen_Click()

    ' Get the active document.
    Dim doc As Document
    Set doc = ThisApplication.ActiveDocument

    ' Update or create the custom iProperty.
    Call UpdateCustomiProperty(doc, "1.Index", UserForm_Index_1.TextBox_Index.Value)
    Call UpdateCustomiProperty(doc, "1.Änderung", UserForm_Index_1.TextBox_Aenderung.Value)
    Call UpdateCustomiProperty(doc, "1.Datum", UserForm_Index_1.TextBox_Datum.Value)
    Call UpdateCustomiProperty(doc, "1.Name", UserForm_Index_1.TextBox_Name.Value)
   
    ' Schließe Fenster
    Unload UserForm_Index_1
End Sub
----------------------------------------------------------
Public Sub UpdateCustomiProperty(ByRef doc As Document, _
ByRef PropertyName As String, _
ByRef PropertyValue As Variant)
    ' Get the custom property set.
    Dim customPropSet As PropertySet
    Set customPropSet = doc.PropertySets.Item("Inventor User Defined Properties")

    ' Get the existing property, if it exists.
    Dim prop As Property
    On Error Resume Next
    Set prop = customPropSet.Item(PropertyName)

    ' Check to see if the above call failed.  If it failed
    ' then the property doesn't exist.
    If Err.Number <> 0 Then
    ' Failed to get the existing property so create a new one.
    Set prop = customPropSet.Add(PropertyValue, PropertyName)
    Else
    ' Change the value of the existing property.
    prop.Value = PropertyValue
    End If
End Sub


------------------
MfG Pablo                        
lesen gefährdet die Dummheit

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Bienenkopf
Mitglied
Maschinenbau Ingenieur


Sehen Sie sich das Profil von Bienenkopf an!   Senden Sie eine Private Message an Bienenkopf  Schreiben Sie einen Gästebucheintrag für Bienenkopf

Beiträge: 180
Registriert: 04.11.2005

Inventor 2011

erstellt am: 20. Nov. 2018 11:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen,

ich habe jetzt eine Lösung für mein Problem gefunden, auch wenn diese für mich weder Sinn ergibt noch nachvollziehbar ist.
Aber vllt erlöst es ja den einen oder anderen der sich mit den selben Problem befasst.

Das Modul, welches die UserForm aufruft, ist relativ schlicht:

Code:
Public Sub Index_1()
UserForm_Index_1.Show False
End Sub

Ich habe lediglich das "False" ergänzt. Normalerweise blockiert die UserForm die gesamte Inventoroberfläche sodass nur in der UserForm interagiert werden kann.
Durch "False" wird die Blockierung aufgehoben. Warum sich dadurch mein Problem behoben hat, ist mir allerdings absolut schleierhaft.
Naja, vllt hilft es ja jmd 

------------------
MfG Pablo                        
lesen gefährdet die Dummheit

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2018 CAD.de | Impressum | Datenschutz