Avatar billede folj Forsker
05. december 2016 - 12:14 Der er 6 kommentarer og
1 løsning

VBA - Vil gerne oprette en global variabel

I et modul jeg har dedikeret til at definere  alle de konstanter jeg arbejder med i mine procedurer i samme worksheet, opstår der en fejl, nu hvor jeg udvider med en global variabel også

[div]Public Const HeaderRows As Integer = 1  ' definierer hvor mange overskriftsrækker der er

' herunder erklærer jeg så en global variabel der kan tilgås fra alle moduler
Public Hold6_SlutColumn As Integer
Hold6_SlutColumn = Sheets(WsName1).Range("Hold6_slut").Column(/div)
Men den fejler på den nederste linje med fejlen "Invalid outside procedure"
I debuggeren er "Hold6_slut" markeret med blåt, derfor har jeg mit fokus her, men hvad kan der være galt. navnet "Hold6_slut" er en navngivet celle i mit sheet, som jeg bruger til at markere sidste kolonne med.

Hvad er det jeg  gør forkert.
Avatar billede folj Forsker
05. december 2016 - 12:17 #1
Gentager lige spm, da der var nogle tags der drillede...
I et modul jeg har dedikeret til at definere  alle de konstanter jeg arbejder med i mine procedurer i samme worksheet, opstår der en fejl, nu hvor jeg udvider med en global variabel også

Public Const HeaderRows As Integer = 1  ' definierer hvor mange overskriftsrækker der er

' herunder erklærer jeg så en global variabel der kan tilgås fra alle moduler
Public Hold6_SlutColumn As Integer
Hold6_SlutColumn = Sheets(WsName1).Range("Hold6_slut").Column

Men den fejler på den nederste linje med fejlen "Invalid outside procedure"
I debuggeren er "Hold6_slut" markeret med blåt, derfor har jeg mit fokus her, men hvad kan der være galt. navnet "Hold6_slut" er en navngivet celle i mit sheet, som jeg bruger til at markere sidste kolonne med.

Hvad er det jeg  gør forkert.
Avatar billede folj Forsker
05. december 2016 - 12:32 #2
I tænker måske: "Hvad er det lige han vil opnå?"

Jeg kan jo ikke oprette en Public Const med en værdi der beregnes, vel?
derfor vil jeg gerne have en beregnet værdi der kan tilgås hver gang jeg skal afvikle nogle procedurer (der afvikles igen og igen)...
Avatar billede supertekst Ekspert
05. december 2016 - 13:15 #3
Tilsyneladende er mangler "Start & "Slut"
Avatar billede folj Forsker
05. december 2016 - 13:45 #4
@supertekst
Ja det er sikkert det der udløser fejlen at den linie jeg skriver hører til i en sub-procedure.

Jeg har lige siddet og arbejdet lidt for at få det til at virke også...
Og det virker.
Jeg erklærer variablen i mit modul oppe i det der kaldes "General Declarations-området":
Public Hold6SlutColumn As Integer


Senere putter jeg værdien ind i variablen, i med en Sub-procedure:
Sub SetGlobalVar()
Hold6SlutColumn = Sheets(WsName1).Range("Hold6_slut").Column
End Sub


efterfølgende afvikler jeg så en Sub-procedure, der skal udskrive værdien af den globale variabel:
Sub TestHold6SlutColumn()
  MsgBox Hold6SlutColumn
End Sub
Avatar billede supertekst Ekspert
05. december 2016 - 14:33 #5
Fint nok :-)
Avatar billede folj Forsker
05. december 2016 - 15:08 #6
Takker for hjælpen Supertekst
Avatar billede supertekst Ekspert
05. december 2016 - 15:54 #7
Selv tak
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

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