Just nu i M3-nätverket
Gå till innehåll

Excel VBA skapa Pubilka referenser


Rekommendera Poster

Kan man skapa publika referenser som gäller oavsett vilket makro som körs?

T.ex

Public Sub()

Dim Ws1 as woorksheet

Set Ws1 = Worksheets("SUMMERING")

End sub

 

Vad jag jagar är att oavsett vilket makro som jag sedan kör så ska det "komma ihåg" vilket blad Ws1 är.

Frågan är ju sedan hur jag nollställer det?

 

 

Länk till inlägg
Dela på andra webbplatser

Du kan titta på följande sida:

https://stackoverflow.com/questions/32055910/can-i-use-the-set-command-globally

 

Med det sagt så bör du kanske titta på koden och undra om du verkligen behöver globala variabler/statements då det så klart finns risk att kod i arbetsboken blir svårlöst vid eventuella fel.

 

 

Länk till inlägg
Dela på andra webbplatser

Förutom att leka med räckvidden (dvs deklarera innan suben och eventuellt använda Public) så kan du spara undan värden på diverse sätt så att du kan använda det nästa gång du öppnar dokumentet

https://docs.microsoft.com/en-us/office/vba/word/concepts/miscellaneous/storing-values-when-a-macro-ends

Fast i de flesta fall måste det vara enklast och transparantast att bara spara ner värdena i excelbladet. 

Länk till inlägg
Dela på andra webbplatser

Ok!

Det jag tänker mig är följande:

Jag har ett par olika ws som jag tänkte köra samma makron på.

Då jag måste gå in på andra sidor (och kanske arbetsböcker), så är det ju viktigt att komma tillbaka till rätt ws.

T.ex om det skall raderas data på ursprungsbladet, så vill man ju att det blir gjort på rätt blad!

Länk till inlägg
Dela på andra webbplatser

Räckvidden handlar om var du är i "makrovärlden". Så länge du är i samma makro/sub så kommer den att komma ihåg vilken worksheet/workbook du avser med:

Public Sub()

Dim Ws1 as woorksheet

Set Ws1 = Worksheets("SUMMERING")

'en massa annan kod

msgbox Ws1.name

End sub

 

Annars, Om du kör kod i samma modul, men en annan sub så får du deklarera utanför/innan första SUBen

 

Dim Ws1 as woorksheet

Public Sub()

Set Ws1 = Worksheets("SUMMERING")

End sub

 

Public EnAnnanSub()

msgbox Ws1.name 

End sub

 

 

Eller om du vill att det skall gälla oavsett var koden står så skall det stå utanför Sub:en/funktionen och anges som Public

Public Ws1 as woorksheet

Public Sub()

Set Ws1 = Worksheets("SUMMERING")

End sub

 

Kolla Oves länk, de går igenom det mesta där.

  • Gilla 1
Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu


×
×
  • Skapa nytt...