Excel VBAã«ãããå€æ°ãšå®æ°ã®åºæ¬
ç§ã¯VBAã®æŽ»çšçµéšãéããŠåŸãç¥èãæŽçããå
±æããç®çã§èšäºãäœæããŠããããã°ã©ãã³ã°æŽ1幎åã«ãªããšã³ãžãã¢ã§ãã
ååã¯ãExcel VBAã®åºæ¬çãªãªããžã§ã¯ãæäœã«ã€ããŠè§£èª¬ããŸãããä»åã¯ãããã°ã©ãã³ã°ã®åºç€ãšãªããå€æ°ããšãå®æ°ãã«ã€ããŠèª¬æããŠãããŸãããå€æ°ãã䜿ãããªãããã©ããã§ãVBAã䜿ãããªãããã©ããã決ãŸããšèšã£ãŠãéèšã§ã¯ãããŸããïŒ å€æ°ãç解ããé©åã«äœ¿ãããªããããã«ãªãã°ãããè€éãªåŠçãèªååã§ããããã«ãªããVBAã®äžçãããã«åºãããŸãïŒ
- 第1å: Excel VBAã®åºç€ç¥èãšã»ãã¥ãªãã£èšå®
- 第2å: Excel VBAã®åºæ¬æäœãšãªããžã§ã¯ãã®ç解
- 第3å: Excel VBAã«ãããå€æ°ãšå®æ°ã®åºæ¬ïŒæ¬èšäºïŒ
- 第4å: Excel VBAã«ãããã·ãŒãæäœã®åºæ¬ãšãšã©ãŒåŠç
ç®æ¬¡
ã¯ããã«
Option Explicitã®å¹æ
å€æ°ãšã¯
åå®çŸ©ã»å€æ°ã®å®£èšãããªãããšã«ããäžå
·å
å€æ°ã®ã¹ã³ãŒãèšå®
ãªããžã§ã¯ãå€æ°ã®ä»£å
¥ã«ã€ããŠ
å®æ°ã®æŽ»çš
ãŸãšã
ã¯ããã«
ãå€æ°ãã¯ãããŒã¿ãäžæçã«ä¿åããããã®ãç®±ãã®ãããªãã®ã§ããé©åãªå€æ°ã®äœ¿çšã¯ã以äžã®ãããªå©ç¹ããããŸãã
- ããã°ã©ã ã®å¯èªæ§åäž
- ã¡ã¢ãªã®å¹ççãªäœ¿çš
- ãã°ã®é²æ¢
- ã³ãŒãã®ä¿å®æ§åäž
å€æ°ã¯VBAããã°ã©ãã³ã°ã«ãããŠåºç€ãšãªãã ãã§ãªããã³ãŒãã®å質ãå·Šå³ããéèŠãªèŠçŽ ã§ããä»åã®èšäºãéããŠãå€æ°ãé©åã«æ±ãããã®ç¥èãæ·±ããããå¹ççã§ä¿¡é Œæ§ã®é«ãVBAããã°ã©ã ãäœæã§ããããã«ããŠãããŸãããã
Option Explicitã®å¹æ
Option Explicit
ã¯ã¢ãžã¥ãŒã«ã®å
é ã«èšè¿°ããŠããã¹ãŠã®å€æ°ãæ瀺çã«å®£èšãããŠãããã確èªããããã®ïŒå®£èšãããŠããªãå€æ°ã®äœ¿çšãèš±å¯ããªãïŒãªãã·ã§ã³ã§ãããã®èšå®ã«ãããæªå®£èšã®å€æ°ãããã°ãšã©ãŒãšããŠèŠåã衚瀺ãããã¿ã€ããã³ãŒãã£ã³ã°ãã¹ãçºèŠãããããªããŸãã
-
å€æ°ã®æé»çãªå®£èšãçŠæ¢
ïŒå®£èšãããŠããªãå€æ°ãšããŠãšã©ãŒãçºç â æ©æãã¹çºèŠïŒ- ã¿ã€ããã¹ã«ãããã°ãé²æ¢
- æªå®çŸ©å€æ°ã®äœ¿çšãé²æ¢
-
ã³ãŒãã®å質åäž
- å€æ°ã®äœ¿çšæå³ãæ確ã«ãªã
- ãããã°ïŒãã°ã誀ããèŠã€ããŠä¿®æ£ããããšïŒã容æã«ãªã
- ä»ã®äººãã³ãŒããèªãéããåŸããèªåã§ã³ãŒããèŠçŽãéã«ç解ãããããªã
Option Explicit ' ã¢ãžã¥ãŒã«ã®å
é ã«èšè¿°
Sub ãµã³ãã«ã³ãŒã()
Dim stråå As String ' æ瀺çãªå€æ°å®£èšãå¿
èŠ
stråå = "å±±ç°å€ªé"
MsgBox stråå
End Sub
Option Explicitã®èªåæ¿å ¥èšå®
- VBEãéã
- [ããŒã«] â [ãªãã·ã§ã³] ãéžæ
- [ãšãã£ã¿] ã¿ãã® [å€æ°ã®å®£èšã匷å¶ãã] ã«ãã§ãã¯
第1å: Excel VBAã®åºç€ç¥èãšã»ãã¥ãªãã£èšå®ã«ãèšå®æ¹æ³ãèšèŒããŠãããŸãã
å€æ°ãšã¯
å€æ°ãšã¯ãããã°ã©ã ã®äžã§ããŒã¿ãäžæçã«èšæ¶ããŠããããã®ãã®ã§ãã
äŸãã°ãååã®å€æ®µãåæ°ãæ±ãå Žåãããããã®å€ãå€æ°ã«æ ŒçŽããããšã§ãèšç®ã衚瀺ãå¹ççã«è¡ãããšãã§ããŸãã å€æ°ã䜿ãããšã§ãã³ãŒããã·ã³ãã«ã§èŠããããªãã ãã§ãªããåŸããä¿®æ£ãå¿ èŠã«ãªã£ãå Žåã«ããå€æŽç®æãå°ãªãæžãŸããããšãã§ããŸãã
å€æ°åã®ã«ãŒã«
- 䜿çšã§ããæå: ã¢ã«ãã¡ããããæ¥æ¬èªãæ°åãã¢ã³ããŒã¹ã³ã¢ïŒ
_
ïŒ - å é æå: ã¢ã«ãã¡ããããæ¥æ¬èª
- äºçŽèª: VBAã§ãããããå®çŸ©ãããŠããèªå¥ïŒSubãEnd SubãDim ãªã©ïŒã¯äœ¿çšã§ããŸãã
- é·ã: 255æå以å
ããŒã¿å
ããŒã¿åãšã¯ãå€æ°ã«æ ŒçŽããããŒã¿ã®çš®é¡ã®ããšã§ãã
VBAã§æ±ããäž»ãªããŒã¿åã«ã¯ã以äžã®ãããªãã®ããããŸããïŒæç²ïŒ
-
Long
ïŒé·æŽæ°åïŒ: æŽæ°å€ãæ±ããšãã«äœ¿çš
ïŒInteger
ãšãã䌌ããããªåããããŸãããåºæ¬çã«Long
ã䜿çšã§åé¡ãããŸããïŒ -
String
ïŒæåååïŒ: æååããŒã¿ãæ±ããšãã«äœ¿çš -
Single
ïŒå粟床浮åå°æ°ç¹æ°ïŒ: 粟床ãäœããŠãããå°æ°ãæ±ããšãã«äœ¿çš -
Double
ïŒå粟床浮åå°æ°ç¹åïŒ: é«ç²ŸåºŠã®ïŒç²ŸåºŠãæ±ããããïŒå°æ°ãæ±ããšãã«äœ¿çš -
Date
ïŒæ¥ä»ïŒ: æ¥ä»ãæ±ããšãã«äœ¿çš -
Boolean
ïŒè«çåïŒ: çåœå€ïŒTrue/FalseïŒãæ±ããšãã«äœ¿çš -
Variant
ïŒä»»æã®ããŒã¿åïŒ: ããŒã¿åãäžæãªå Žåããè€æ°ã®ããŒã¿åãæ±ãå Žåã«äžæçã«äœ¿çšïŒéæšå¥šïŒ
å€æ°ã®å®£èšãšåæå®
å€æ°ã¯äœ¿çšåã«å¿
ã宣èšããŸããããå€æ°å®£èšã¯ãåºæ¬çã« Dim
ã¹ããŒãã¡ã³ãïŒVBAã®åŠçãåœä»€ã宣èšãªã©ãè¡ãããã®æ§æ: ããã°ã©ã ãæžããšãã®ã«ãŒã«ïŒã䜿ã£ãŠè¡ããŸããDim
ã¹ããŒãã¡ã³ãã¯å€æ°ãèšå®ããæã®åªæïŒå€æ°ãå©çšããããã®ããŒã¯ãŒãïŒãšèããŠãã ãããåºæ¬çãªå®£èšæ¹æ³ã¯ä»¥äžã®éãã§ãã
' å€æ°å®£èšã®å
Dim å€æ°å As ããŒã¿å
' äŸïŒ
Dim strName As String ' æåååã®å€æ°
Dim intAge As Long ' é·æŽæ°åã®å€æ°
Dim dblPrice As Double ' å粟床浮åå°æ°ç¹åã®å€æ°
åœåèŠåã®ãã¹ããã©ã¯ãã£ã¹
- ãã¬ãã£ãã¯ã¹ïŒåèªã®å
é ã«ã€ããæåïŒã§ããŒã¿åã瀺ãïŒãã³ã¬ãªã¢ã³èšæ³ïŒ
-
str
,int
,dbl
ãªã©ã®ããŒã¿åã®çç¥æå
-
- æ¥æ¬èªã§ãè±èªã§ãå¯ïŒæ¥åã«åãããŠéžæïŒ
- ããããããååãä»ãã
' è¯ãäŸ
Dim strCustomerName As String ' 顧客å
Dim intåŸæ¥å¡æ° As Long ' åŸæ¥å¡æ°
Dim dbl売äžéé¡ As Double ' 売äžéé¡
' æªãäŸ
Dim x As String ' å€æ°ã®çšéãäžæ確
Dim a1 As Long ' æå³ã®ãªãåœå
Dim data As Double ' å
·äœæ§ã«æ¬ ãã
è€æ°ã®å€æ°ã1è¡ã§å®£èš
' ã«ã³ãã§åºåã£ãŠè€æ°ã®å€æ°ã宣èšå¯èœ
Dim strName As String, intAge As Long, dblHeight As Double
è€æ°ã®å€æ°ã1è¡ã§å®£èšããå Žåã¯ãåå€æ°ã«ããŒã¿åãæ瀺ããŠãã ããã
äžèšã®ããã«ãæå³ããªãããŒã¿åã«ãªããŸãã
' 泚æïŒä»¥äžã®ããã«çç¥ããªãïŒAs String ãçç¥ïŒ
Dim strName, intAge As Long, dblHeight As Double
' strNameã¯æé»çã«Variantåãšãªã£ãŠããŸã
ãã³ã¬ãªã¢ã³èšæ³ã«ã€ããŠ
VBAã§ã¯ãå€æ°åã®å é ã«ããŒã¿åã瀺ããã¬ãã£ãã¯ã¹ïŒæ¥é èŸïŒãä»ããããã³ã¬ãªã¢ã³èšæ³ããäŒçµ±çã«åºã䜿ãããŠããŸãããäŸãã°ãæåååïŒStringïŒã®å€æ°ã«ã¯ãstrããæŽæ°åïŒLongïŒã®å€æ°ã«ã¯ãintããšãã£ããã¬ãã£ãã¯ã¹ãä»ããŸãã
' ãã³ã¬ãªã¢ã³èšæ³ã®äœ¿çšäŸ
Dim strUserName As String ' strã¯Stringåã瀺ã
strUserName = "ç°äž 倪é" ' ãŠãŒã¶ãŒåãæ ŒçŽ
Dim intUserAge As Long ' intã¯Longåã瀺ã
intUserAge = 20 ' ãŠãŒã¶ãŒã®å¹Žéœ¢ãæ ŒçŽ
Dim blnLoggedIn As Boolean ' blnã¯Booleanåã瀺ã
blnLoggedIn = False ' ãã°ã€ã³ç¶æ
ãæ ŒçŽ
ãã³ã¬ãªã¢ã³èšæ³ã®ã¡ãªãã
- å€æ°ã®ããŒã¿åãäžç®ã§ããããããã³ãŒãã®å¯èªæ§ãåäžãã
- ç¹ã«å€§èŠæš¡ãªãããžã§ã¯ãããè€æ°ã®éçºè ãé¢ããå Žåã«ãå€æ°ã®åãééãããªã¹ã¯ãæžããããšãã§ãã
ãã³ã¬ãªã¢ã³èšæ³ã¯éæšå¥š
ãã³ã¬ãªã¢ã³èšæ³ã¯ä»¥äžã®çç±ã«ãããçŸä»£ã®ããã°ã©ãã³ã°ã§ã¯æšå¥šãããªããªã£ãŠãããŸãã
- åæšè«ã匷åãª
IDE
ã®æ®åã«ãããåæ å ±ãå€æ°åã«å«ããå¿ èŠæ§ãäœäž
(IDE
: ããã°ã©ãã³ã°ãå¹ççã«è¡ãããã«äœãããç·åçãªéçºç°å¢ãã³ãŒãã®è£å®ãèªåãã§ãã¯æ©èœãªã©ãåãããœãããŠã§ã¢) - å€æ°ã®åãå€æŽãããå Žåãå€æ°åãå€æŽããå¿ èŠããã
çŸä»£çãªããã°ã©ãã³ã°ã§ã¯ãå€æ°ã®åœ¹å²ãç®çãæ確ã«è¡šçŸããåœåãéèŠããåŸåã«ãããŸãã
ãã³ã¬ãªã¢ã³èšæ³ãVBAã§åºã䜿çšãããŠããçç±
-
æŽå²çãªçµç·¯
VBïŒVisual Basicã®ç¥ã§ãMicrosoftãéçºããããã°ã©ãã³ã°èšèªïŒã§ã¯ããã³ã¬ãªã¢ã³èšæ³ãæšå¥šãããŠããããã®åœ±é¿ãVBAã«ãæ®ã£ãŠããŸãã -
æ¢åã®ã³ãŒãããŒã¹ãšã®äžè²«æ§
å€ãã®æ¢åã®VBAã³ãŒãããã³ã¬ãªã¢ã³èšæ³ã䜿çšããŠãããããäºææ§ãä¿ã€ããã«çŸåšã䜿çšãããŠããŸãã -
VBAã®éçºç°å¢ã®ç¹æ§
VBAã®éçºç°å¢ïŒVBEïŒã¯ãæ¯èŒçæ°ããIDE
ã«æ¯ã¹ãŠãåæšè«ãã³ãŒãè£å®ã®æ©èœãéå®çã§ãããã®ããããã³ã¬ãªã¢ã³èšæ³ãã圹ç«ã€å ŽåããããŸãã
VBAã§ãã䜿çšããããã¬ãã£ãã¯ã¹ïŒæ¥é èŸïŒã®äŸ
' åºæ¬çãªããŒã¿å
Dim stråå As String ' str: æååå
Dim int幎霢 As Long ' int: æŽæ°å
Dim dbläŸ¡æ Œ As Double ' dbl: å°æ°ç¹æ°å
Dim blnç¢ºèª As Boolean ' bln: è«çå
' Excelãªããžã§ã¯ã
Dim wbäœæ¥ç°¿ As Workbook ' wb: ããã¯
Dim ws売äžè¡š As Worksheet ' ws: ã·ãŒã
Dim rngéžæç¯å² As Range ' rng: ç¯å²
å€æ°åã®åœåèŠåã®éèŠæ§
ãã³ã¬ãªã¢ã³èšæ³ã¯ãåºã䜿çšãããŠããããšãããããã¹ããã©ã¯ãã£ã¹ã«ç§ã¯èšèŒããŠãããŸãã
ããããçŸä»£ã®ãã°ã©ãã³ã°ã§ã¯ãéæšå¥šã§ãã
ãã³ã¬ãªã¢ã³èšæ³ã®æ¯éã¯ããŠãããæãéèŠãªã®ã¯ãäžè²«ããåœåèŠåã䜿çšããå¯èªæ§ãšä¿å®æ§ãç¶æããããšã§ããé©åãªå€æ°åãã€ããããšã§ãã³ãŒãã®æå³ãæ確ã«ãªããåŸããèŠçŽãéãããŒã ã§ã®éçºæã«ç解ãããããªããŸãã
æ¢åã®VBAã³ãŒããããã³ã¬ãªã¢ã³èšæ³ã䜿ãããŠããªãã³ãŒãã§ããã°ããã£ã¡ã«ã±ãŒã¹ïŒåèªã®å
é ã倧æåã«ããèšæ³ïŒäŸ userName
ïŒã䜿çšããããæ¥æ¬èªã®å€æ°åã䜿çšããŠãè¯ãã§ãããã
å€æ°åã®åœåãã€ã³ã
- å€æ°ã®çšéãåããå ·äœçãªååãã€ãã
- äžè²«æ§ã®ããåœåèŠåã䜿çšãã
- ããŸãã«çããããé·ããããããååã¯é¿ãã
- ããŒã å ã§çµ±äžãããåœåèŠåã䜿çšãã
åœåèŠåïŒãã£ã¡ã«ã±ãŒã¹ãªã©ïŒã«ã€ããŠã以äžã®ç§ã®èšäºã§ãŸãšããŠãããŸãã
ð«åœåèŠåã§æ©ãŸãªãïŒ åå¿è
ã®ããã®åœåèŠåã¬ã€ãð¡
ãã²ãã芧ãã ããã
åå®çŸ©ã»å€æ°ã®å®£èšãããªãããšã«ããäžå ·å
åå®çŸ©
äºæãã¬æŒç®çµæ
Sub ååã³ãŒãçµåäŸ()
' åãå®çŸ©ããªãå Žå
Dim åååºå, é£çª ' æé»çã«Variantå
åååºå = 100
é£çª = 101
' æ°å€ã®å ç®ãšããŠåŠçãããŠããŸã
MsgBox åååºå + é£çª ' çµæïŒ201ïŒ100 + 101 ãšããŠèšç®ãããïŒ
' æåååãšããŠå®çŸ©ããå Žå
Dim stråååºå As String, stré£çª As String
stråååºå = 100
stré£çª = 101
' æååã®çµåãšããŠæ£ããåŠçããã
MsgBox stråååºå & stré£çª ' çµæïŒ"100001"ïŒæå³ããååã³ãŒãïŒ
End Sub
ãã®ããã«ãåãæ瀺çã«å®çŸ©ããªãããšã§ãäºæãã¬æŒç®çµæã«ãªãå¯èœæ§ããããŸãããã®ãããå€æ°ã䜿çšããéã¯é©åãªåãå®çŸ©ããããšãéèŠã§ãã
ãŸããå€æ°ã®ããŒã¿åãæ瀺ãããŠããªããããã³ãŒãã®å¯èªæ§ãäœäžããŸããããã¯ãåŸããã³ãŒããèŠçŽãéã«ãå€æ°ã®åœ¹å²ãç解ããããšãå°é£ã«ããŸãã
ã¡ã¢ãªäœ¿çšã®éå¹çå
' åãå®çŸ©ããªãå ŽåïŒæé»çã«VariantåãšãªãïŒ
Dim æ°å€ ' ã¡ã¢ãªã16ãã€ã䜿çš
æ°å€ = 10
' åãå®çŸ©ããå Žå
Dim æ°å€ As Long ' ã¡ã¢ãªã4ãã€ã䜿çš
æ°å€ = 10
Variantåã¯åŠçé床ãé ããã¡ã¢ãªãå€ã䜿çšããŸããç¹ã«å€§éã®ããŒã¿ãæ±ãå Žåããç¹°ãè¿ãåŠçãè¡ãå Žåã¯ãé©åãªåãå®çŸ©ããããšã§ãã¡ã¢ãªäœ¿çšéãæããåŠçé床ãåäžãããããšãã§ããŸãã
詳现ãªããŒã¿åãšã¡ã¢ãªäœ¿çšéã«ã€ããŠã¯ãMicrosoftã®å ¬åŒããã¥ã¡ã³ãããåç §ãã ããã
å€æ°ã®å®£èš
å®ã¯ãVBAã§ã¯å€æ°ã宣èšããã«äœ¿çšããããšãã§ããŸããããããããã¯äžèŠäŸ¿å©ã«èŠããŸãããäºæãã¬ãã°ãåŒãèµ·ããåå ãšãªããããé¿ããã¹ãã§ãã
Sub åå®çŸ©ãªã()
Filename = "data.xlsx" ' å€æ°ã®å®£èšãªãã§äœ¿çš
MsgBox Filename
End Sub
äžèšã¯ãšã©ãŒãªãåäœããŸãããå€æ° fileName
ã¯å®£èšããã«äœ¿çšããŠãããããæé»çã« Variant
åãšããŠæ±ãããŸãããã®ãããåå®çŸ©ãããªãããšã«ããäžå
·åããçºçããå¯èœæ§ããããŸãã
ãŸããå€æ°åã«ã¿ã€ããã¹ããã£ãå Žåãæ°ããå€æ°ãæé»çã«çæãããŠããŸããŸããããã¯æå³ããªãåäœãåŒãèµ·ããåå ãšãªããŸãã
Sub åå®çŸ©ãªã()
Filename = "data.xlsx" ' å€æ°ã®å®£èšãªãã§äœ¿çš
MsgBox Filenamae ' å€æ°åãã¿ã€ã
End Sub
äžèšã¯ãšã©ãŒãªãåäœããŸãããã¡ãã»ãŒãžããã¯ã¹ã«ã¯äœã衚瀺ãããŸãããããã¯ãFilename
ãšFilenamae
ãå¥ã®å€æ°ãšããŠæ±ãããŠããããã§ããFilenamae
ã¯æªå®çŸ©ã®æ°ããå€æ°ãšããŠèªåçã«äœæãããåæå€ïŒç©ºã®å€ïŒãèšå®ãããŠããŸãããã®ããã«ãå€æ°ã宣èšããã«äœ¿çšãããšãã¿ã€ããã¹ã«æ°ã¥ãã«ããããã°ã®çºèŠãé
ããåå ãšãªããŸãã
ãããã®åé¡ã¯ãåé ã§èª¬æããOption Explicit
ã䜿çšããããšã§é²ãããšãã§ããŸããOption Explicit
ãèšå®ããŠããã°ãæªå®£èšã®å€æ°ã䜿çšããæç¹ã§ã³ã³ãã€ã«ãšã©ãŒãšãªããæ©æã«ãã°ãçºèŠã§ããŸãã
å€æ°ã®ã¹ã³ãŒãèšå®
å€æ°ã®ã¹ã³ãŒããšã¯ããã®å€æ°ã䜿çšå¯èœãªç¯å²ã®ããšã§ããé©åãªã¹ã³ãŒãèšå®ã«ãããå€æ°ã®ç®¡çã容æã«ãªãããã°ã®é²æ¢ã«ãã€ãªãããŸãã
ã¹ã³ãŒãã®çš®é¡
-
ããã·ãŒãžã£ã¬ãã«ïŒSubå ã®ã¿ïŒ
'ãã¢ãžã¥ãŒã«1ã Sub äŸé¡A1() Dim localVar As String ' ãã®Subå ã§ã®ã¿äœ¿çšå¯èœ localVar = "ããŒã«ã«å€æ°" MsgBox localVar ' ã¡ãã»ãŒãžããã¯ã¹ã«è¡šç€ºããã End Sub Sub äŸé¡A2() MsgBox localVar ' ã¡ãã»ãŒãžããã¯ã¹ã«è¡šç€ºãããªã End Sub 'ãã¢ãžã¥ãŒã«2ã Sub äŸé¡A3() MsgBox localVar ' ãšã©ãŒã«ãªã End Sub
ããã·ãŒãžã£ã¬ãã«ã®å€æ°ã¯ã宣èšãããSubïŒãŸãã¯FunctionïŒå ã§ã®ã¿äœ¿çšã§ããæãéå®çãªã¹ã³ãŒãã§ãã
Dim
ã¹ããŒãã¡ã³ãã§å®£èšãããã®ããã·ãŒãžã£ãçµäºãããšå€æ°ã¯ç Žæ£ãããŸããäžæçãªå€ã®ä¿æã«æé©ã§ãä»ã®ããã·ãŒãžã£ã«åœ±é¿ãäžããããšããªããããæãå®å šãªå€æ°å®£èšæ¹æ³ã§ããäŸã®ããã«ãäŸé¡A1()
ã§å®£èšããå€æ°ã¯ãä»ã®ããã·ãŒãžã£ïŒäŸé¡A2()
ãäŸé¡A3()
ïŒããã¯ã¢ã¯ã»ã¹ã§ããŸããã -
ã¢ãžã¥ãŒã«ã¬ãã«ïŒã¢ãžã¥ãŒã«å ã§å ±æïŒ
Private
ïŒãã©ã€ããŒãïŒ: 宣èšããã¢ãžã¥ãŒã«å ã ãã§äœ¿çšå¯èœ'ãã¢ãžã¥ãŒã«1ã Option Explicit Private moduleVar As String ' ã¢ãžã¥ãŒã«å ã®ãã¹ãŠã®Subã§äœ¿çšå¯èœ Sub äŸé¡B1() moduleVar = "ã¢ãžã¥ãŒã«å€æ°" MsgBox moduleVar ' ã¡ãã»ãŒãžããã¯ã¹ã«è¡šç€ºããã End Sub Sub äŸé¡B2() ' äŸé¡B1ã§èšå®ããå€ã䜿çšå¯èœ MsgBox moduleVar ' ã¡ãã»ãŒãžããã¯ã¹ã«è¡šç€ºããã End Sub 'ãã¢ãžã¥ãŒã«2ã Sub äŸé¡B3() MsgBox moduleVar ' ã¡ãã»ãŒãžããã¯ã¹ã«è¡šç€ºãããªã End Sub
ã¢ãžã¥ãŒã«ã¬ãã«ã®å€æ°ã¯ããã®ã¢ãžã¥ãŒã«å ã®ãã¹ãŠã®ããã·ãŒãžã£ããåç §ã§ããŸãã
Private
ã¹ããŒãã¡ã³ãã䜿çšããŠå®£èšããã¢ãžã¥ãŒã«ãéããŠããéã¯å€ãä¿æãããŸããåãã¢ãžã¥ãŒã«å ã®è€æ°ã®ããã·ãŒãžã£ã§å ±æãããå€ãããå Žåã«äŸ¿å©ã§ããäŸã®ããã«ãäŸé¡B1()
ã§èšå®ããå€ãäŸé¡B2()
ã§åç §ã§ããŸãããå¥ã¢ãžã¥ãŒã«ã®äŸé¡B3()
ããã¯åç §ã§ããŸããããŸããããã·ãŒãžã£ã®å€ã§
Dim
ã¹ããŒãã¡ã³ãã䜿ã£ãŠå€æ°ã宣èšããå Žåãèªåçã«Private
å±æ§ãèšå®ãããŸããã€ãŸããäžèšã®ããã«èšèŒããŠããPrivate moduleVar As String
ãšå®£èšããå Žåãšåãããã«æ±ãããŸãã(äžèšã®ã³ãŒããšåãã«ãªããŸãã)'ãã¢ãžã¥ãŒã«1ã Option Explicit ' èªåçã«Privateå±æ§ãèšå®ããã Dim moduleVar As String ' 以äžãåäž
ããããå¯èªæ§ãèæ ®ãããšãäžèšã®çç±ã§
Private
ãæèšããããšãæšå¥šããŸãã- ã³ãŒãã®æå³ãæ確ã«ãªã
- ä»ã®éçºè ãã³ãŒããèªãéã«å€æ°ã®ã¹ã³ãŒããäžç®ã§åãã
- å°æ¥çãªã³ãŒãã®ã¡ã³ããã³ã¹æ§ãåäžãã
-
ã°ããŒãã«ã¬ãã«ïŒãã¹ãŠã®ã¢ãžã¥ãŒã«ã§å ±æïŒ
Public
ïŒãããªãã¯ïŒ: å šãŠã®ã¢ãžã¥ãŒã«ã§äœ¿çšå¯èœ'ãã¢ãžã¥ãŒã«1ã Option Explicit Public globalVar As String ' ãã¹ãŠã®ã¢ãžã¥ãŒã«ã§äœ¿çšå¯èœ Sub äŸé¡C1() globalVar = "ã°ããŒãã«å€æ°" MsgBox globalVar ' ã¡ãã»ãŒãžããã¯ã¹ã«è¡šç€ºããã End Sub Sub äŸC2() ' äŸé¡C1ã§èšå®ããå€ã䜿çšå¯èœ MsgBox globalVar ' ã¡ãã»ãŒãžããã¯ã¹ã«è¡šç€ºããã End Sub 'ãã¢ãžã¥ãŒã«2ã Sub äŸé¡C3() MsgBox globalVar ' ã¡ãã»ãŒãžããã¯ã¹ã«è¡šç€ºããã End Sub
ã°ããŒãã«ã¬ãã«ã®å€æ°ã¯ãVBAãããžã§ã¯ãå ã®ãã¹ãŠã®ã¢ãžã¥ãŒã«ããã¢ã¯ã»ã¹ã§ããŸãã
Public
ã¹ããŒãã¡ã³ãã䜿çšããŠå®£èšãããããžã§ã¯ãå šäœã§å€ãå ±æããå¿ èŠãããå Žåã«äœ¿çšããŸããäŸã®ããã«ãäŸé¡C1()
ã§èšå®ããå€ããåãã¢ãžã¥ãŒã«ã®äŸé¡C2()
ã ãã§ãªããå¥ã¢ãžã¥ãŒã«ã®äŸé¡C3()
ãããåç §ããããšãã§ããŸãããã ããã°ããŒãã«å€æ°ã®äœ¿çšã¯ãã³ãŒãã®äŸåé¢ä¿ãè€éã«ããå¯èœæ§ããããããå¿ èŠæå°éã«æããããšããå§ãããŸãã
ã°ããŒãã«å€æ°ã®åé¡ç¹ã³ãŒãäŸ
'ãã¢ãžã¥ãŒã«1ã
Option Explicit
' ã°ããŒãã«å€æ°ãšããŠåèšéé¡ã宣èš
Public globalTotal As Long
Sub ååAã®éé¡ãå ç®()
' ååAã®éé¡ãèšç®
Dim itemAPrice As Long
itemAPrice = 1000
' ã°ããŒãã«å€æ°ã®åèšéé¡ã«å ç®
globalTotal = globalTotal + itemAPrice
End Sub
'ãã¢ãžã¥ãŒã«2ã
Sub ååBã®éé¡ãå ç®()
' ååBã®éé¡ãèšç®
Dim itemBPrice As Long
itemBPrice = 2000
' ã°ããŒãã«å€æ°ã®åèšéé¡ã«å ç®
globalTotal = globalTotal + itemBPrice
End Sub
'ãã¢ãžã¥ãŒã«3ã
Sub åèšéé¡ã衚瀺()
MsgBox "åèšéé¡ã¯" & globalTotal & "åã§ãã"
End Sub
'ãã¢ãžã¥ãŒã«4ã
Sub åæååŠç()
' ã°ããŒãã«å€æ°ã®åèšéé¡ãåæå
globalTotal = 0
End Sub
äžèŠãããšããã®ããã°ã©ã ã¯æ£ããåäœããããã«èŠããŸãããããã以äžã®ãããªé倧ãªåé¡ãæœãã§ããŸãã
-
å®è¡é åºã®äŸåæ§
- åæååŠçãå®è¡ãå¿ãããšãååã®å®è¡æã®å€ãæ®ã£ããŸãŸèšç®ãå§ãŸã
- åã¢ãžã¥ãŒã«ã®åŠçé åºãå€ãããšãèšç®çµæãå€ãã
-
ãããã°ã®å°é£ã
- ã©ã®ã¢ãžã¥ãŒã«ã§å€ãå€æŽãããã®ã远跡ãé£ãã
- è€æ°ã®åŠçã§åãå€æ°ã䜿çšããããããã°ã®åå ç¹å®ãå°é£
-
äºæãã¬å€ã®å€æŽ
- ä»ã®ã¢ãžã¥ãŒã«ã§æå³ããã«å€ãå€æŽãããå¯èœæ§ããã
- ãšã©ãŒåŠçãè€éã«ãªã
ãã®ãããªåé¡ãé²ããããã§ããã ãããŒã«ã«å€æ°ãã¢ãžã¥ãŒã«å€æ°ã䜿çšããåŠççµæã¯æ»ãå€ãšããŠè¿ãããšããå§ãããŸãã
ã°ããŒãã«å€æ°ã®äœ¿çšã¯æå°éã«
- ãããã°ãå°é£ã«ãªã
- ã³ãŒãã®ä¿å®æ§ãäœäžãã
- äºæãã¬ãã°ã®åå ãšãªã
ã¹ã³ãŒããçãèšå®ããããšã§ãå€æ°ã®äžæ£ã¢ã¯ã»ã¹ãé²ããã³ãŒãã®æå³ãã¬å€æŽãé²ããŸãã
å¯èœãªéããå¿ èŠæå°éã®ã¹ã³ãŒãã§å€æ°ã宣èšããããšããå§ãããŸãã
ã¹ã³ãŒãã®çš®é¡ãŸãšã
ã¹ã³ãŒã | 説æ | 宣èšæã®ããŒã¯ãŒã |
---|---|---|
ããŒã«ã«å€æ° | ç¹å®ã®ããã·ãŒãžã£ïŒSubããŸãã¯FunctionïŒå ã§ã®ã¿æå¹ãªå€æ° | Dim |
ã¢ãžã¥ãŒã«å€æ° | ã¢ãžã¥ãŒã«å šäœã§æå¹ãªå€æ° | Private |
ã°ããŒãã«å€æ° | ãã¹ãŠã®ã¢ãžã¥ãŒã«ããåç §å¯èœãªå€æ° | Public |
ãªããžã§ã¯ãå€æ°ã®ä»£å ¥ã«ã€ããŠ
VBAã§ã¯ãWorksheetãªã©ã®ãªããžã§ã¯ããå€æ°ã«ä»£å
¥ããå Žåãå¿
ã Set
ã¹ããŒãã¡ã³ãã䜿çšããå¿
èŠããããŸãã
ãªããžã§ã¯ãå€æ°ã®åºæ¬
' Worksheetãªããžã§ã¯ããæ ŒçŽããå€æ°ã宣èš
Dim ws As Worksheet
' æ£ãã代å
¥æ¹æ³ïŒSetã䜿çšïŒ
Set ws = ThisWorkbook.Sheets("Sheet1") ' ã·ãŒããªããžã§ã¯ããå€æ°ã«ä»£å
¥
' 誀ã£ã代å
¥æ¹æ³ïŒSetã䜿çšããªãïŒ
ws = ThisWorkbook.Sheets("Sheet1") ' ã³ã³ãã€ã«ãšã©ãŒã«ãªã
ãªããžã§ã¯ãå€æ°ã®æŽ»çšäŸ
Sub ã·ãŒãæäœäŸ()
' ã·ãŒããªããžã§ã¯ããæ ŒçŽããå€æ°ã宣èš
Dim wsäœæ¥ã·ãŒã As Worksheet
' Setã䜿çšããŠã·ãŒããå€æ°ã«ä»£å
¥
Set wsäœæ¥ã·ãŒã = ThisWorkbook.Sheets("売äžããŒã¿")
' 代å
¥ããã·ãŒããªããžã§ã¯ãã䜿çšããŠæäœ
wsäœæ¥ã·ãŒã.Range("A1").Value = "ååå" ' A1ã»ã«ã«ãåååããå
¥å
wsäœæ¥ã·ãŒã.Range("B1").Value = "åæ°" ' B1ã»ã«ã«ãåæ°ããå
¥å
End Sub
å®æ°ã®æŽ»çš
å€æ°ã¯ããã®åã®éãå€ãå€åããïŒå€ããæ°ïŒãã®ãæ±ãããã«äœ¿çšããŸãã
äžæ¹ãå®æ°ã¯ãããã°ã©ã å
ã§å€æŽãããªãå€ãå®çŸ©ããããã«äœ¿çšããŸããå®æ°ã¯ãConst
ã¹ããŒãã¡ã³ãã䜿çšããŠå®£èšããŸãã
å®æ°ã®ã¡ãªãã
- ã³ãŒãã®å¯èªæ§åäž
- å€ã®äžæ¬å€æŽã容æ
- ã¿ã€ããã¹ã®é²æ¢
- ã¡ã³ããã³ã¹æ§ã»åå©çšæ§ã®åäž
å®æ°ã®å®£èšæ¹æ³
' å®æ°ã®åºæ¬çãªå®£èš
Const å®æ°å As ããŒã¿å = å€
' äŸïŒ
Const TAX_RATE As Double = 0.1 ' æ¶è²»çšç
Const MAX_ROWS As Long = 1000 ' æ倧è¡æ°
Const FILE_PATH As String = "C:\data\" ' ãã¡ã€ã«ãã¹
æ¶è²»çšçã®ãããªå€æŽã®å¯èœæ§ãããå€ã¯ãå®æ°ãšããŠäžãæã§å®çŸ©ãããšãä¿®æ£ã1ãæã§æžãã®ã§äŸ¿å©ã§ãïŒ
å€æ°ãšå®æ°ã®äœ¿ãåã
åºå | å€æ° | å®æ° |
---|---|---|
å®çŸ© | ããã°ã©ã å®è¡äžã«å€ãå€æŽã§ãã | ããã°ã©ã å®è¡äžã«å€ãå€æŽã§ããªã |
å®£èš |
Dim ã¹ããŒãã¡ã³ã |
Const ã¹ããŒãã¡ã³ã |
䜿çšäŸ | èšç®éäžã®å€ããŠãŒã¶ãŒå ¥åå€ãã«ãŠã³ã¿ãŒç | çšçããã¡ã€ã«ãã¹ãæå€§å€ |
åºæ¬çã«ã¯ãå€ãå€æŽãããå¯èœæ§ãããå Žåã¯å€æ°ã䜿çšããå€ãåºå®ãããŠããå Žåã¯å®æ°ã䜿çšããŸãã
ãŸãšã
å€æ°ã¯äžæçã«ããŒã¿ãä¿åããããã®éèŠãªèŠçŽ ã§ããããã®äœ¿ãæ¹æ¬¡ç¬¬ã§VBAããã°ã©ã ã®å¹çãä¿¡é Œæ§ã倧ããåäžããŸããç¹ã«ãOption Explicit
ã掻çšããããšã§ãæªå®£èšã®å€æ°äœ¿çšã«ãããã°ãé²ããããã°ã©ã ã®å質ãé«ããããšãã§ããŸãããŸããå€æ°ã®ã¹ã³ãŒãããã£ãããšç解ããããšã§ãå€æ°ã®é©åãªç®¡çã容æã«ãªããäžèŠãªãã°ãé²ãããšãã§ããã§ããããããã«ãå®æ°ã®å©çšã¯åºå®å€ã®ç®¡çã楜ã«ããã¡ã³ããã³ã¹æ§ãåäžãããã®ã§ãããã°ã©ã å
šäœã®äžè²«æ§ãä¿ã€ããã«ã¯éåžžã«æå¹ã§ãã
ããèšäºã®å 容ã§äžæãªç¹ãããã詳ããç¥ãããéšåããããŸããããã³ã¡ã³ãã§ãç¥ãããã ããããŸããå®åã§ã®çµéšããã¹ããã©ã¯ãã£ã¹ãªã©ãããã²å ±æããŠããã ããã°å¹žãã§ãã
次åã¯ãã·ãŒãã®æäœãšæçµè¡ååŸã«çŠç¹ãåœãŠãVBAã®ææ³ã詳ãã解説ããäºå®ã§ããVBAã®ã·ãŒãæäœã«é¢ããç解ãæ·±ããå®åã§ã®æŽ»çšã«åœ¹ç«ãŠãŠããã ããã°ãšæããŸããã©ããã楜ãã¿ã«ïŒ