Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Wie kann ich einen Parameter aus dem Formular in ein Modul übergeben?

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:  Wie kann ich einen Parameter aus dem Formular in ein Modul übergeben? (2865 mal gelesen)
Diesaster
Mitglied
Student


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

Beiträge: 61
Registriert: 05.11.2015

erstellt am: 18. Aug. 2017 10:05    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 Community,

ich brauche etwas Rat. Ich habe mir im VBA-Projekt ein Eingabefenster erstellt. Anschließend in der Userform alle Textfelder und Co. mit Anweisungen versehen und dort Parameter vergeben.

Ich habe die Parameter bereits als

Code:
Public Parameter As Integer

im Modul eingetragen.

Wie kann ich diesen Parameter an das Modul übergeben?

Mit freundlichen Grüßen
Diesaster

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

joehz
Moderator
Freiberuflicher Konstrukteur


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

Beiträge: 1057
Registriert: 25.11.2006

Win7 Pro 64 + Ubuntu + Irix6.5.20
Dell Precision M6600 i7-2960XM 2.7GHz 16GB
NVidia Quadro M5010
Catia V5R19
VB6Pro.SP6/VBA 6.5.1053

erstellt am: 18. Aug. 2017 10:39    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 Diesaster 10 Unities + Antwort hilfreich

Hi Diesaster,

hier fehlt's scheinbar an den Grundlagen.

Aus der Online-Hilfe zu VBA:

Zitat:

Public Statement

Used at module level to declare public variables and allocate storage space.



Anders ausgedrückt:
Deklariere globale Variable innerhalb des Modulkopfes, etwa so:

Code:

Option Explicit

Public iVar as integer
Public strVar as string
public lnVar as long
public const strName = "Testname"

sub Main()
  msgbox strName
end sub


Allgemein:
Was heisst:

Zitat:

Ich habe mir im VBA-Projekt ein Eingabefenster erstellt.
Anschließend in der Userform alle Textfelder und Co. mit Anweisungen versehen und dort Parameter vergeben.


Ich verstehe das so:
- das VBA-Projekt besteht aus einem Modul und einer Userform
- die Userform zeigt eine Eingabe-Maske(Dialog)
- in den Change-Events der Textfelder werden Variablen Werte zugewiesen
- eine Routine(Sub, Function) des Moduls soll die globalen Variablen weiter verarbeiten

Nur: Was verstehst Du unter 'Parameter'?
Ausserdem: Ich würde nie einer Variablen den Namen 'Parameter' geben.
Weiter: Globale Variable, deklariert mit 'Public' sind im gesamten Projekt bekannt, also überall.

Tschau,
Joe

------------------
Inoffizielle Catia Hilfeseite

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

Diesaster
Mitglied
Student


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

Beiträge: 61
Registriert: 05.11.2015

erstellt am: 18. Aug. 2017 10:42    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

Das hier ist mein Code für die Userform:

Code:

Private Sub Best_Click()

If (UserForm.ChkDeuSch = True Xor txtDeuSch <> "") And _
    (ChkEngSch = True Xor txtEngSch <> "") And _
    (ChkSpac = True Xor txtSpac <> "") And _
    (ChkRat = True Xor txtRat <> "") Then 'Wenn alle Felder ausgefuellt sind dann, sonst nicht alle Informationen angegeben

    If txtDeuSch <> "" Then 'Wenn ein Text eingegeben wurde dann

        Deusch = IsNumeric(txtDeuSch.Value) 'Wenn der eingegebene Text eine Zahl ist dann

            If Deusch = True Then

                Deutsch = txtDeuSch.Value
               
            Else

                MsgBox "Es wurde keine Zahl eingegeben!"

            End If
    End If

    If txtEngSch <> "" Then

        EngSch = IsNumeric(txtEngSch.Value)

            If EngSch = True Then
               
                Englisch = txtEngSch.Value

            Else

                MsgBox "Es wurde keine Zahl eingegeben!"

            End If
    End If

    If txtSpac <> "" Then

        Spac = IsNumeric(txtSpac.Value)

            If Spac = True Then
               
                Spacing = txtSpac.Value
               
            Else

                MsgBox "Es wurde keine Zahl eingegeben!"

            End If
    End If

    If txtRat <> "" Then

        Rat = IsNumeric(txtRat.Value)

            If Rat = True Then
               
                Ratio = txtRat.Value

            Else

                MsgBox "Es wurde keine Zahl eingegeben!"

            End If
    End If

    If ChkDeuSch = True Then 'Wenn die Checkbox aktiviert ist dann
       
        Deutsch = 3.5
       
    End If
   
    If ChkEngSch = True Then
       
        Englisch = 2.5
       
    End If

    If ChkSpac = True Then
       
        Spacing = 0
       
    End If

    If ChkRat = True Then
       
        Ratio = 100
       
    End If

Else

    MsgBox "Es wurden nicht alle Informationen angegeben!"
   
End If

End Sub

Private Sub Canc_Click()
    End
End Sub

Private Sub ChkDeuSch_Click()

If ChkDeuSch.Value = True Then 'Wenn die Checkbox aktiv ist wird das Textfeld geloescht und unsichtbar

    txtDeuSch.Locked = True
    txtDeuSch.Text = ""
    txtDeuSch.Visible = False
   
Else

    txtDeuSch.Locked = False
    txtDeuSch.Visible = True
   
End If
   
End Sub

Private Sub ChkEngSch_Click()

If ChkEngSch.Value = True Then 'Wenn die Checkbox aktiv ist wird das Textfeld geloescht und unsichtbar

    txtEngSch.Locked = True
    txtEngSch.Text = ""
    txtEngSch.Visible = False
   
Else

    txtEngSch.Locked = False
    txtEngSch.Visible = True

