Du kan se på prosedyrer som "bokser" med vinduer som man KUN KAN SE UT AV. Hvis du er inne i en "boks", kan du se alle variabler som er definert utenfor "boksene" (funksjonene). Da må du som flemming sier, declarere variablene øvererst i en modul, før (utenfor) alle prosedyrer. (i declarasjonsdlen ) Når programmet går ut av en prosedyre, dør alle variabler som ikke er declarert slik: Static Variabelnavn as datatype. ( bytter ut Dim med static ) Static variablene vil beholde sin verdi til neste gang programmet går inn i samme prosedyre. Men heller ikke de kan nås utenfor prosedyren.
Hmmmm... er ikke helt sikker på at jeg forstå... måske skulle jeg forklare hvad jeg ønsker:
Jeg henter en masse variabler hele tiden så længe min application kører - jeg har nu lagt disse over i en access database - men det bliver tungt at kører når man hele tiden åbner og kontakter databasen - så var det jeg tænkte om ikke man kunne ligge alle posterne fra databasen ind i et array som levede så længe den pågældende Workbook var åben... alternativt kunne man åbne forbindelsen til databasen så det kun var selv data.open ...... som skulle kørers igen og igen - men jeg ved ikke om det også er tungt?
Her er lige mit forsøg - men den brokker sig over at den variabel jeg tildeler til glbINI skal være en konstant?
Du får lige koden - der er nok et eller andet jeg har misset:
Option Explicit Dim IniTmpList As Variant
Public Const glbINI As Variant = IniTmpList Private Function INI()
'**************************************************************************************** '* Function created on 1. October 2003 by Morten Frederiksen * '* Function changed on '* '**************************************************************************************** '* Værdier der skal bruges til at hente oplysning fra settings arket * '****************************************************************************************
Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim intColIndex As Integer Dim DBPath, DBBase, i, tmpList DBPath = Workbooks("Best-Skema 00.xls").Sheets("status").Range("C2") 'DBBase = GetName("strMainDB")
' open the database Set cn = New ADODB.Connection cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _ DBPath & ";" Set rs = New ADODB.Recordset ' open the recordset rs.Open "INI", cn, adOpenStatic, adLockOptimistic, adCmdTable
Indholdet skulle forsvinde, når du ikke længere kører noget kode....! Altså kan den sagtens holde en værdi imens en userform bliver vist og udfyldt, men når du vender tilbage til "almindeligt" regneark igen, så skulle den "dø"
cddk, jeg bruger selv nøjagtig samme system, fordi jeg ikke ønsker at genindlæse databasen. Det skal virke. Variablen dør ikke før regnearket lukkes eller du piller ved koden i vba. Hvis du ønsker at den skal dø sammen med formen, stiller sagen sig lidt anderledes.
og du har bare så evig ret... først kunne jeg ikke lige få det til at virke kiggede på variablen i Watches vinduet - men der er den tom... så lavede jeg en lille testfunktion og en knap så jeg kunne hente en given post - og det virker SQ...!! ;O) tak for hjælpen... jeg vil gerne smide nogle point efter dig som tak for hjælpen så jeg opretter lige et spørgsmål mere...
PS1: Nej, det er så små datamængder at det ikke skulle betyde noget. Hvis du henter en 400-500 records over taler vi måske om 50-100 kb. Hvis du henter 10000 over skal vi måske til at regne på det :-)
PS2: Ja, det skal gerne blive opdateret.
PS3: Nej, jeg assigner direkte til comboboxens LIST. Combobox1.List = gsTemp
Okay - men jeg skal ikke vise dataerne nogen steder blot bruge den i koden... så jeg bruger min for I = 0 to Ubound(Variabel)...
Men tak for hjælpen det var perfekt...
Synes godt om
Ny brugerNybegynder
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.