Thema Datum  Von Nutzer Rating
Antwort
17.05.2014 13:11:25 Gast99900
NotSolved
17.05.2014 16:59:23 Holger
NotSolved
17.05.2014 19:01:26 Gast481
NotSolved
18.05.2014 13:56:55 Holger
NotSolved
17.05.2014 18:53:29 Gast43641
NotSolved
Blau Werte an Sub übergeben
19.05.2014 01:37:37 H27
NotSolved

Ansicht des Beitrags:
Von:
H27
Datum:
19.05.2014 01:37:37
Views:
1421
Rating: Antwort:
  Ja
Thema:
Werte an Sub übergeben
'Option Explicit

Private Sub BTN_Click()   'auslösendes Event

Dim para1, para2 As Integer

para1 = 1

para2 = 2

'weiterer Code

Call MeineUntersub(para1, para2)

'weiterer Code

MsgBox "Werte für para. weiterhin  " & para1 & " , " & para2

End Sub

Rem ************************************************************************************
Rem Thema verfehlt, denn ....
Rem nur der Umstand, dass "ByVal" nicht angegeben wurde zählt als Fehler !
Rem
Rem Egal ob explizit "ByRef" oder ohne Angabe - WIRD IMMER NUR DIE SPEICHERADRESSE !
Rem an die Unterprozedur übermittelt - folglich ändert die Unterprozedur "diese" Variable
Rem daher ....
Rem Fehler beim Kompilieren - Argumenttyp ByRef unverträglich :
Rem diese Warnung bezieht sich auf "para1" - Variant kann nicht mehr verändert werden !
Rem
Rem dagegen expliziet "ByVal" wird eine neue Variable (hier zus. als Integer) erzeugt !
Rem ************************************************************************************

 
Sub MeineUntersub(ByVal para1 As Integer, ByVal para2 As Integer)

'Code der para1 und para2 auswertet

MsgBox "Werte für para. eingangs MeineSub " & para1 & " , " & para2


'diese Sub soll nichts an die obere Sub übergeben

para1 = 10

para2 = 20

MsgBox "Werte für para. jetzt in der MeineSub " & para1 & " , " & para2

End Sub


Sub Test()
para1 = 1
para2 = 2
Rem ***********************************************************************************
Rem und für das Handbuch des unnützen Wissens -
Rem die relevanten Fakten :
Rem nicht deklarierte Variable - somit Variant schlucken nicht nur Speicher -
Rem der Speicherinhalt muss eben auch mit unzählig unnötigen CPU- clock ticks
Rem umständlich verwaltet werden, d.s. ca. 200 % Mehraufwand je undeklarierter Variable
Rem was besonders erfreulich wenn das Makro das erste Mal startet und sich die RunTime
Rem einmalig alle nötigen API-Calls zusammenkratzt - ca. 800% im ersten Anlauf !
Rem (dagegen nimmt der Typ Long wegen der 32-bit Architektur nur 1 Schluck aus der ...)
Rem EGAL was soll´s (Die Väter des VBA haben sich schon etwas dabei gedacht)
Rem ***********************************************************************************
'weiterer Code
Call UnterTest(para1, para2)
'weiterer Code
MsgBox "Werte für para. weiterhin  " & para1 & " , " & para2
Call FehlTest(para1, para2)
'weiterer Code
MsgBox "Werte für para. sind jetzt  " & para1 & " , " & para2
End Sub

Sub UnterTest(para1, para2)
'Code der para1 und para2 auswertet
MsgBox "Werte für para.  eingangs in der TestSub " & para1 & " , " & para2
'diese Sub soll nichts an die obere Sub übergeben
para1 = 1.111111111111 * para2
para2 = 2.222222222222 * para1
Rem ***********************************************************************************
Rem macht sie aber !!! - aber wie !!!!!!!
Rem soviel zum Nährwert von Variablendeklaration LOL
Rem denn .... 'diese Sub soll nichts an die obere Sub übergeben
Rem macht sie aber  und zwar genau
Rem ***********************************************************************************
MsgBox "Werte für para. in der TestSub " & Format(para1, "#0") & " , " & Format(para2, "#0")
End Sub
Sub FehlTest(ByVal para1 As Double, ByVal para2 As Double)
Rem ***********************************************************************************
Rem ohne das "ByVal" fällt der auf die Schnauze !!!
Rem ***********************************************************************************
'Code der para1 und para2 auswertet
MsgBox "Werte für para. eingangs in der FehlSub " & para1 & " , " & para2
'diese Sub soll nichts an die obere Sub übergeben
para1 = CDbl(1.111111111111 * para2)
para2 = CDbl(2.222222222222 * para1)
Rem ***********************************************************************************
Rem macht sie aber !!! - aber wie !!!!!!!
Rem soviel zum Nährwert von Variablendeklaration LOL
Rem denn .... 'diese Sub soll nichts an die obere Sub übergeben
Rem macht sie auch nicht
Rem ***********************************************************************************
MsgBox "Werte für para. in der FehlSub " & para1 & " , " & para2
End Sub

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
17.05.2014 13:11:25 Gast99900
NotSolved
17.05.2014 16:59:23 Holger
NotSolved
17.05.2014 19:01:26 Gast481
NotSolved
18.05.2014 13:56:55 Holger
NotSolved
17.05.2014 18:53:29 Gast43641
NotSolved
Blau Werte an Sub übergeben
19.05.2014 01:37:37 H27
NotSolved