Kā deklarēt globālo mainīgo VBA?

Es uzrakstīju šādu kodu:

Function find_results_idle()

    Public iRaw As Integer
    Public iColumn As Integer
    iRaw = 1
    iColumn = 1

Un es saņemu kļūdas ziņojumu:

" Nederīgs atribūts Sub vai funkcijā"

Vai jūs zināt, ko es darīju nepareizi?

Es mēģināju Public vietā izmantot Global, bet man radās tā pati problēma.

Es mēģināju deklarēt pašu funkciju kā Public, bet arī tas neko nedeva.

Kas man jādara, lai izveidotu globālo mainīgo?

Risinājums

Mainīgie ir jādeklarē ārpus funkcijas:

Public iRaw As Integer
Public iColumn As Integer

Function find_results_idle()
    iRaw = 1
    iColumn = 1
Komentāri (0)

Šis ir jautājums par scope.

Ja vēlaties, lai mainīgie lielumi būtu spēkā tikai funkcijas darbības laikā, mainīgo lielumu deklarēšanai funkcijas vai apakšfunkcijas iekšienē izmantojiet Dim (saīsinājums no Dimension):

Function AddSomeNumbers() As Integer
    Dim intA As Integer
    Dim intB As Integer
    intA = 2
    intB = 3
    AddSomeNumbers = intA + intB
End Function
'intA and intB are no longer available since the function ended

globāls mainīgais (kā norādīja SLaks) tiek deklarēts ārpus funkcijas, izmantojot atslēgas vārdu Public. Šis mainīgais būs pieejams visā lietojumprogrammas darbības laikā. Excel gadījumā tas nozīmē, ka mainīgie būs pieejami, kamēr būs atvērta konkrētā Excel darbgrāmata.

Public intA As Integer
Private intB As Integer

Function AddSomeNumbers() As Integer
    intA = 2
    intB = 3
    AddSomeNumbers = intA + intB
End Function
'intA and intB are still both available.  However, because intA is public,  '
'it can also be referenced from code in other modules. Because intB is private,'
'it will be hidden from other modules.

Var būt arī mainīgie, kas ir pieejami tikai konkrētā moduļa (vai klases) ietvaros, deklarējot tos ar atslēgas vārdu Private.

Ja veidojat lielu lietojumprogrammu un jūtat nepieciešamību izmantot globālos mainīgos, es ieteiktu izveidot atsevišķu moduli tikai globālajiem mainīgajiem. Tas palīdzēs jums saglabāt to uzskaiti vienuviet.

Komentāri (3)

Lai izmantotu globālos mainīgos, VBA projekta lietotāja saskarnē ievietojiet jaunu moduli un deklarējiet mainīgos, izmantojot Global.

Global iRaw As Integer
Global iColumn As Integer
Komentāri (1)