End If
   
End Sub

Private Sub ChkRat_Click()

If ChkRat.Value = True Then 'Wenn die Checkbox aktiv ist wird das Textfeld geloescht und unsichtbar

    txtRat.Locked = True
    txtRat.Text = ""
    txtRat.Visible = False
   
Else

    txtRat.Locked = False
    txtRat.Visible = True

End If
   
End Sub

Private Sub ChkSpac_Click()

If ChkSpac.Value = True Then 'Wenn die Checkbox aktiv ist wird das Textfeld geloescht und unsichtbar

    txtSpac.Locked = True
    txtSpac.Text = ""
    txtSpac.Visible = False
   
Else

    txtSpac.Locked = False
    txtSpac.Visible = True

End If
   
End Sub

Private Sub GraSta_Click()

ChkDeuSch = True
ChkEngSch = True
ChkRat = True
ChkSpac = True

End Sub

Private Sub txtDeuSch_Change()
CheckUserInputs
End Sub

Private Sub txtEngSch_Change()
CheckUserInputs
End Sub

Private Sub txtRat_Change()
CheckUserInputs
End Sub

Private Sub txtSpac_Change()
CheckUserInputs
End Sub

Sub CheckUserInputs()

End Sub


Ich möchte nun die Parameter genannt Deutsch, Englisch, Spacing und Ratio in das Modul einlesen.
Allerdings hänge ich hier etwas. Und ja du hast recht. Ich habe so gut wie keine Kenntnisse in VBA.
Ein Makro konnte ich aber dennoch erstellen, welches ich spatter in das Modul einpflegen möchte.

Im Modul habe ich die Variablen deklariert:

Code:
Public Deutsch As Double
Public Englisch As Double
Public Spacing As Integer
Public Ratio As Integer

Gruß
Diesaster

[Diese Nachricht wurde von Diesaster am 18. Aug. 2017 editiert.]

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

joehz
Moderator
Freiberuflicher Konstrukteur


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

Beiträge: 1057
Registriert: 25.11.2006

Win7 Pro 64 + Ubuntu + Irix6.5.20
Dell Precision M6600 i7-2960XM 2.7GHz 16GB
NVidia Quadro M5010
Catia V5R19
VB6Pro.SP6/VBA 6.5.1053

erstellt am: 18. Aug. 2017 10: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 Nur für Diesaster 10 Unities + Antwort hilfreich

Hi,
Zitat:
Ich möchte nun die Parameter genannt Deutsch, Englisch, Spacing und Ratio in das Modul einlesen.

Die sind schon 'drin'(bekannt)!
Das versuch ich Dir die ganze Zeit zu erklären.

Tschau,
Joe

------------------
Inoffizielle Catia Hilfeseite

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

Diesaster
Mitglied
Student


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

Beiträge: 61
Registriert: 05.11.2015

erstellt am: 18. Aug. 2017 10:59    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

Wie im Code zu sehen sind die Parameter in der Best_Click(), welcher mein Bestätigen-Button ist.
Wenn ich nun in mein Eingabefenster einen Wert z.B. bei Spacing 100 eingebe, wie kann ich diesen dann im Modul abrufen?

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

joehz
Moderator
Freiberuflicher Konstrukteur


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

Beiträge: 1057
Registriert: 25.11.2006

Win7 Pro 64 + Ubuntu + Irix6.5.20
Dell Precision M6600 i7-2960XM 2.7GHz 16GB
NVidia Quadro M5010
Catia V5R19
VB6Pro.SP6/VBA 6.5.1053

erstellt am: 18. Aug. 2017 11:15    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 Diesaster 10 Unities + Antwort hilfreich

Hi,

hast Du mein Mini-Beispiel gelesen und verstanden?

In Deinem Fall:
- erzeuge/verwende 'Sub catmain' um das Makro anzufangen(Catia sucht nach CatMain)
- Innerhalb von 'Catmain' übergibst an die Userform per 'UserForm1.Show'(falls die Userform 'Userform1' heisst)
- wenn Du den Dialog/die Userform wieder schliesst, geht die Kontrolle automatisch an 'catmain' zurück.
- dort kannst dann zB per
  MsgBox Spacing
auf die globalen Variablen zugreifen.

Ausserdem: Die von Dir verwendeten Variablennamen sind unglücklich gewählt. Gewöhne Dir eine Nomenklatur an,
etwa wie hier beschrieben:
https://msdn.microsoft.com/en-us/library/aa240822%28v=vs.60%29.aspx

Tschau,
Joe

------------------
Inoffizielle Catia Hilfeseite

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

Diesaster
Mitglied
Student


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

Beiträge: 61
Registriert: 05.11.2015

erstellt am: 18. Aug. 2017 11:18    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

Herzlichen Dank für die Hilfe!

Jetzt hats geklappt. Hoffe es treten nicht noch weitere Probleme auf.

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

joehz
Moderator
Freiberuflicher Konstrukteur


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

Beiträge: 1057
Registriert: 25.11.2006

Win7 Pro 64 + Ubuntu + Irix6.5.20
Dell Precision M6600 i7-2960XM 2.7GHz 16GB
NVidia Quadro M5010
Catia V5R19
VB6Pro.SP6/VBA 6.5.1053

erstellt am: 18. Aug. 2017 11:35    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 Diesaster 10 Unities + Antwort hilfreich

Hi,

Zitat:
Jetzt hats geklappt. Hoffe es treten nicht noch weitere Probleme auf.

Du hast das Zwinkern vergessen! ;-)

Tschau,
Joe

PS: Bitte Deine Systemumgebung ins Profil eintragen.

------------------
Inoffizielle Catia Hilfeseite

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)2023 CAD.de | Impressum | Datenschutz