Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

hab call noch nicht verstanden

Betrifft: hab call noch nicht verstanden von: ray
Geschrieben am: 15.09.2004 09:00:47

Hallo,
F1 und google konnte mir nicht so wirkl weiterhelfen.

ich mache:

sub yx()
Dim ZtRv As Date
ZtRv = DateSerial(TextBox3, TextBox2, TextBox1)

später in anderem sub
sub z()
...
Range("n15").Value = "Mt " & ZtRv 'hier muß irgendwie call hin...

Kann mir das bitte nochmal jemand erklären,
viele Grüße aus Hámburg, diesmal mir Zahnschmerzen...
ray

  


Betrifft: AW: hab call noch nicht verstanden von: Andre
Geschrieben am: 15.09.2004 09:12:56

Hi Ray,

was genau willst du denn mit "call" bezwecken?

Gruß Andre


  


Betrifft: AW: hab call noch nicht verstanden von: ray
Geschrieben am: 15.09.2004 09:21:55

Hi andre, wie soll ich's anders erklären als geschrieben..
Hm,
in sub 1 definieren ich ZtRv
in sub 2 will ich diese definition abfragen und verwenden
Range("n15").Value = "Mt " & ZtRv

gruß ray


  


Betrifft: AW: hab call noch nicht verstanden von: olaf
Geschrieben am: 15.09.2004 09:38:30

Versuchs mal mit:

(aus dem ersten Makro)
Call makro2(ZTRv)

(dann im zweiten Makro)
Sub Makro2(ZTRv)


dann stehen Dir die Werte von ZTRv zur Verfügung


Olaf


  


Betrifft: AW: hab call noch nicht verstanden von: ray
Geschrieben am: 15.09.2004 09:56:25

Hi olaf,
das heißt, das call nicht abruft sondern zuruft?!?

und es setzt voraus, daß am anfang weiß wo ich ZTRv später mal brauche.
Damit ist call nicht das richtige. wie geht es anders.

Gruß ray


  


Betrifft: AW: hab call noch nicht verstanden von: Harald Kapp
Geschrieben am: 15.09.2004 10:52:47

Hallo ray,
mit Call hat das m.E: nichts zutun.

Call ruft eine andere
Sub auf, Punkt. Da eine 
Sub kein direktes Ergebnis zurückliefern kann, kannst Du damit also in SUB2() erst einmal nichts verwenden, was in SUB1() berechnet wird.

Es gibt (mindestens) 2 Möglichkeiten:

1) definiere ZtRv global mittels PUBLIC Anweisung:

Public ZtRv as Date
Sub1()
...
ZtRv = DateSerial(TextBox3, TextBox2, TextBox1)
...End Sub


Dann kannst Du in Sub2() auf ZtRv zugreifen.

Aber: Diese Lösung ist unelegant und fehlerträchtig, weil jeder Zugriff auf ZtRv hat und außerdem nicht definiert ist, wann ZtRv geändert wurde, wenn Du es in Sub2() verwenden willst. Sauber wäre daher Lösung 2, eine Funktion:

Function Berechne_ZtRv() as Date
...
ZtRv = DateSerial(TextBox3, TextBox2, TextBox1)
...
End Function


Und in Sub2() dann:

Sub2()
...
Range("n15").Value = "Mt " & Berechne_ZtRv()
...
End Sub



Gruß Harald


  


Betrifft: AW: hab call noch nicht verstanden von: ray
Geschrieben am: 15.09.2004 11:57:22

Hallo Harad und vielen Dank für diese ProfiLösung.

Ich enscheide mich für Lösung function

Hab grad mal mit F1 versucht, steig ich aber nicht so hinter.
Wie benutze ich
Function bzw wo schreibe ich es hin. neues sub? oder?

Function Berechne_ZtRv() as Date
...
ZtRv = DateSerial(TextBox3, TextBox2, TextBox1)
...
End Function


haben die ... was zu bedeuten?

Ich dank dir
ray


  


Betrifft: AW: hab call noch nicht verstanden von: Harald Kapp
Geschrieben am: 15.09.2004 13:00:42

Hallo ray,
die Function() schreibst Du wie eine normale Sub in ein Modul. Weiteres dazu in der Hilfe unter "function".

Die ... sind auch als Auslassungszeichen bekannt und bedeuten, dass da Dein Code hinkommt. Wenn Du allerdings keinen weiteren Code haben solltest ...


Gruß Harald

P.S.: Bist Du sicher, dass Deine Einstufung mit "VBA-gut" passt? Ich denke, dazu gehört schon, dass man eine Funktion eingeben kann.


  


Betrifft: AW: hab call noch nicht verstanden von: ray
Geschrieben am: 15.09.2004 13:27:15

hallo harald, ja, in Teilbereichen bin ich gut. Nicht in allem, aber dank leuten wir dir lerne ich schnell dazu. Danke dafür.

Hab mir das grad in meinem code reingefummelt und muß sagen, daß Dein Weg sehr genial ist. das wird mir viel arbeit ersparen. Nochmals danke.

Gruß ray