'Form1 Detta inlägget passar i VB nybörjar forumet. Med andra ord är det enklaste att lägga alla variabler i en modul och göra dem publika så får man åtkomst på dem om startar modulen det första som sker i programmet. Globala variabler är helt fel om du ska kapsla din kod. Globala variabler är tabu. Något som lata ovårdade porgramerare gör.Flytta värden mellan olika formulär[LÖST]
<code>Option Explicit
Dim Path As String
Private Sub Form_Load()
Path = "C:\Temp"
MsgBox Path
Form2.Show
End Sub
</code>
'Form2
<code>Private Sub Form_Load()
MsgBox Path
End Sub</code>
Varför kommer C:\Temp upp i MsgBox i Form1 men inte i Form2
/ Pelle ASv: Flytta värden mellan olika formulär
Låt oss säga att variabler är burkar. Du lägger "C:\Temp" i burken Path.
När du sedan tittar i kalles burk med sama namn så hittar du den inte där. Detta beror på att det inte är samma burk och att vi inte än så länge har förmågan att teleportera objekt.
Formulär har en egen adressrymd. Variabler deklarerade i formulären kan bara anropas inom formulären och som medlemar av formuläret.
Du skulle fått ett felemedelande om du laggt Option Explicit överst i Form2. Därför det inte finns någon variabel deklarerad i Form2 med detta namn. Du kan istället hämta variabeln i Form1:
<code>
'Form1
Option Explicit
Public Path As String
Private Sub Form_Load()
Path = "C:\Temp"
MsgBox Path
Form2.Show
End Sub
'Form2
Private Sub Form_Load()
MsgBox Form1.Path
End Sub
</code>
Men om man vill vara en god programerare försöker man kapsla sin kod och skriver istället:
<code>
'Form1
Option Explicit
Dim Path As String
Private Sub Form_Load()
Path = "C:\Temp"
MsgBox Path
Form2.Path = Path
Form2.Show
End Sub
'Form2
Option Explicit
Public Path As String
Private Sub Form_Load()
MsgBox Path
End Sub
</code>
Då kan man använda Form2 utan att det finns någon Form1 i projektet.Sv: Flytta värden mellan olika formulär
/ Pelle ASv: Flytta värden mellan olika formulär
Så jag föreslår att du inte använder den mer än absolut nödvändigt. Vilket innebär aldrig. Så börja inte med sådana ovaner. Då kommer jag och bankar lite på dig. ;o)