ExcelVBAProgram.pdf02
ExcelVBAProgram.pdf02
"01ll~Lii01.r'W (Collections)" iil'llltha)llUL~n I'11'W Excel 1i11LLrl 21~i1l'lI'W (WorkBook) m::;i1l1~Y11 n1 J' (Worksheet) Lb~::;
LLeJ'WlJil (Charts) LU 'W!ii'W
_ ,L
• 6I&lala6lIlU (Collections)
01ll~;H~01.r'W (Collections) ~1l "n~l-J'lIiI'liillub~n!il~LU'WUJ'::;I.f1'VlL~mn'W" (LLIf1~ll'lH'~ll !?l 1'1 n'W) L'lI'W Collections
~1l "Wo rkbooks" bU'W1l ~l-J'lIiI'l~llUL~n!il "Workboo k" ~'1t-1l-Ji1l~ Ltli1lH''11'W1l~ tli1mLIf1~::; Workbook liill'lH~ll~
LLl'1 n!?lI'1n'Wl~htJ Lu'WIii'W
Collections . .
~1l "Workbooks" Lu'Wn~l-J'lIll'l{)llUL~n!ilL75f01u01 (Workbook) ~'1t-1l-Ji1l
Collections ~1l "Windows" Lu'Wn~l-J'lJll'liillUL~n!ilt-lill!?lI'l (Window) ~'1t-1l-Ji1l
1'WbLlf1~:; Collections 211l-l1J'CliJ Collections ~'W11l~mtJ1'W1i11~n L'lI'W mtJ1'W Collections ~1l "Workbooks" "'l::;il
Worksheets
PivotT abies
Range("C5")
!
Excel VBA Programming
Name Close
Cells Copy
Count PastSpecial
HasAxls Delete
1. bll(i) hJmm:!J Exce l VI~'1"11n'!'Wu'W~nlvJ~dJ'W "ObjReference .xls" b~~"1bb~'"J n i?l~:I.J "Alt + F11 " b~mll (i)
n1J" Hi'l1'W VBE
2. r,;)UbGI'lf'1~n~'fltJb~n~I;~'1l "Sheet1 " "'nn Project Explorer "1:;,j,1nD Code Window ~1V1f1Jb~tJ'WA1i'l "l1 n,!'W
1~b~tJ'WA1i'lr,;)'i~
Excel VBA Programming
~'ilIil'dbbU J'~'fl ;j'fwI'Jw..h(i) 'i:(i'ltJ~ i bbVl'WIil'db'6'1'IJ b'll'W MyArray(1) = Computer, MyArray(2) = Book d:I'W(il'W
• nnrnsGI~~GijIllJs
" ,
,x'l'-J~'WWI'WIij''dtJl?l'db'6'1'l1 'v11'il'1ln'll~:;~'W1
hl1oiibFl~'il'l'v1'-J1tJVl1'1FlruM'l'i'1l71f l?l'J rihi:l'Wm~ (Operator) 'v11'f)1il'J'1ln'IJd':;~u'\'Et (#, $ , %, & bb~:; !)
VBA "I:;~ 1'l'J'l'-J1?l'J'fln'Et~~'-Jyjb~ mb~:;~'-J'\I11mlJ bU'WI?l'J b~m n'W bb~:; b~'f)1,x'ih'W;'f)lrA'~'ltJ 1'l'JJ'1oiivY'IIil'd'1ln'Et~~'-Jyjb~ n
~ 'f) 1?l'J bb U~~ ~ Fl'd ~~'f) Fl'J'l'-J'v1'-J1tJ ~'1 ~n'Etru:;'lI'fl'lIil'd bb u~1,x'-J'l n~ ~ (i'I m"l~'WI~l'WrA''JtJ'1ln'EtJ'tl'f)'IJ'fl'l"lli:l(i'l-ii'fll;j'6'1 (Tag)
~'1 bu'WIil'J'1ln'EtdJ1'l'Et'l'1l'l ml'Et 3 1il'J bb~'J!il1'-JrA''JtJ~'flI?l'J bbUd' b'll'W ~'1;'fl bU'W "I ntSalary" 10ii bnU~'l b~'Wb~'fl'W'i:(i'ltJil"lli:l(i'loif'f)l;j'6'1
bU'Wb'i1'IJ~'l'W'd'Wb~'-J dJ'WWI'W
UU11i1
rut 9999
Double Obi 81u~ -1.79769313486232 x 103()B ii..,
324
-4.94065645841247 x 10 (ci1'v1fU
~l\.1'l\.l'i'lU)
\L~::; 4.94065645841247 x 10
324
~..,
1.79769313486232 x 1OoCB (~l'v1rU~l\.1'l\.l
u']n)
n1~n1'V1\.1(?1'lln(?1.;r'1ll.J~ 1'IXiil'l Lblh~') bU\.!I~''1l'lYi'''llHlJ1 ~'l~n1tru:;oiim.J~~iJm,J!Il'l~ b'li\.l 'v11 n#i'1l'l mnnu ~1 butJiil'l L~'lJ
~ ~
4.3.3 mslJs:
LiJtJ~li'l~'f111'IXm1UO)liil'l LLu~"'l:;1.j(il'lln(?1oii'1ll;j~LutJ'lln(?11(?1 tJ'1ln"'lln~~'l LUtJn1~"'l'1l'l~tJ~n1m1'lltJ 'f1') l~·hJnLml.J
.
\h:!1tJ>lIii'L~'l~tJ ~'tULLlJU r;)'l~
Excel VBA Programming
"I v 'V 6'] 'V 0 I I 'V .::!.I Q/ "I 0 I 'V r.:S. 'V
"lln~UbbUU'nl'1I'1'W9:; 6'TIA1'l1 "Dim" tJ'El:IJ1"nn "Dimension" I'Il:IJi?I'ltJ'll'ElI'I'lbbUd' bb'~:;Al'll "As" bbgj'l9'11'11:IJi?I'ltJ
'llUi?l1i'Ell;jgj~!ii'El'lmnnub'WIIl'lbbUd' bb'6'1i?1'1I1l'l'Elth'll~I11'1~
(1 ) Sub DataVariableO
(2) Dim IntSalary As Integer
(3) Dim StrName As String
(4) Dim x As Integer
lIl'lbbU~'El .
"StrName" l:I'llUi?l1i'El:IJgjbU'W1i'ElA'll:IJ
'i-nn bJl~ud':;m f111l'l bbU d'<J 1 bU'W1i'tll;jgj'llUi?lbi?lHn'tl'W 1Il'l bbUd',!'W9:;Q nr"hI,-\'Wi?lb<Xl:I'llUi?l1im;jgj bU'W Variant bi?ltJ'Ell'I b'Wml
~'1 bll'WIIl'l bbUd'~ '6'11:1J1d'n bU~ tJ'W'llUi?l1i'tll;jgj 1~ ;'W'tl~ nUlU bbUU1i'tll;jgj~ bnu Wl'W1Il'l bbUd',!'W1 111'111l'l'tltll'1
Excel VBA Programming
4 ..3.4 •
r1'lSl11ftUGIrr.rlllIKrl
Sub VariableTestO
IntSalary = 500000
StrName = "'1l1Ul"l "l"b"ll'C)dtl""
x=x+1
End Sub
4.3.5 UOUlUGlIJil\lGI311l1s
• Gi51Us Local
dju~'d bbU'~U':;n1 V'I'tl~mtrlub~'~ btr'tlfl()1 n"l:;l-ii"lU1Jl b'u~l:;mtr lub~,~ btr'1lf,xu b~'tlb~,~ btr'1lf""l"lUb!'l~"l bb~'l
~'lbbU, Local n"l:;'l,jltr1u ~'1btlUn1'Aum<htr~'dl:W~11~nm:;lJu
• IiPIIUs MockJtewlde
(5) Ca lculate2
P,
A I B C 0 A , B C I 0
I ! 1 ! 1_
2 2
3 ~ 3
4 4
80
5 5
II
I Ii
6 " 61( 6
7 7
8 I 8
"11 niil'l'iltlWii1'l ~'Wl!ilu d':::nl f"Iiil'l LLU d' " lntMean" dJ'WLLUU Modulewide (Udd'-A'i?1Vl 1) "11mr'Wrhvl'Wi?1~'h11Xnu
IntMean dJ'W 50 (un-A'i?1~ 3) LL~'lLL'i'1i?1'l~l IntMean + 30 (UdJ'-A'i?1~ 4) lri1e.JI1~'fjfiL1'J'W 80 VI~'l"11mr'W~~n1-n
• mlllJs Public
Lu'Wiil'lLLUd'~'VJn'i:'fjd'~L~'ilfl'W'VJn{i'ilUL~niil'lJ'il'l Projec ts 'i'11~lnlH'l1'Wlri1 'i:(7)~UJ':::nlf"lri1'l~ficl"L1f(7) Public LL'VI'W
L..-_ _ _ _ P_ub_l_ic_ln_t_M_
e_an_A_s_ln_te_g_e_r_ _ _ _ _ I/' .
nld'Ud':::nlf"liil'lLLUd' Public 'i'11l-m(lud':::nlf"l1'W{i'ilUL~niil Module Vl1-'il~'ilUL~nmi'Wl L~'il11X'VJn{i'ilUL~niil'i'11:1-J1d'(l
i1~nH'l1'Wlri1 'i:i?1~"1:::,;r'il'lUd':::nlf"lHri'il'W'i:'fjd';L~'ilfLLdn iil'lI11'l'iltl1'1
1. 'i'1~l'1{i'ilU L~nI9l1V1~'i: (7)~,",~n'lJ'l11'W Project Explorer ''l1mr'WL~'ilm~1;} In sert ~ M o dule "l :::unn{] "Module1"
4. Run 1:'Y'I~LU'f)f Calculate1 "l:::unnD Message Box LL~rn'lIi1'lL~'lI "80" ~'lLtlUI:.J~:Wl"llnn1J'lYmfll IntMean
• m"5l1l1s Static
ud:::n1P1Wl'L..ll:'Y'Id~ LtJ'elf (LVli1'f)'L..lnu 1Il'l LLUd Local) 1rntJfll'lJ'f)'lIll'l LbUd"l:::tJ'lf1'l'f)~Lri'f)b'Y'ld~ LtJ'f) f"l Un1dv1 1'llWb~'l
bL~:::H'l1'L..l1~b'Um:::mu1ub'Y'ld~LtJ'f)f~ud:::n1P1I1l'lLLUdHLYh,r'L..l
(1 ) Sub Calculate1 0
(2) Static IntMean As Integer
(3) Dim IntData As Integer
(4) IntMean = IntMean + 10
(5) IntData = IntData + 5
(6 ) MsgBox (IntMean & " " & IntData)
2. Run b~J'~lEJ'elf Calculate2 ~~unn{] Message Box U~i?"'l!9l'll'i'l'IJ 2 f11 lri'elf1 ~n "OK" ~~~~l~un1nhnw
~'1~U
I I
10 5 20 5 30 5 40 5
n1J'UJ'~n'iV'\'el1 LJ'tJ~~H ~1~1 "Dim" 1111:w~rjtJ~'el !9l'lLLUJ''el1 mY LL'i'l~!9l'l L'i'l'1l L~'el~l'1~'1~:lJ1:n n l'W'el1lJ'tJ bi?ltJ b~:w"nn
Sub ArrayVariableO
Dim IntSalary(O To 50) As Integer
End Sub
Option Base 1
IntArray2Dim(2, 5) = 20
, 0
Sub DynamicArrayO
Dim intArrayO As Integer
ReDim intArray(5)
End Sub
• rnSIoo,UG13l1lJsanlsB
n'1 J'H''11'Wiil'l m.htl1 bJ'tJyh 1riibli1tJ~1'1 (i'l~tlm bJ'tJ~ ~tl 'I n1J' ~nl-J Ji'l tJ ~ 1bbVlll'l'lItl'I ~l-J1:.B nfl1tJl'Wm bJ'tJ~ ~'il'l n'1 J'
r'h~'Wli1 roi1V11-tl tStJnH'iim;ltl iil'l iil'ltlth'l
8 . 1 n,si)iiln,sGi~lau
.
• aD&Jfi ~LI18UawGl"jlau
o LL~I7I'lIl1J'H'l1W'h~'l~'l~'1l'lc;1'ltil'l'iltil'liil'1lhJC
MyNumber = 0.86
Dim MyString As String
LSet Lset stringvar = string rolI11A 1L'W string Lwnl11.]1tJ Lb~')n1 ').\'Wl11fi1L~nlJ stringvar
Mid$ / Mid Mid (string , start[, length]) 1II111~1L'W string "I1 nI11 1LLV1U'I start 1?11l-1~1'W')'W~j'::'4L'W length
Right$ / Right Right(string, length) vlI11A1L'W string ~1n'll,)11t1.n1~1/I1l-J~1'W'l'W~1':;'41'W length
Rset Rset stringvar = string {(P1~11'W string lwnl11'lJ'l1 LL~'ln1 V1'W1111~nlJ stringvar
01(
r.n nttlb~l'li1l'l(:.J~~Ylfiilttl~~uu'l'W~dj'W Date ~'1l 15/ 1/2546 t-1l-l1U~'I 'l'W~ 15 ~~'1l'W l-lnnm-l Yl .Y'1. 2546
1r>1 tJ'1::;~~'i'li1l'l(:.J~1?11l-lttl~buU~nlt-1'Wi1IWl'W Control Panel '6'i'l'W~dj'W Regional and Language Options (1'W~.nn1t-1'Wi1I
~lh,l'l\..l ~~'1l'W b~~::;u~dJ'WYl'Vljj~nn'll)
, t-11n String ihtl~~uu~1lJrlnlii'1l'l ~'li'W "30/15/46" Li1IUf'11 "30" "l::;li']'Wril l~'1l'W
~ ~
• msmJamGi5Iaulr\b'A'~u~uri (Date)
dJ\..Inlnltl~'Iril"l l ni?l'l~~'lI1,x~tl'W 'l'W l~'1l'W 1'1 Li1Iuboif DateSerial ilttlllUUn1~boif'll'WrIl'l~
year
OK
Excel VBA Programming
. .
"lln~~~'Y'Ifi"l:;'~\.I~li:lJ'UbbUU<)\.I~bU\.I Date ~'tl 30/9/2549 b(;1mb6'1(;1'ltJ'Y'I'YIfi~nnn 2549 (bti'tl'l"lln1\.1~nn11-l1..lVl
fl1<)\.1~1\.1 Control Pane l bUWbUu1'Y1tJ) \.I'tln"llmbU'i1'l'i'1'l\.l~bU\.ltJI?11~~n'ii1'l~lbb~'l '\.nmrn~IiJ.J\.I1n11-l\.l(;1IK'lb'i1'])~d~\.I
<)\.I~ bb'i1:;b~m.,lbn\.l'])'tl1Jb'])[;]~n1~\.I(;1 bUmm~"l:;bbU'i1'lfi11m(;1tJ'El[;]b\.lm; b'll\.l ~lnn1~\.I(;1fi1 month bU\.I 15 ~"bn\.l 12
"llnlK'l'tl ~ l" biJ\.I n1J'bb'i'l(;1'l<)U~ll"l~UU'lJ'tl'l bY'l1'tl'l '])ru:;~'YI(;1'i'l'tlUbU mm~buu-ru~ 10 ~'l" 1Y'l~ 2549 bri'tl Run
-itl\'iil~~utl Au 0$-10-2006
OK
ResultYear = Year(Date)
Re sultMonth = Month (Date)
ResultDay = Day(Date)
ResultWeekDay = WeekDay(Date)
hour
minute ~mtJ~~ (;]'l L~'lI~H'LLMHU1Yl iJfil 0-59
second ~mtJ~~ (;]'lL~'lI~H'LL~I?N';jU1Yl iJfil 0-59
IttJ~~(;]'l L~'lIb1X'1ltJbU11.J
v •
LLUU L'l~l (;],,!i1'l'1ltJl~ 1ii'1l'l1.J~
"lln(;]'l'1ltJl~LUUn1m1.J~"(;]'lL~'lI (9, 45, 15) b1X'1l~·lul1.JLLUU L'l~l LL~'lLL~i?1~I!-I~~'r'IfiWi'ltJ~li~ MsgBox L~8 Run
iulY'i~;lhtJ'1l{"'l::;Uil!-l~~'r'IfiLUU "1!-I~~'r'Ifi ~'1l 945: 15" ~mtJ~~ L'l~l 9 Ul~n1 45 U1Yl 15 ';jU1Yl
• rl1SIlafil\lOa,OiJi1UU
LUUn1nL~i?1~L'l~lU"'l"ltfU'1J'1l~Lf'11'1l~ bi?1tJH' Time$ ~1'1l Time bi?1tJ~~~'1l~"'l::;b1XI!-I~~'r'Ifiliil"nU (;],,~ ~lnH Time$
.
"'1:;1rlil!-l~~'r'IfiLUU1U~bU11.J'lI'1l~ .
String 'lIUli?1 8 (;]'l'1ln'l!/'J' bU11.JLLUU hhmmss bU'lIru:::~ Time .
"'l::;b1XI!-I~~'r'Ijj1uJ'1.J'lI'1l~
~il~fii{Ai) 13:49:34
OK
"l'ln~u bb'!.'1iP1~b'"l'i1'1tl"l'U'WbU 'W 13:4934 'W '1ln"l'l nn1J'bb'!.'1iP1~b'"l1'l'ltl"l'Ut.lIWnJ~n~'I'"l'-J'I bb~'"l '!.'1'1lJ'I'i'mb'!.'1iP1~ b'"l~1
tl"l,U'WbU'WY'i'lril'"lb'i1'l1Y1'i1!:ri'll J1 tiPIl'l11f Built-in Function ~b~moii'1l'l ~'1l Hour, Minute bb1'l!: Second rK'Iril'"lm.h'lI?i'1l1U~
ResultHour =Hour(Tim e)
ResultMinute = Minute(Time)
ResultSecond = Second(Time)
'W'1l n"l'l n n1'i'bb'!.'1iP1'11'W~ bb'i1!: b'"l'i1'1U"l'U'WI,nlJ~ n~'I'"llJ1 bb~ '"l 'L-I'I n 1if'1l~ n1'i'bb'!.'1iP1~~'l1'W~ bb'i1!:b '"l'i1'1tl"l'U'W~ ¥'1llJrltl
'!.'1'1lJ1'i'(1bojh~'Ini'W Now .
~~"l!:1J1eJ'i1~~fi~~1'W~bb'i1:;b'"l'i1'1 b'W'i'U'lI'1l~ Date ~~eJ1'Ib,x'i1iP1~'WI'I'1l'Wn1n~tJ'Wt~iPI'lJ'1l~tunbmlJl~
ResultTime = Now
"l'ln Y;)'Ii'~oii'l~ lif'Wril'"l bbUl' ResultTime ~ri'l bU'W 10/8/2 549 13:49:34 ~~ b1l'Wri'l1'W~ bb'i1:;b,)'i1'1U"l'U'W'lI'1l~ b1'1~'1l'l
.
tiPImb'!.'1iP1~1'W~b'W'i'U'lJ'1l~tJ~Ylfi~n1'1'1I
, .
(bu'WeJ'i1"l'lnn11'fl'l'L-I'WiPll'UbbUUb'W Control Panel ,r'Wb'1l'l)
Excel VBA Programmin g
n1J'~I?ln1,-ii'1ll;j~mEJI'Wn'::::i?11'M';hn1' ~'1n'1l~1iiV'l'l1~~1Y'lb)J~'1ln1'~(iJ.J'W1bb'1lJJ~g;bV'li'W'1lth'l~1n
9 .1 n,soo.n"1SClUG1~'U
• (Workbook)
, , >
Workbooks 1-ii~1'1 n'll'l ~ i?1'1 1'W~ btl i?1'1l~-k'lt.l~ i?1 (1oif1Il'l L~'llU'1l n~1 r;1Ut.l1'1l Il1t.1'Wi?1 LU'W~'1lI'l~ 1?l'l1'Wr'i1r;i')
ActiveWorkbook 1ojfih'ln'l~~1?l'11n1'i'~n1~'1QnH'I1'W
ThisWorkbook ·lojf~1'1n'l~~1?l'l1'W~uJ''j'''llAI?l~1i<1~n1~'1JJ'j'::::~'l~
" .
e.J'i.'l'1l£J1'\,!'llru::::'!'W
Method Muir;
Add 1'l11'1~~1?l'l1'\,!hnJ
Close tll?l~~1?l~1'\,! (1;\1 ntT'l1~1iPl';'WVin-ii'~l;j~"\:::::i:Hi'1l F1'l1~ b~'1l'\..\liP1H!l1i11'W~A)
Open CiJI?l~~1?l'l1'W
Save ';'W~n?l~1?l'l1'\,!tl?ltJ1fil'1l biii~ (t.l1n';'WVinFlf'lLLjw-:::::JJJ'1n!Jn<'i'1wii'1lR'l1~11An1t.1'Wi?1;'1l)
SaveAs ';'\,!'Vin~~i?1,n'\,!1i?1tJ1~'1l1t.1~ (t.l1n~1nU~'1l Liii~"l::::JJJ'1n!lojJ'1lI'l'l1~ b~'1l'\,!11A'VI'J'1U)
~ 4 ~ 0
Property nihil
Name bbl'li?1'l~'1l1~~ (hhL~i?1'lbbt.l~'l~'1l~)
,.,j, ~ .1 ~
Path Lb~i?1'l Lb1;\~W/l'1l~"lJ'1l'l ~"1~