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

Neue Variable erzeugen?

Neue Variable erzeugen?
13.06.2004 16:32:05
Oliver
Hi an alle,
hab mal wieder ein Problem. Ich bin schon eine ganze Weile am tüfteln, komme aber irgendwie nicht weiter. Ich rufe über eine Schaltfläche eine UserForm auf, in der ich in eine TextBox eine Jahreszahl eingeben muss, damit ein neues Tabellenblatt mit dieser Jahreszahl erstellt wird. Das mache ich mit folgendem Befehl:
Private Sub CommandButton2_Click() Unload UserForm1 Eingabe = TextBox1 Vorjahr = Eingabe - 1 Sheets(Vorjahr).Select Blattname = ActiveSheet.Name If Eingabe = "" Or Len(Eingabe) < 4 Then Select Case MsgBox _ ("Die Jahreszahl muss aus 4 Ziffern bestehen. Bitte Jahreszahl erneut eingeben", _ vbOKOnly, "Fehler") Case 1 'Schaltfläche OK SendKeys "{TAB}" SendKeys "{TAB}" End Select End If If Len(Eingabe) = 4 Then Worksheets("Vorlage").Visible = True Sheets("Vorlage").Copy Before:=Sheets("Vorlage") Sheets("Vorlage (2)").Name = Eingabe Range("G1, Y1") = Eingabe Worksheets("Vorlage").Visible = False ActiveSheet.Protect "" Call Autovervollständigen_Monat End If End Sub
Nun möchte ich, dass in diesem Befehl eine Variable Namens “Blattname“ erzeugt wird, in der ein Tabellenblattname gespeichert werden soll. Diese Variable wird dann in dem Makro, welches am Ende der obigen Anweisung aufgerufen wird, nochmals benötigt. Wenn ich nun die obige Anweisung durch die Schaltfläche abarbeiten lasse, habe ich in der Variablen den Blattnamen. Leider steht in der Variblen der Text nur solange wie die Anweisung aktiv ist. In dem Makro “Autovervollständigen_Monat“ steht in dieser Variablen nichts mehr drin. Woran liegt das? Ich komme einfach nicht drauf.
Ich hoffe, bzw. ich weiß, dass Ihr mir helfen könnt. ;-)
Bin für jeden Tip dankbar und danke Euch schon mal im Voraus,
Oliver

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Neue Variable erzeugen?
barni
hallo oliver
Genau weiss ich nicht was da los ist, aber wenn du es
so machst, könnte es sein das dein "Autovervollständigen_Monat"
den Blattnamen kennt.
public blattname as string
Private Sub CommandButton2_Click()
...dein code
gruß barnie
AW: Neue Variable erzeugen?
13.06.2004 16:47:55
Josef
Hallo Oliver!
Das ist logisch, weil die Variable nur innerhalb der ersten Prozetur
gültigkeit hat.
Das Beste währe, wenn du die Variable direkt an die zweite Prozetur übergibst!
zB.:

Sub Autovervollständigen_Monat(DeineVariable as String)
'Jetzt kannst du innerhalb deines Codes mit "DeineVariable" arbeiten
End Sub

Beim Aufruf übergibst du die Variable so.
Call Autovervollständigen_Monat, Eingabe
Gruß Sepp
Anzeige
AW: Neue Variable erzeugen?
13.06.2004 16:57:51
Oliver
Hi und danke für die Antworten.
@barnie: Hatte ich vergessen zu schreiben, aber
public blattname as string
steht bei mir schon. Funktioniert trotzdem nicht. Danke Dir trotzdem für die Antwort.
@Josef: Das hört sich schon mal gut an. aber kannst Du mir das etwas genauer eklären, wie man eine Variable an eine weitere Prozedur übergibt. So wie ich das verstehe hast Du mir das Aufrufen meines Makros, in der ich die Variable noch benötige, in Deiner Antwort als Beispiel geschrieben. Wie und wo muss ich denn die Variable übergeben?
Wäre Dir sehr dankbar, wenn Du mir das noch mal schnell hier rein schreiben könntest.
Gruß,
Oliver
Anzeige
AW: Neue Variable erzeugen?
Kurt
public blattname as string gehört in ein Standardmodul, nicht in das des userforms!
Kurt
AW: Neue Variable erzeugen?
13.06.2004 17:09:40
Josef
Hallo Oliver!
Ein Beispiel.
Option Explicit

Sub Oliver_mit_Uebergabe()
Dim myString As String
myString = "Hallo Oliver"
'jetzt wird die Variable "myString" an das Makro "Oliver_mit_Variable" übergeben
Oliver_mit_Variable myString
End Sub

Sub Oliver_mit_Variable(meldung As String)
'hier wird nun der Text der im Makro "Oliver_mit_Uebergabe" erzeugt wurde ausgegeben
MsgBox meldung
End Sub

Hier wird eine Variable im ersten Makro gefüllt, an das zweite Makro übergeben
und dort ausgegeben.
Gruß Sepp
Anzeige
Prima und Danke Josef !
13.06.2004 17:16:29
Oliver
Perfekt Josef,
jetzt habe auch ich es verstanden. Danke Dir für Deine Antworten, die haben mir den Samstagnachmittag gerettet.
Gruß,
Oliver
AW: Neue Variable erzeugen?
13.06.2004 19:12:15
Franz
Hallo Sepp,
es geht auch so:
Option Explicit
Public myString As String

Sub Makro1()
myString = InputBox("Eingabe für Makro2:")
Makro2
End Sub


Sub Makro2()
MsgBox myString
End Sub

Was ist hier der Unterschied zu deiner Lösung?
Vielen Dank schon mal und Grüße
Franz
AW: Neue Variable erzeugen?
Ulf
Die Variable muss nicht als Public deklariert werden. Publicvariable
verbleiben im Speicher, solange die Datei geöffnet ist. Bei kleineren
Projekten kein Problem, aber bei großen Projekten kann das schon zu Problemen
führen. Grundregel, Variable nur mit wirklich benötigter Lebensdauer
deklarieren.
Ulf
Anzeige
AW: Neue Variable erzeugen?
13.06.2004 19:34:01
Franz
Hallo Ulf,
tolle Erklärung, vielen Dank!! Nach diesen wertvollen Erkenntnissen werd ich doch wohl einige meiner Makros mal überprüfen müssen.........!!!
Vielen Dank und Grüße
Franz
AW: Neue Variable erzeugen?
13.06.2004 19:36:29
Josef
Hallo Franz!
Natürlich geht das auch, aber wenn es nicht unbedingt notwendig ist,
ist es besser, eine Variable direkt als Parameter zu übergeben und
nicht als Public zu deklarieren.
Gruß Sepp
AW: Neue Variable erzeugen?
13.06.2004 19:42:35
Franz
Hallo Sepp,
vielen Dank für Deine Antwort. Deckt sich mit der Aussage von Ulf. Schon wieder Entscheidendes dazugelernt :-))))
Danke und Grüße
Franz

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige