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

Variable deklarieren

Variable deklarieren
06.09.2005 16:21:01
michael
Hallo,
wie muss ich eine Variable deklarieren damit sie in einem anderen Modul ebenso definiert und ihr Wert übernommen wird? Die Variable intervall dachte ich mit Public macroübergreifend definiert zu haben.
Im Sheet1 steht:
Option Explicit
Public intervall As Single

Private Sub CommandButton1_Click()
intervall = 200
... Code...
End Sub

Im Modul1:
Option Explicit
Deklarationen
Public Sub prcStart()
SetTimer lnghWnd, 0, intervall, AddressOf prcTimerStart
End Sub
Danke und Gruß
Michael

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variable deklarieren
06.09.2005 16:22:25
Fred
Hi,
Public intervall As Single muss in ein Standardmodul.
mfg Fred
AW: Variable deklarieren
06.09.2005 16:39:39
michael
Hallo Fred,
wird wenn ich Public intervall As Single in ein Standardmodul schreibe dieses dann vom Modul in Sheet verstanden. Oder gibt es zwischen diesen beiden Macros in Sheet1 und Modul1 immer Probleme.
Wie kann ich mein Private Sub CommandButton1_Click() in ein Standardmodul umziehen. Oder wie kann ich einen StartButton erzeugen, damit er gleich in einem Standardmodul erscheint.
Danke und Gruß
Michael
AW: Variable deklarieren
06.09.2005 16:46:49
Fred
Hi,
Public-Variable stehen im gesamtem Projekt zur Verfügung.
mfg Fred
AW: Variable deklarieren
06.09.2005 17:08:08
michael
Hallo Fred,
danke für die Hilfe!
Hast du eine Idee wie ich mein Private Sub CommandButton1_Click() von Sheet1 in ein Standardmodul umziehen kann? Ich glaube ich habe noch weitere Schwierigkeiten damit...
Oder wie kann ich einen StartButton erzeugen, damit er gleich in einem Standardmodul erscheint und das gleiche tut wie der ursprüngliche Private Sub CommandButton1_Click(). Dann kann ich den Inhalt des ursprüngl. Macros reinkopieren.
Ich frag halt so blöd, da ich ein fertiges Macro für meine Zwecke weiter nutze und keine Ahnung habe wie es angefertigt wurde...
Danke und Gruß
Michael
Anzeige
AW: Variable deklarieren
06.09.2005 17:42:00
Hugo
Hallo,
dafür gibt es den Call-Befehl:

Private Sub CommandButton1_Click()
Call Dein_Makro
End Sub

Hugo
AW: Variable deklarieren
06.09.2005 18:01:48
michael
Hallo Hugo,
danke für deine Hilfe.
wenn ich dich richtig verstehe steht

Private Sub CommandButton1_Click()
Call Dein_Makro
End Sub

weiterhin unter sheet1. Ich rufe dann nur nachfolgende Macros auf die dann im Modul1 stehen. Das Problem ist, dass Variablen die ich unter

Private Sub CommandButton1_Click()
erstellt, habe nicht ins Modul übergeben werden.
Deshal dachte ich mir ich versuche leiber gleich so was wie ein
Sub CommandButton1_Click() in einem Modul zu erstellen und dann bleibt das Sheet1 ohne Macro und somit ich ohne Übergabeprobleme der Variablen...
Hast du eine Idee wie ich den Umzug des Macros von Sheet1 nach Modul1 ralisieren kann?
Danke
Michael

Anzeige
Variablen übergeben
06.09.2005 18:24:28
Hugo
Hallo,
du kannst Variablen übergeben:
Private Sub CommandButton1_Click()
'In Sheet1
Dim s as string
s = "Hallo"
Call Dein_Makro(s)
End Sub
Sub Dein_Makro(str As String)
'In einem allgemeinen Modul
Msgbox str
End Sub

