vba

可以通過在屬性窗口設(shè)置名稱來給對象重新命名,名字可以由字母、漢字(2字符)甫恩、數(shù)字以及下劃線組成,但必須以字母或漢字開頭酌予。名字的長度<=255個字符

●日期型數(shù)據(jù)Date(缺省值為#1899/12/31#)'注:日期型數(shù)據(jù)的值用兩個“#”括起來。
●布爾型數(shù)據(jù)Boolean【默認值為False=0】布爾型數(shù)據(jù)是一個邏輯值奖慌,用于邏輯判斷抛虫,只有兩個值True和False。
當(dāng)布爾型轉(zhuǎn)換為其他數(shù)據(jù)類型時:
True->-1
False->0
當(dāng)其他數(shù)據(jù)類型轉(zhuǎn)換為布爾類型時:
非0值-> True
0 -> False
●對象型數(shù)據(jù)Object
可用來表示應(yīng)用程序中或某些其他應(yīng)用程序中的對象简僧。Object變量存儲為4字節(jié)(32位)的地址形式
●變體型數(shù)據(jù)Variant
變體型數(shù)據(jù)是一種可變的數(shù)據(jù)類型建椰,可以存放任何類型的數(shù)據(jù)。在程序中不特別說明時岛马,VBA會自動將變量默認為Variant型變量棉姐。
●Dim StrName2 As String * 5
聲明了一個變量StrName2,其為一個定長字符串類型啦逆,長度為5伞矩。

變量是內(nèi)存中用于存儲值的臨時存儲空間。
存儲在變量中的數(shù)據(jù)可以更換夏志,因此變量通常用來存儲在程序運行過程中需要臨時保存的數(shù)據(jù)或?qū)ο蟆?/p>

● Const 常量名 [As 數(shù)據(jù)類型]= 數(shù)值
例如:ConstPI As Single = 3.1415926
Const V As Integer= 100
注:常量必須在聲明時初始化

●日期型數(shù)據(jù)的算術(shù)運算
1.兩個日期型數(shù)據(jù)可以相減: DateB-DateA
結(jié)果是一個數(shù)值型整數(shù)(兩個日期相差的天數(shù))乃坤。
例:#2015/05/08# - #2015/05/01# 其結(jié)果為數(shù)值:7

2.一個日期型數(shù)據(jù)(DateA)與一數(shù)值數(shù)據(jù)(N)可作加法運算:DateA+N,其結(jié)果仍是一個日期型數(shù)據(jù)。

3.一個日期型數(shù)據(jù)(DateA)與一數(shù)值數(shù)據(jù)(N)可作減法運算:DateA-N,其結(jié)果仍是一個日期型數(shù)據(jù)沟蔑。
例:#2015/05/08# -7 其結(jié)果為日期:#2015/05/01#
●Abs() 絕對值
Rnd() 產(chǎn)生從0到1的隨機數(shù)
Sqr() 平方根
Int(n) 取小于或等于n的最大整數(shù)
Round(n,m) 四舍五入

●Weekdayname(7)
輸出結(jié)果:星期六
又如:weekdayname(7,True)
輸出結(jié)果:周六

●Workday(Start_date,days,[holidays])
作用:返回在某日期(起始日期)之前或之后湿诊、與該日期相隔指定工作日的某一日期的日期值。工作日不包括周末和專門指定的假日瘦材。
參數(shù):  Start_date 必需厅须。一個代表開始日期的日期∈匙兀  days 必需朗和。Start_date 之前或之后不含周末及節(jié)假日的天數(shù)错沽。days為正值將生成未來日期;為負值生成過去日期例隆∩啵  Holidays可選。一個可選列表镀层,其中包含需要從工作日歷中排除的一個或多個日期镰禾,例如各種省\市\(zhòng)自治區(qū)和國家\地區(qū)的法定假日及非法定假日。該列表可以是包含日期的單元格區(qū)域唱逢,也可以是由代表日期的序列號所構(gòu)成的數(shù)組常量吴侦。

