Slettet bruger
23. september 2004 - 16:24
Der er
8 kommentarer og
1 løsning
globale variabler
jeg ønsker at dele variabler i forkellige moduler af min kode..
f.eks. skal jeg have variablen names til at gå igen i et andet modul.. Jeg har prøvet med
global names
sub edit_reload()
names = "1,2,3"
move
end sub
i et andet modul har jeg så sub'en move:
sub move()
msgbox(names)
end sub
I dette eksempel skal jeg have move til at lave en messagebox med "1,2,3" som værdi..
/1
og så ønsker jeg ikke i dette tilfælde løsningen med sub-parametre..
23. september 2004 - 16:32
#1
Øverst (inden du har en Sub eller Functiton) i et almindeligt kodemodul skriver du f.eks.
Public names as string
Jeg ville skrive således:
Public gsNames as string
g'et fortæller mig at det er global varible og s'et at det er en string
Hvis variablen skal gælde for flere procedure men i samme modul, så kan du erklære en lokal/modul variable på samme måde blot med Private - like this:
Private msNames as string
m'et for ModulVariable..
Anyway that's my methods!
Slettet bruger
23. september 2004 - 16:37
#2
object variable with block not set.. der kan ikke ses nogen variabler i det andet modul
/1..
Du må undskylde, hvis jeg ikke svarer så hurtigt, men jeg er lige i gang med maden..
Slettet bruger
23. september 2004 - 16:48
#3
det skal måske nævnes, at jeg jeg får fejlen i en databaseforespørgsel - kom jeg lige i tanke om - så den kan vel ikke bruges til at fejlfinde her..
smider lige noget kode, hvis det kan bruges til noget..
modul 1
Public strconnect As String
Public rs As ADODB.Recordset
Public alfabet_arr As Variant
Public arr_names As Variant
Public names As String
Declare Function WNetGetConnectionA Lib "MPR.DLL" (ByVal lpszLocalName As String, ByVal lpszRemoteName As String, lSize As Long) As Long
Dim lpszRemoteName As String
Const BUFFER_SIZE As Long = 255
Sub globals()
lpszRemoteName = lpszRemoteName & Space(BUFFER_SIZE)
If WNetGetConnectionA(Left(ActiveWorkbook.Path, 2), lpszRemoteName, 255) = 0 Then
ActiveWorkbook.BuiltinDocumentProperties.Item(6).value = Application.Trim(lpszRemoteName) & Mid(ActiveWorkbook.Path, 3, Len(ActiveWorkbook.Path) - 1) & "\"
End If
Sheets("edit").Select
strconnect = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & ActiveWorkbook.BuiltinDocumentProperties.Item(6) & "TCC_Test_requests_System_Testing.mdb;"
Set rs = New ADODB.Recordset
Dim alfabet As String
Dim alfabet_string As String
alfabet_string = ""
'Creates an array containing the value from a to zz
alfabet = " ABCDEFGHIJKLMNOPQRSTUVWXYZ"
For t = 1 To Len(alfabet)
For i = 2 To Len(alfabet)
alfabet_string = alfabet_string & "," & Trim(Mid(alfabet, t, 1)) & Mid(alfabet, i, 1)
Next
Next
alfabet_arr = Split(alfabet_string, ",")
names = "Product,TOM TR name,Stream & position,Test request description,Test Platform,Priority,Duration,Remaining,TCC / Report,Report writer,Testing location,Status,EUT available,PP Demand date,TCC target date,Done by,Test sheet links,Comments & AP,ID"
arr_names = Split(names, ",")
End Sub
Sub edit_reload()
move names
osv...
modul 2
Sub move(names)
globals
sql = "update [testing] set [Status] = 'done', [Done by] = '" & Day(Now) & "-" & Month(Now) & "-" & Year(Now) & "' where Remaining = '0' and ucase([Status]) <> 'CLOSED' and ucase([Status]) <> 'CANCELLED' and ucase([Status]) <> 'DONE'"
rs.Open sql, strconnect, adOpenForwardOnly, adLockReadOnly, adCmdText
osv..
Slettet bruger
23. september 2004 - 22:01
#5
jep... men de er erklæret i toppen af modulet.. jeg skal have en masse flere variabler defineres som public, når jeg får det til at virke.. jeg har ikke så meget lyst til at kikke på det i dag, men i morgen får jeg nok noget tid.. og så vender jeg tilbage, hvis jeg finder ud af noget..