Aber warum erstellst du die Variablen nicht direkt in der Sub im allgemeinen Modul?
Hugo
AW: Variablen übergeben
06.09.2005 18:43:59
michael
HAllo Hugo,
erst mal Danke für das Beispiel.
Nach Private Sub CommandButton1_Click()
folgen einige Befehle mit denen ich Variablen aus dem Tabellenblatt einlese bzw. weitere Variablen, die im weiteren Verlauf in diesem Sub berechnet werden.
Dann muss ich für eine API-Anwendung in ein allgemeines Modul (Modul1) wechseln und würde, da ich dann nur noch im allgemeinen Modul weiterarbeiten kann, alle Variablen ins Modul1 übegeben ohne diese neu definieren oder berechnen zu müssen.
Deshalb dachte ich mir es ist wohl am einfachsten nicht nur wie von dir gefragt die Variablen direkt in der Sub im allgemeinen Modul zu definieren sondern auch gleich das gesamte Sub CommandButton1_Click in ein allgemeines Modul einzufügen. Wäre auch für mich übersichtlicher da dann das wechseln von Sheet1 nach Modul1 wegfällt.
Viele Grüße
Michael
Anzeige
AW: Variablen übergeben
06.09.2005 19:07:07
Hugo
Hallo,
ein Commandbutton hat als Heimatmodul immer das Klassenmodul der Tabelle, in der der Button steht. Da kannst du dich auf den Kopf stellen und klatschen: anders geht es nicht.
Ich versteh aber immer noch nicht wo dein Problem liegt. Nimm einfach den Prozedurrumpf des Commandbuttons (im Klassenmodul der Tabelle) und rufe darüber einfach deine Sub im allgemeinen Modul auf.
Welchen Hinderungsgrund gibt es, deine "Befehle, mit denen du Variablen aus dem Tabellenblatt einliest", nicht in der Sub des allgemeinen Moduls auszuführen?
Hugo
AW: Variablen übergeben
06.09.2005 19:31:13
michael
Hallo Hugo,
jetzt (glaub ich) hab ich verstanden was du meinst.
Mit

Private Sub CommandButton1_Click()
Call Dein_Makro
End Sub

soll ich sofort in das Modul Springen und dort die weiteren Zeilen unter Dein_Makro ausführen, die vorher unter Sub CommandButton1_Click folgten. Dadurch stehen im Sheet1 nur noch die 3 Zeilen, der Rest im Modul.
Meine Frage war von mir mit "Sub CommandButton1_Click in ein allgemeines Modul einzufügen" falsch umschrieben. Hab jetzt rausgefunden, dass ich dieses Steuerelement durch z.B. ein Textfeld oder AutoForm ersetzen kann. Wenn ich dieser ein Macro zuordne und dann auf neu gehe, wird in einem allgemeinen Modul ein Sub AutoForm1_BeiKlick()erstellt. Dort kopiere ich die Befehlszeilen hinein, dann sollte ich alles in einem allgemeinen Modul haben...und kann den Inhalt von Sheet1 komplet entfernen.
Hoffentlich täusch ich mich nicht....
Grüße
Michael
P.S. deine vorgeschlagene Vorgehensweise lässt sich vielleicht auch bei einer UserForm anwenden? Dann hab ich den Klick als Ereignis in der UserForm und rufe dann das Macro im Modul auf? Das entspricht dann den o.g. 3 zeilen.
Anzeige
Alles korrekt
06.09.2005 19:45:34
Hugo
Hallo,
stimmt alles was du sagst.
Und natürlich kannst du auch irgendein Autoform, ein Objekt oder den Button aus der Formularleiste nehmen. Allerdings stehen dir dann die ganzen Ereignisse des Commandbuttons (Click, Mousemove etc.) nicht zur Verfügung.
hugo
AW: Alles korrekt
06.09.2005 20:38:03
michael
Danke Hugo,
aber kannst du mir bitte noch kurz erklären was das für Ereignisse des Commandbuttons (Click, Mousemove etc.) sind, die mir dann nicht zur Verfügung stehen...
Ich konnte bei einem ersten Test mit einem Sub AutoForm_BeiKlick() und der kerkömmlichen Private Sub CommandButton1_Click() die Maus bewegen und das Blatt scrollen.
Also scheinst du wohl etwas anderes zu meinen....
Viele Grüße
Michael
Anzeige
AW: Alles korrekt
06.09.2005 20:52:35
Hugo
Hallo,
wenn du einen Commandbutton einfügst und machst einen Doppelklick drauf, dann gelangst du in den VBA-Editor.
Dort erscheint dann automatisch der Prozedurrumpf für das Click-Ereignis des Buttons:

Private Sub CommandButton1_Click()
End Sub

Wenn du jetzt deinen Blick mal nach oben lenkst, siehst du zwei Comboboxen. In der linken sollte der Name deines Commandbuttons stehen, und in der rechten alle Ereignisse, die du mit dem Button verwerten kannst. Das Standardereignis ist das Click-Ereignis - also was soll passieren, wenn du auf den Button Clickst.
Dieser Button kennt aber eben noch andere Ereignisse - wie z.B. das MouseMove-Ereignis.
Wählst du das rechts aus, entsteht dieser Rumpf:

Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
End Sub

Alles was du da jetzt reinschreibst wird in dem Moment verarbeitet, in dem du mit der Maus über den Button "fährst". Ein Click ist dann also nicht notwendig.
Spiel mal ein wenig damit rum. Dann siehst du, was so alles passieren kann.
Hugo
Anzeige
... wow - vielenDank!!
06.09.2005 21:03:13
michael
..vielen Dank für die Zeit und Mühe, die du für mich aufgewendet hast!
Habe sehr viel Neues gelernt.
Viele Grüße
Michael

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige