电竞比分网-中国电竞赛事及体育赛事平台

分享

VBA 教程 | 變量的聲明和賦值

 L羅樂 2018-11-30

本篇是 Excel VBA 系列教程的一部分,后臺回復(fù)「VBA」獲取所有教程。

在之前的兩篇教程中,簡單介紹了 VBA 中變量的聲明和賦值以及基本語句。變量的聲明和賦值,通常是一個 VBA 過程的開始,也是最基本的部分。VBA 開發(fā)過程中,好的聲明方式和正確的賦值過程,是寫出準(zhǔn)確又高效代碼的根本。

本篇教程給大家介紹什么是 VBA 中的聲明以及基本語法,然后介紹多個數(shù)據(jù)類型的賦值方法。學(xué)習(xí)完本篇,可以開始嘗試寫一些基本的 VBA 代碼了。

什么是聲明變量

在《VBA 變量》一文中介紹,變量是一個存儲數(shù)據(jù)的 VBA 代碼結(jié)構(gòu)。在代碼中,通過變量名獲取變量所代表的的值。而聲明變量,就是告訴 VBA,變量的名字和它所存儲的值的數(shù)據(jù)類型。

VBA 中聲明變量,有 4 種變量,它們是:

  • 基本類型變量?;绢愋妥兞渴悄切┐鎯蝹€數(shù)據(jù)的變量,例如數(shù)字、文本、日期等。

  • 通用變量。通用變量,即 Variant 類型變量。該變量的類型在程序運(yùn)行過程中,根據(jù)賦值的數(shù)據(jù)自動指定。

  • 數(shù)組。數(shù)組包含多個變量的集合。

  • 對象。對象包含一些列屬性和方法。

聲明語句的基本語法

4 種類型的變量的聲明方法基本一致。他們的語法如下。

1.基本類型變量

'語法
Dim [變量名] As [數(shù)據(jù)類型]

'實(shí)例
Dim name As String
Dim age As Integer
Dim height As Double
Dim birthday As Date

2.通用變量

聲明 Variant 類型變量時,如果忽略數(shù)據(jù)類型,默認(rèn)情況是 Variant 類型,因此下方兩種方式是相同的。

'語法
Dim [變量名] As Variant
Dim [變量名]

'實(shí)例
Dim message As Variant
Dim message

3.數(shù)組

'語法
'固定長度數(shù)組聲明
Dim [變量名](開始序號 to 結(jié)束序號) As [數(shù)據(jù)類型]
'動態(tài)數(shù)組聲明
Dim [變量名]() As [數(shù)據(jù)類型]

'實(shí)例
'聲明包含10個文本類型元素的數(shù)組
Dim names(1 to 10) As String
'聲明長度未知的文本類型數(shù)組
Dim names() As String

關(guān)于數(shù)組的聲明和賦值,將在數(shù)組一章中做詳細(xì)的介紹。

4.對象

聲明對象時,一般有兩種方式。一種是前期綁定,即一開始就指定對象的類型;一種是后期綁定,即聲明時不指定對象類型,后期指定。

'語法
'前期綁定聲明語法
Dim [變量名] As [對象類型]
'后期綁定聲明語法
Dim [變量名] As Object

'實(shí)例
Dim sh As Worksheet
Dim car As Object

關(guān)于對象的聲明和賦值,在對象一章中做更詳細(xì)的介紹。

在哪里寫聲明語句

聲明變量,意思是在使用變量前,告訴 VBA,變量的名字和數(shù)據(jù)類型。因此,聲明變量的語句,必須寫在使用它的語句前。

錯誤寫法

如果先于聲明語句前使用變量,VBA 會報「變量未定義」錯誤。

正確寫法

Dim name As String
name = 'Zhang San'

如何聲明多個同類型變量

通過以上部分的學(xué)習(xí),在寫多個同類型變量的聲明語句時,有人可能會按以下方式寫:

'聲明兩個整數(shù)類型的 i、j 變量
Dim i,j As Integer

首先,以上寫法,語法上沒問題,不會出現(xiàn)錯誤。但是,這種方式聲明變量,Integer 類型只作為第二個 j 變量的數(shù)據(jù)類型。第一個變量,即 i 變量,它的數(shù)據(jù)類型時 Variant,并不是 Integer 類型。

因此,VBA 中不能合并聲明語句。正確的聲明方法如下:

'第一種,按兩行寫
Dim i As Integer
Dim j As Integer

'第二種,使用 : 符號,在一行寫
Dim i As Integer : Dim j As Integer

聲明變量是必須的嗎

準(zhǔn)確來講,VBA 中聲明變量不是必須的。也就是說,沒有聲明變量,而直接開始用,也沒有錯誤。

但是,不聲明變量,是一種不好的習(xí)慣,也常常會帶來很多錯誤。這也是為什么之前的教程中都沒有提到這點(diǎn)的原因。

不聲明變量典型弊端包括:

  • 數(shù)據(jù)類型自動設(shè)置為 Variant 類型,效率低。

  • 變量名寫錯,不會提示錯誤。

  • 無法使用 VBA 代碼自動補(bǔ)全。

  • 數(shù)據(jù)類型不匹配時,不會提示錯誤。

基于以上原因,強(qiáng)烈建議,每次使用變量,都要聲明其變量名和數(shù)據(jù)類型。

