Avatar billede 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!
Avatar billede 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..
Avatar billede 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..
23. september 2004 - 18:16 #4
Jeg kan ikke se der skulle være noget galt med names.......... men der er variabler

t, i, sql - som ikke er erklæret
Avatar billede 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..
23. september 2004 - 22:19 #6
Lav evt. et lille eksempel, så du kan se det virker.... så VED du også at der er en bruger fejl *GG* ;-)
Avatar billede Slettet bruger
25. september 2004 - 10:15 #7
jeg fandt ud af det.. det var fordi jeg havde dim'et variablerne i macro 2.. så nu virker det som det skal..
25. september 2004 - 19:34 #8
:-)
Avatar billede Slettet bruger
26. september 2004 - 09:01 #9
forresten.. tak for hjælpen..

/1..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester