Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Variable deklarieren

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:  Variable deklarieren (630 mal gelesen)
tubuibam
Mitglied



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

Beiträge: 93
Registriert: 10.11.2013

Intel Core i5- 2.6Ghz, 4GB Ram, Intel HD Grafik 4000
Windows 7, Catia V5 R19

erstellt am: 27. Feb. 2015 10:11    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 eine Frage, und zwar:

Wenn ich eine Variable innerhalb einer Sub Funktion für eine Aktion (z.B Tabelle erzeugen) in VBA Form deklarieren, läuft es problemlos, sogar wenn ich eine Schleife schalte, und diese Funktion mehr mal gerufen wird.

Jetzt wenn ich die Deklaration in Sub UserForm_Acivate setze, versteht das Programm meine Variable nicht!

Meine Vorstellung ist aber anders:
1) wenn man die Deklarartion in Userform_Activate setzt, ist diese quasi immer schon definiert (Wenn man diesen Form aufruft, ist er schon aktiviert), und die Variable kann benutzt werden.
2) wenn man die Deklararion in eine Subfunktion für eine  Aktion setzt (z.B Tabelle erzeugen), und mehrere Tabellen auf Grund einer WiederholungSchleife erzeugt werden, sind die Deklaration mehr mal gemacht, und es führt zum Problem?

Sind meine Vorstellung richtig? Also es sollte nach meiner Vorstellung nicht funktionieren, funktioniert es aber schon 

Könnte mir jemand bitte erklären?
VG

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: 27. Feb. 2015 13: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 tubuibam 10 Unities + Antwort hilfreich

Hallo tubuibam,

Zitat:
Original erstellt von tubuibam:

Sind meine Vorstellung richtig? Also es sollte nach meiner Vorstellung nicht funktionieren, funktioniert es aber schon 

...weil sie falsch ist.

Zu 2)

- Deklarationen innerhalb einer Sub/Function werden bei verlassen der Sub/Function 'vergessen' (Ausnahme: mit 'Static' deklarierte Variable);
- Deklarationen werden so oft eingelesen, wie es der Programmaufbau vorgibt. Wenn die Dims in einer Schleife liegen, das eben sooft, wie die Schleife durchlaufen wird.
Weil das gewöhnlich unsinnig ist, lege ich alle Deklarationen an den Routinen-Anfang.
Ausserdem: Lokal deklarierte Variable gleichen Namens sehen sich nicht.

Beispiel: (ungetestet)

Code:

Sub TuDies()
  dim i as integer
  static n as integer

  i=i+1

  n=n+1
  msgbox "i: " & i & vbtab & "n: " & n

end sub

sub catmain
  dim i as integer 

  for i = 1 to 10
      tudies
  next
end sub



Wenn Du jetzt CatMain ablaufen lässt, wird der Wert von i immer = 1 sein, während n stetig um 1 zunimmt.

Zu 1)

Prüf doch einfach nach, wo in UserForm-Activate gesetzte Variable sichtbar sind.
Zuvor schreibe aber bitte ganz oben - ausserhalb jeder Sub/Function 'Option Explicit' hin.
Das zwingt Dich dazu, jede Variable vor Gebrauch zu deklarieren.

Also:

Code:

Option Explicit
Private Sub UserForm_Activate()
  Dim n As Integer
 
End Sub

Private Sub UserForm_Click()
  n = n + 1
  MsgBox n
End Sub



Nach Deiner Logik, müsste UserForm-Click ohne Fehler ablaufen.

Allgemein zum Eigenstudium:

- Option Explicit Statement
- Declare Statement
- Dim Statement

und alle Querverweise dazu.

Tschau,
Joe

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