●Dateserial(y,m,d) 返回一個日期形式
DateAdd(interval, number, date)返回包含已為其添加指定時間間隔的日期
DateDiff((interval,date1, date2[, firstdayofweek[, firstweekofyear]])返回一個指定兩個特定日期之間的時間段數(shù)目。
DatePart(interval,date [,firstdayofweek[, firstweekofyear]])返回包含給定日期的指定部分坞古。
DatePart("yyyy",#2015-12-20#)
DateDiff("yyyy",#2000-12-20#,#2015-1-1#)
DateAdd("m",2,#2015-12-20#)
●Asc() 將字符轉(zhuǎn)換成ASCII
Chr() ASCII轉(zhuǎn)換成字符
CDate() 文本型轉(zhuǎn)為日期型
Str() 數(shù)值轉(zhuǎn)換為字符串
Val() 數(shù)字字符串轉(zhuǎn)換為數(shù)值
●例如: instr(2,“ssschina”,“sch”,1)
結(jié)果:3
第三章 VBA順序結(jié)構(gòu)

一.程序語句:是執(zhí)行具體操作的指令(VBA關(guān)鍵字备韧、屬性、函數(shù)痪枫、運算符以及VBE可識別的指令符號的任意組合)
●一條語句也可分若干行書寫织堂,但在要續(xù)行的行尾加入續(xù)行符(空格和下劃線,即 _)
●VBA允許使用復(fù)合語句奶陈,即把幾個語句放在一行中易阳,各語句間用冒號“:”分隔

二.賦值語句
變量名 = <表達式> 對象.屬性= <表達式>
●賦值語句兼有計算與賦值的雙重功能
●右邊表達式類型與左邊變量類型不同時“向左轉(zhuǎn)換”
●賦值號左邊只能是變量(或?qū)傩裕荒苁浅A炕虮磉_式吃粒。
●不能在一條賦值語句中潦俺,同時給多個變量賦值。
●可使用With語句為一個對象的多個屬性賦值

三.編寫事件的步驟
1.聲明(變量徐勃、常量事示、數(shù)組)
●Dim 變量名 [As 類型]
●Const 常量名 [As 類型] = 表達式
●Dim 數(shù)組名(下標1[,下標2…]) [As 數(shù)據(jù)類型]
2.初始化變量 a=0 a=1
3.輸 入
●文本框 X=Val(t1.Value)
●單元格 X=range.value
●輸入對話框 X=Val(InputBox(“請輸入”))
4.數(shù)據(jù)處理
語句 賦值 選擇 循環(huán)(確定次數(shù)用FOR,明確條件用DO LOOP ) 自定義函數(shù)
5.輸 出
●標簽 T1.Caption=Str(x)
●文本框 t1.value=Str(x)
●單元格 range.value= x
●對話框 MsgBoxStr(x)

三.編程思路
1.分析題目,根據(jù)題意列出方程
2.設(shè)計界面,確定界面上的控件有哪些
3.選擇觸發(fā)事件僻肖、確定輸入輸出肖爵。
4.編寫事件過程
●聲明變量 ●確定輸入方式 ●進行計算●把變量帶入方程 ●確定輸出方式

第四章 VBA選擇結(jié)構(gòu)
(分支結(jié)構(gòu):分支結(jié)構(gòu)事實上是一種選擇,在不同的條件下選擇執(zhí)行不同的程序段臀脏。)

一. If 語句
●If …Then(單分支)
●If …Then …Else(雙分支)
●If …Then …Elseif(多分支)
●嵌套If

二. Select case 語句
Select Case <變量或表達式> 1遏匆、數(shù)字;表達式
Case <條件1> 2谁榜、一組用逗號分隔的枚舉值
<語句塊1> 3幅聘、表達式1 to 表達式2
Case <條件2> 4、Is 關(guān)系表達式
<語句塊2>
End Select

第五章 VBA循環(huán)結(jié)構(gòu)

一.For循環(huán)語句(先檢查“循環(huán)變量”的值是否超過“終值”)
For 循環(huán)變量(數(shù)值變量) = 初值 To 終值 [Step 步長](將初值賦給循環(huán)變量)
[語句塊]
[Exit For](只能跳出一重循環(huán))
[語句快]
Next [循環(huán)變量]
【循環(huán)終止的條件是循環(huán)變量賦值超過終值窃植,而不是等于終值 】
【循環(huán)次數(shù)的計算:次數(shù)= int((終值一初值)/步長)+1】
【當(dāng)步長=0時,永不終止】

二.循環(huán)嵌套【外層循環(huán)完全“包含”內(nèi)層循環(huán)帝蒿,不能發(fā)生交叉】
● for i = x to y
for j = x1 to y1
for k = x2 to y2
……
next k
next j
next i
【使用外層循環(huán)來控制輸出多少行,內(nèi)層循環(huán)來控制每行巷怜「鸪】

●Do…Loop循環(huán)語句 【當(dāng)不清楚循環(huán)次數(shù)但清楚循環(huán)的執(zhí)行條件或退出條件時】
語法形式1: 語法形式2:
Do [While|Until <條件> Do
[語句塊] [語句塊]
[Exit Do] [Exit Do]
[語句塊] [語句塊]
Loop Loop [While|Until<條件>]

●For Each語句【需要遍歷數(shù)組或集合的每個元素時】
For Each 元素變量In數(shù)組或集合
循環(huán)體
[Exit For]
循環(huán)體
Next[元素變量]

第六章 數(shù)組【處理同一類型的成批的數(shù)據(jù)暴氏,由一定數(shù)目的同類元素按照一定順序排列而成的結(jié)構(gòu)類型數(shù)據(jù)】【連續(xù)區(qū)域】(下標……)
a(1 to 10 ) '只是十個空格

●倒序輸出【兩兩對應(yīng)】
Dim a(1 To 10) As Integer, t AsInteger
For i= 1 To 10 / 2
t= a(i)
a(i) = a(10 - i+ 1)
a(10 - i+ 1) = t
Next i
For i= 1 To 10
Me.Text3.Value = Me.Text3.Value & a(i)& Space(1)
Next i

●數(shù)組排序問題
◆選擇排序方法【選擇小的排在前面】
排序過程:
(1)首先通過n-1次比較,從n個數(shù)中找出最小的绣张,將它與【第一個數(shù)】交換——第一趟選擇排序答渔,結(jié)果最小的數(shù)被安置在第一個元素位置上
(2)再通過n-2次比較,從剩余的n-1個數(shù)中找出次小的數(shù)侥涵,將它與第二個數(shù)交換——第二趟選擇排序
(3)重復(fù)上述過程沼撕,共經(jīng)過n-1趟排序后,排序結(jié)束
for i = 1 to n-1 '總共比較n-1次
for j = i+1 to n '從i+1個元素開始比較到第n個元素
if a(i)>a(j) then
t = a(i)
a(i)=a(j) '【數(shù)芜飘!】把較小的a(j)給a(i) '【位置】a(i)仍是前一位
a(j)=t
next j
next i

 ◆冒泡法
     排序過程:
      (1)有n個數(shù)(存放在數(shù)組a(n)中)务豺,第一趟將每相鄰兩個數(shù)比較,小的調(diào)到前頭嗦明,經(jīng)n-1次兩兩相鄰比較后笼沥,最大的數(shù)已“沉底”,放在最后一個位置娶牌,小數(shù)上升“浮起”奔浅;
      (2)第二趟對余下的n-1個數(shù)【最大的數(shù)已“沉底”】按上法比較,經(jīng)n-2次兩兩相鄰比較后得次大的數(shù)诗良;
      (3)依次類推乘凸,n個數(shù)共進行n-1趟比較,其中累榜,在第j趟中要進行n-j次兩兩比較。

For i= 1to n-1 ‘i為比較趟數(shù)灵嫌,一共進行n-1趟比較【仍為n-1趟】
For j= 1 to n-i (往后比較) ‘j為每趟中各次參與前后元素兩兩比較的數(shù)組元素的下標
‘當(dāng)i=1時(第一趟)壹罚,該趟共比較n-1次
‘當(dāng)i=2時(第二趟),該趟共比較n-2次(因為最大的元素已經(jīng)沉底了呀)

                                 ‘當(dāng)i=n-1時(第n-1趟)寿羞,該趟該趟共比較1次
   if A(j)>A(j+1) Then   ‘如果前面的數(shù)組元素比后面的大猖凛,則相
                                           ‘鄰下標進行交換
t=A(j)
A(j)=A(j+1)
A(j+1)=t
      End If

Next j
Next i

第七章 VBA過程與函數(shù)
【VBA中的每一個程序都包含過程,VBA的主體結(jié)構(gòu)就是過程
例如:錄制宏是一個過程绪穆,一個自定義函數(shù)也是一個過程辨泳。】
●子過程(Sub過程) Private|Public Sub 子過程()
Exit Sub
End Sub

●函數(shù)過程(Function過程)              Function 函數(shù)過程(rng As Range )
                                                             Exit Function
                                                       End Function

●屬性過程                                       Property Get 屬性過程() As Variant
                                                         End Property

一.子過程
【過程名可以和本過程的私有變量同名玖院,但卻不能和公有變量同名菠红。】
例如:
Sub 身份證() Dim身份證 As String (公有變量)
Dim 身份證 As String Sub 身份證()
身份證=me.text.value 身份證=me.text.value (錯D丫)
End Sub End Sub

●模塊級過程
是指只能在【當(dāng)前模塊】調(diào)用的過程试溯,它的特征有三個:
(1)聲明Sub過程前使用【Private】
(2)只有當(dāng)前模塊可以調(diào)用
(3)不出現(xiàn)在“宏”對話框中
●工程級過程
是指在當(dāng)前工程中任何地方都可以隨意調(diào)用的過程。它的特征有三個:
(1)聲明Sub過程時沒有使用“Public”和“Private”郊酒,則默認為公有過程
(2)非當(dāng)前過程遇绞,而是任何模塊或者窗體中都可以調(diào)用键袱。
(3)可以出現(xiàn)在“宏”對話框中。

●Sub過程的嵌套調(diào)用方式【所有過程都是可以遞歸的摹闽,即可以調(diào)用自己來完成任務(wù)蹄咖。】
語法:【call 】過程名(參數(shù))付鹿,或者使用Application對象的Run方法
示例:Sub 過程一
Msgbox “你好澜汤!”
End Sub
Private Sub 過程二()
[Call] 過程一 / Applicatioin.Run 過程一
End Sub

二.function【用于返回一個值或者數(shù)組】(相比而言,Sub過程既可以返回值又可以對引用的對象進行修改倘屹。)(Function的參數(shù)絕不能與Function過程名一致)
(如果自定義的Function名稱與VBA內(nèi)部名稱一致银亲,仍然可以正常執(zhí)行,只是在代碼中調(diào)用Excel內(nèi)部函數(shù)時必須聲明其對象庫纽匙。如:自定義函數(shù)sqr务蝠,當(dāng)要區(qū)分調(diào)用的函數(shù)是VBA內(nèi)部函數(shù)sqr時,需要使用如下形式:VBA.sqr烛缔。如果直接使用sqr則調(diào)用的是自定義函數(shù)sqr)【faction:直接寫函數(shù)名稱】

過程的參數(shù):按值傳遞參數(shù)與按址傳遞參數(shù)
●采用Byval聲明參數(shù)——按值傳遞參數(shù)馏段。這種情況下過程訪問的是變量的副本,過程不會改變變量本身的值践瓷。
例如:所有工作表事件和工作簿事件的參數(shù)都是按值傳遞的院喜。
●采用ByRef【默認】聲明參數(shù)——按址傳遞參數(shù)。這種情況下過程訪問的是變量本身晕翠,過程可以【改變】變量的真正的值叹阔。

Function函數(shù)的功能是:【用于返回一個值或者數(shù)組◎悄罚】
在Function過程結(jié)束前蝇完,【必須將計算結(jié)果賦給:Function函數(shù)名稱】
例如:Public Function Fun()
Fun= Int(Rnd()*10)+1
End Function

●創(chuàng)建圖表 shape!
Private Sub CommandButton1_Click()
Dim ws As Worksheet
Dim shp As Shape
'工作表中插入圖表
Set ws = Worksheets("data")
Set shp = ws.Shapes.AddChart
With shp '設(shè)置圖表的位置
.Left = ws.Range("F8").Left
.Top = ws.Range("F8").Top
With .Chart 'with 里的with……
.SetSourceData ws.Range("A1:E6") '設(shè)置圖表的數(shù)據(jù)源
.ChartType = xlColumnClustered'設(shè)置圖表的類型樊卓,簇狀柱形圖
End With
End With
End Sub

●With語句
With Object
[Statements]
End With
其中拿愧, Object:代表一個對象,且必須是對象碌尔。

With Worksheets.Add
.Name = "課程表"
.Move after:=Worksheets(Worksheets.Count)
End With

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末浇辜,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子唾戚,更是在濱河造成了極大的恐慌柳洋,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叹坦,死亡現(xiàn)場離奇詭異膳灶,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門轧钓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來序厉,“玉大人,你說我怎么就攤上這事毕箍〕诜浚” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵而柑,是天一觀的道長文捶。 經(jīng)常有香客問我,道長媒咳,這世上最難降的妖魔是什么粹排? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮涩澡,結(jié)果婚禮上顽耳,老公的妹妹穿的比我還像新娘。我一直安慰自己妙同,他們只是感情好射富,可當(dāng)我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著粥帚,像睡著了一般胰耗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上芒涡,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天柴灯,我揣著相機與錄音,去河邊找鬼费尽。 笑死赠群,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的依啰。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼店枣,長吁一口氣:“原來是場噩夢啊……” “哼速警!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起鸯两,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤闷旧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后钧唐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體忙灼,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了该园。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片酸舍。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖里初,靈堂內(nèi)的尸體忽然破棺而出啃勉,到底是詐尸還是另有隱情,我是刑警寧澤双妨,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布淮阐,位于F島的核電站,受9級特大地震影響刁品,放射性物質(zhì)發(fā)生泄漏泣特。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一挑随、第九天 我趴在偏房一處隱蔽的房頂上張望状您。 院中可真熱鬧,春花似錦镀裤、人聲如沸竞阐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽骆莹。三九已至,卻和暖如春担猛,著一層夾襖步出監(jiān)牢的瞬間幕垦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工傅联, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留先改,地道東北人。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓蒸走,卻偏偏與公主長得像仇奶,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子比驻,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1.1 VBA是什么 直到90年代早期,使應(yīng)用程序自動化還是充滿挑戰(zhàn)性的領(lǐng)域.對每個需要自動化的應(yīng)用程序,人們不得...
    浮浮塵塵閱讀 21,745評論 6 49
  • 本例為設(shè)置密碼窗口 (1) If Application.InputBox(“請輸入密碼:”) = 1234 Th...
    浮浮塵塵閱讀 13,648評論 1 20
  • 杭州可不比黃山自由该溯,所以六點多就必須得起床。外加賴床的老毛病别惦,扭扭捏捏到6點五十起來狈茉。墨跡墨跡準備出門,老媽...
    Jango啞炮閱讀 329評論 2 0
  • 曾經(jīng)日思夜想的人蹭秋,見面連說一句話都吝嗇. 致自以為是的現(xiàn)代人和愛情. 【以下部分摘錄】 一個人若對另一個人執(zhí)念,多...
    竹我晴天閱讀 510評論 3 3
  • 透過車窗堤撵,重新審視自己仁讨,在欲望恒生,越來越浮躁的社會粒督,才發(fā)現(xiàn)自己真的不了解自己陪竿,當(dāng)初是為了夢想,而現(xiàn)在是為了工作...
    融融春風(fēng)閱讀 301評論 0 0