Det finns flera sätt att implementera en räknare i ett VBA -projekt för Excel, beroende på räknarens omfattning och syfte. Här är några tillvägagångssätt:
1. Använda en variabel på modulnivå:
Detta är det enklaste tillvägagångssättet för en global räknare som kvarstår under VBA -sessionen (tills Excel -filen är stängd).
`` VBA
Alternativ uttrycklig
Privat räknare så länge 'förklarar räknarvariabeln
Sub IncrementCounter ()
Counter =Counter + 1
Msgbox "motvärde:" &counter
Slutsub
Sub ResetCounter ()
räknare =0
Msgbox "motåterställning till 0"
Slutsub
`` `
* `alternativ uttryckligen`: Detta är avgörande för god kodningspraxis. Det tvingar dig att uttryckligen förklara alla variabler.
* `privat räknare så länge ': Detta förklarar en variabel med namnet "räknare" av typ "lång" (ett långt heltal), som kan hålla större antal än "heltal". Det "privata" nyckelordet gör det endast tillgängligt inom den modul som den förklaras i.
* `IncrementCounter` och` ResetCounter` Subroutines: Dessa visar hur man ökar och återställer räknaren.
2. Använda en kalkylcell som en räknare:
Denna metod lagrar räknaren i en specifik cell på ett kalkylblad. Räknaren kvarstår även om Excel är stängd och öppnas igen (såvida inte cellvärdet ändras manuellt).
`` VBA
Sub IncrementsWorkSheetCounter ()
Dim WS som kalkylblad
Ställ in ws =thisworkbook.sheets ("Sheet1") 'Ändring "Sheet1" till ditt arknamn
ws.range ("A1"). Värde =Ws.Range ("A1"). Värde + 1 'Ökar räknaren i cell A1
Msgbox "motvärde:" &ws.range ("a1"). Värde
Slutsub
SUB RESETWORKSHEETCOUNTER ()
Dim WS som kalkylblad
Ställ in ws =thisworkbook.sheets ("Sheet1") 'Ändring "Sheet1" till ditt arknamn
Ws.range ("A1"). Värde =0
Msgbox "motåterställning till 0"
Slutsub
`` `
* Detta tillvägagångssätt är mer ihållande än en variabel på modulnivå, men den förlitar sig på en specifik cell och är därför mindre ren ur ett rent VBA-perspektiv.
3. Använda en klassmodul för en mer inkapslad räknare:
Detta är ett mer avancerat tillvägagångssätt som ger bättre organisation och återanvändbarhet. En klassmodul skapar ett anpassat objekt som kapslar mot räknarens data och metoder.
`` VBA
"I en klassmodul (t.ex. namngiven" motklass ")
Alternativ uttrycklig
Privat motvärde så länge
Offentlig egendom få Counter () så länge
Counter =countervalue
Slutegenskap
Offentlig subsökning ()
motvärde =motvärde + 1
Slutsub
Offentlig underåterställning ()
motvärde =0
Slutsub
'I en standardmodul
Sub usecounterclass ()
Dim mycounter som motklass
Ställ in myCounter =ny motklass
mycounter.increment
Debug.Print "Counter Value:" &Mycounter.counter
mycounter.increment
Debug.Print "Counter Value:" &Mycounter.counter
mycounter.reset
Debug.Print "Counter Value:" &Mycounter.counter
Ställ in myCounter =inget 'viktigt:släpp objektet från minnet
Slutsub
`` `
* klassmodul Fördelar: Bättre kodorganisation, återanvändbarhet (du kan skapa flera motobjekt) och data som gömmer sig ("Countervalue" är privat).
Att välja rätt tillvägagångssätt:
* Modulnivåvariabel: Enklaste för en enda tillfällig räknare inom en enda VBA -session.
* arbetsbladcell: Bäst för uthållighet över Excel -sessioner, men mindre elegant ur kodande synvinkel.
* klassmodul: Bäst för komplexa scenarier, flera räknare eller när du behöver bättre kodorganisation och återanvändbarhet. Detta är i allmänhet det rekommenderade tillvägagångssättet för allt utöver en mycket enkel räknare.
Kom ihåg att ersätta `" Sheet1 "` med det faktiska namnet på ditt kalkylblad om du använder kalkylcellmetoden. Välj den metod som bäst passar dina behov och kodningsstil. För de flesta applikationer utöver enkla räknare rekommenderas att använda en klassmodul för bättre organisation och underhåll.