Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1308to1312
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
Inhaltsverzeichnis

VBA - Variable aus PublicMethod mit Call beziehen.

VBA - Variable aus PublicMethod mit Call beziehen.
25.04.2013 14:19:29
Kai

Public Sub DetermineConclusionText(typeConclusion As String, arrow As String)
If arrow = "ì" And typeConclusion = "RentValue" Then
conclusionText = "seems appropriate"
End If
Return
End Sub

Private Sub button1_Click()
stringText = "ì"
stringType = "RentValue"
Call DetermineConclusionText(stringText, stringType)
MsgBox(conclusionText)
End Sub

Meine Frage ist, wieso mir in der MsgBox nicht "seems appropriate" ausgegeben wird? Wurde die Variable conclusionText nicht verfügbar gemacht durch den Call Befehl oder gibt es einen extra "übergabe" Befehl damit aus der Methoden-Variable ne globale Variable wird (eventuell public davor?)
Besten Dank für Antworten
Gruss Kai

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Variable aus PublicMethod mit Call beziehen.
25.04.2013 14:27:26
Klaus
Hi,
genau so, public deklarieren über den Subs.
public conclusionText as string
Public Sub DetermineConclusionText(typeConclusion As String, arrow As String)
If arrow = "ì" And typeConclusion = "RentValue" Then
conclusionText = "seems appropriate"
End If
Return
End Sub
Private Sub button1_Click()
stringText = "ì"
stringType = "RentValue"
Call DetermineConclusionText(stringText, stringType)
MsgBox(conclusionText)
conclusionText = ""
End Sub
Aber warum machst du das nicht mit einer Function? Das ist viel eleganter und du sparst es dir, irgendwelche Variablen in der Gegend rumzuschubsen:
Function DetermineConclusionText(typeConclusion As String, arrow As String) As String
If arrow = "?" And typeConclusion = "RentValue" Then
DetermineConclusionText = "seems appropriate"
End If
End Function
Private Sub button1_Click()
Dim stringText As String
Dim stringType As String
stringText = "?"
stringType = "RentValue"
MsgBox DetermineConclusionText(stringText, stringType)
End Sub
Übrigens, das Beispiel gibt eine leere MsgBox zurück weil du "StringText" und "stringType" vertauscht hast. Hab ich so gelassen.
Grüße,
Klaus M.vdT.

Anzeige
AW: VBA - Variable aus PublicMethod mit Call beziehen.
25.04.2013 14:38:50
Kai
besten Dank für die Lösung.
Das Vertauschen hab ich leider erst "nach" Verfassen des Posts bemerkt. Das war zum Glück auch nicht das Problem. Die Public Deklaration funtioniert, danke.
Eine Frage noch im Anschluss bzgl Function und Method.
Wenn ich das richtig verstehe (und leider ist das bisher erst meine 2. eigene über Call aufgerufene Method):
Anwendung für eigene Method: Veränderungen im Excel
Anwendung für eigene Function: Ausgabe von Variablen
Kann man das so grob zusammenfassen oder warum manchmal eine Method und manchmal lieber eine Function?
Vielen Dank und Gruss, Kai

Anzeige
AW: VBA - Variable aus PublicMethod mit Call beziehen.
25.04.2013 15:02:58
Nepumuk
Hallo,
Sub und Function sind beides Methoden. Bei der einen bekommst du keinen direkten Rückgabewert bei der anderen schon. Beide sind aber grundsätzlich in der Lage geänderte Parameter zurückzugeben. Sie sind also situationsbedingt einzusetzen.
Gruß
Nepumuk

AW: VBA - Variable aus PublicMethod mit Call beziehen.
25.04.2013 15:24:12
Rudi
Hallo,
Public Sub DetermineConclusionText(ByVal typeConclusion As String, ByVal arrow As String, ByRef  _
conclusionText)
If arrow = "ì" And typeConclusion = "RentValue" Then
conclusionText = "seems appropriate"
End If
End Sub

Private Sub button1_Click()
stringText = "ì"
stringType = "RentValue"
DetermineConclusionText stringType, stringText, conclusionText
MsgBox conclusionText
End Sub

Gruß
Rudi
Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige