Hej FORM1.Variabel Du kan komma åt värdena på form1. OK Public är ett för starkt nyckelord, eftersom det exponerar utanför projektet. I och för sig så så exponeras inte interna objekt så som Formulär utanför projektet.Se variabels värde i annan Form
För att se ett värde i ett annat formulär (skapas i ett o används i ett annat) brukar jag göra typ så här (förenklad beskrivning):
============================
Form1:
Public Avalue as Integer
...
Avalue=Inputbox("Ange värdet")
Form2:
Beta=Form1.Avalue + 50
============================
Men när man vill ha en "kedja" av värden så kan man inte skapa en Public utan måste köra Dim.
Exempel
============================
Dim BValue(101) as integer
...
For n=1 to 100
Bvalue(n)=Inputbox("Ange värdet")
Next n
============================
Men dessa värden syns inte i Form2 eftersom variabeln är Dim-ad.
Någon ide hur jag löser detta?
VB6 var det.
PerSv: Se variabels värde i annan Form
Typ?
'Form1
Public sTr As String
Private Sub Form_Load()
sTr = "HEJ!"
End Sub
'Form2
Private Sub Form_Load()
Dim s As String
s = Form1.sTr
MsgBox s
End Sub
Annars kan du deklarera variablerna i en modul.Sv:Se variabels värde i annan Form
Form1.label1.Caption = Form1.label2.captionSv: Se variabels värde i annan Form
Tack för svaren.
Eftersom jag ville ha just en SERIE av värden och inte en så blir flera varianter bökiga minst sagt med metoder där man måste ange värdena en och en istället för som en serie av dem.
Men att göra Public i modul fungerade.
Tack igen.
PerSv: Se variabels värde i annan Form
Däremot får medlemar av typen Frien - Publik inom projektet men inte exponeras utanför, retunera arrayer, mm.
Här är ett exempel på hur du kan lösa det. JAg använder här Integer som datatyp på arrayen men du kan använda vilken datatyp som helst.
JAg visar oxå hur du i exemplet kan skapa egenskaper med argument.
Private mData() As Integer
Friend Property Get DataArray() As Integer()
DataArray = mData
End Property
Friend Property Let DataArray(Value() As Integer)
mData = Value
End Property
Public Property Get Data(Index As Long) As Integer
Data = mData(Index)
End Property
Public Property Let Data(Index As Long, Value As Integer)
mData(Index) = Value
End Property
Private Sub Command1_Click()
Dim MyValue As Integer
'Retrive/set singel value
MyValue = Form1.Data(4)
Form1.Data(4) = MyValue + 10
Dim I As Long
Dim MyData() As Integer
'Retrive/set multiple values
MyData = Form1.DataArray
For I = 0 To 10
MyData(I) = MyData(I) + 10
Next
Form1.DataArray = MyData
'print result
MyData = Form1.DataArray
For I = 0 To 10
Debug.Print I, MyData(I)
Next
End Sub
Private Sub Form_Load()
ReDim mData(10) As Integer
End Sub