VBA 提供一個選項(xiàng),可以強(qiáng)制變量聲明,即在模塊頭部寫上以下語句:

Option Explicit


模塊中有以上語句時,如果未聲明變量而直接使用變量,VBA 會提示「變量未定義」錯誤,方便檢查代碼。

設(shè)置 VBA 編輯器變量聲明選項(xiàng)時,可以自動為每個模塊插入Option Explicit語句,不需要手動書寫。設(shè)置方法如下:

基本類型變量的賦值

基本類型變量是存儲單個值的變量,例如數(shù)字、文本、日期等。

VBA 中,給基本類型變量賦值,以 Let關(guān)鍵詞開頭。賦值操作是給=左側(cè)的變量,用=右邊的數(shù)據(jù),指定其代表的值。在后續(xù)的代碼中,該變量就代表指定的數(shù)據(jù)。

在實(shí)際開發(fā)中,給基本類型變量賦值時,Let關(guān)鍵詞可以忽略不寫,直接以變量開頭寫賦值語句。

給基本類型變量賦值語法如下:

'語法,兩種寫法相同
Let [變量名] = [數(shù)據(jù)]
[變量名] = [數(shù)據(jù)]

'實(shí)例
Dim name As String
Let name = 'Zhang San'

Dim age As Integer
Let age = 30

Dim birthday As Date
Let birthday = #2000-1-1#

賦值語句中,=右側(cè)可以是包含其他變量、函數(shù)、復(fù)雜計算的表達(dá)式。該表達(dá)式返回的值的類型,與變量類型一致就可以正常賦值。

Dim birthday As Date
Dim age As Integer

birthday = #2000-1-1#
age = Year(Now) - Year(birthday)

一種特殊情況是,=右側(cè)可以是變量本身。這種方式多用于循環(huán)結(jié)構(gòu)中。

Dim i As Integer

For i = 1 To 10

    Msgbox i
    i = i   1

Next i

'返回 => 1,2,3,4,5,6,7,8,9,10

Variant 類型變量的賦值

我們知道 Variant 類型時通用類型,因此賦值很直接,沒有類型強(qiáng)制要求。Variant 類型變量第一次賦值后,可以繼續(xù)賦值其他類型數(shù)據(jù)。

'聲明變量(兩者相同)
Dim message As Variant
Dim message

'賦值
message = 'Hello World'
message = 1234567890
message = #2018-12-1#

這里依然強(qiáng)調(diào),雖然 Variant 類型變量比較靈活,但是也有很多弊端,所以在實(shí)際開發(fā)中,不建議使用該類型,使用確切類型變量。

數(shù)組類型變量的賦值

數(shù)組是可以存儲多個同類型元素的數(shù)據(jù)類型。聲明時一般指定其數(shù)據(jù)長度。給數(shù)組賦值時,一般使用每個元素的序號。

數(shù)組賦值基本語法如下:

[數(shù)組名](元素序號) = [數(shù)據(jù)]

下面看一下實(shí)際的實(shí)例。

'聲明數(shù)組
Dim arr(1 to 5) As String
'數(shù)組賦值
arr(1) = 'Zhang San'
arr(2) = 'Li Si'
arr(3) = 'Wang Wu'

以上是數(shù)組的基本賦值方式,關(guān)于數(shù)組的更多聲明和賦值方法,將在《數(shù)組》一章中詳細(xì)介紹。

對象類型變量的賦值

VBA 中,對象是程序的一個元素,不同于基本類型數(shù)據(jù),它包括多個屬性和多個方法。例如,Excel 中工作簿、工作表、單元格、圖表等都是對象。

對象類型變量賦值時,不同于基本類型變量使用Let(可以忽略)關(guān)鍵詞,對象使用 Set 關(guān)鍵詞,并且Set關(guān)鍵詞不能省略。

如下是對象類型變量基本的賦值方法:

Set [變量名] = [對象類型數(shù)據(jù)]

下面看一下實(shí)際的用法。

'聲明工作表類型的對象
Dim sheet As Worksheet
'將名稱為“績效表”的工作表,賦到 sheet 變量
Set sheet = Worksheets('績效表')

由于對象可以包含多個屬性,因此 VBA 提供一種同時給多個屬性賦值的簡單方法。具體方法是對象多個屬性賦值語句,放置在 With 對象End With關(guān)鍵詞中間。

Dim sheet As Worksheet
Set sheet = Worksheets('績效表')

With sheet
    .Name = '舊績效'
    .Visible = False
End With

關(guān)于對象的更多聲明和賦值方法,將在《對象》一章中詳細(xì)介紹。

總結(jié)

以上是 VBA 中最基本的變量聲明和賦值方法。聲明和賦值變量,是代碼的開始部分,需要熟練掌握。

不同類型變量,聲明和賦值方法做了簡單的介紹,除了以上介紹的,不同類型的變量有自己特點(diǎn),這些部分會在以后的教程詳細(xì)介紹。

關(guān)于變量聲明和賦值,還有幾個比較重要的知識點(diǎn),包括相關(guān)錯誤和局部、全局變量,這部分內(nèi)容將會做單獨(dú)的、詳細(xì)的介紹。

大家如果有問題,歡迎留言或私信,大家一起交流探討。



    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多