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

Excel VBA skapa Pubilka referenser

Rekommendera Poster

Tommy H

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?

 

 

Dela detta inlägg


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

Ok!

Tackar för svaret!

Dela detta inlägg


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

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. 

Dela detta inlägg


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

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!

Dela detta inlägg


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

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.

Dela detta inlägg


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

Perfekt!

Tydligt och klart!

Dela detta inlägg


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...