125
最強の Excel VBA 講座 業務効率化のプロが教える 基礎

最強のExcel VBA基礎コース レジュメ

  • View
    1.302

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 最強のExcel VBA基礎コース レジュメ

最強の Excel VBA 講座

業務効率化のプロが教える

基礎

Page 2: 最強のExcel VBA基礎コース レジュメ

イントロダクション

1

Page 3: 最強のExcel VBA基礎コース レジュメ

講師プロフィール

2

Page 4: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

講師プロフィール

V - C O NVBA Consulting

EX celercise

エクセル本舗

日本頭脳株式会社 代表取締役。ITコーディネータ、調理師。世界最大級のコンサルティングファームであるプライスウォーターハウスクーパース出身のたたき上げITコンサルタント。10年以上にわたり大企業向けの業務改革プロジェクトをリード。オフィスワークの生産性向上実現をコンセプトとして事業を展開している。

永井 雅明

業務改善コンサルティング

高度IT業務アウトソーシング

高度IT人材育成

Page 5: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

事業コンセプトイメージ

4

仕様策定から任せられる

日本頭脳の実力

V -CONVBA Consulting

Page 6: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

事業コンセプトイメージ

5

V -CONVBA Consulting

VBAで

業務にイノベーションを

Page 7: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

実績

6

✓業務改善コンサルタント歴15年。

✓プロジェクトマネージャー経験7回。

✓全社システム導入会社数10社。

✓システム規模最大6,000ユーザ。

✓画面設計数500以上。

✓データベース(テーブル)設計数1,500以上。

Page 8: 最強のExcel VBA基礎コース レジュメ

講座の進め方

7

Page 9: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

スパイラル学習

目的の処理

(

日本語)

VBAプログラム

(

機械語)

知識のインプット 実習(ワーク)

知識のインプット 実習(ワーク)

知識のインプット 実習(ワーク)

知識のインプット 実習(ワーク)

知識のインプット 実習(ワーク)

全体像を捉えながら、目的の処理を段階的に作成していくアプローチ

8

Page 10: 最強のExcel VBA基礎コース レジュメ

本日のスケジュール

9

1. イントロダクション 5分

2. 勤務表データチェック<前半戦> 60分 ワーク1:ボタンを作るワーク2:ボタンから処理を呼び出すワーク3:セルの色を変えるワーク4:処理から処理を呼び出すワーク5:分岐処理を行う

・・休憩・・ 5分

3. 勤務表データチェック<後半戦> 60分 ワーク6:引数・戻り値を理解する(1)ワーク7:繰り返し処理を行うワーク8:関数の使い方を理解するワーク9:動作確認

・・休憩・・ -

4. オプション講義 30分 ワーク10:変数を理解するワーク11:引数・戻り値を理解する(2)ワーク12:Withを使いこなす

5. ステップアップ講座のご案内・アンケート

10分

Page 11: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

講義中のルール

講義中の質問OK

疲れたら手を休めてOK

ついてこれない場合は休憩中にフォロー

トイレ休憩はご自由に

携帯電話・スマートフォンは音が鳴らないように

10

Page 12: 最強のExcel VBA基礎コース レジュメ

勤務表データチェック

<前半戦>

11

Page 13: 最強のExcel VBA基礎コース レジュメ

VBAを使って実現したいこと

12

Page 14: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

<全体像>勤務表データを確認しよう

<入力ルールを確認>• 時刻の時と分は「:」区切り 例)11:00• 開始時刻と終了時刻は「~」区切り 例) 9:30~14:00

13

時間帯の両側に文字が混入していないかチェックするプログラムを作成する

9:30~14:00

Page 15: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

<全体像>処理の内容を理解しよう

'*****************************************'* エラーチェック処理'*****************************************'最初に、セルの色をクリアする

'処理開始の確認メッセージを表示する'キャンセルされた場合は、処理を終了する

'勤務表シートのC5:M35範囲内で、セル1つずつ繰り返し処理を行う

'セルの値の有無により、分岐処理を行う'値がある場合

'セルの値を表示する'文字の両端が数値でない場合、セルの色を赤にする'それ以外の場合は、セルの色をクリアする

'値がない場合'セルの色を薄いグレーにする

勤務表データに、時間以外の文字が混入していないかチェックするエラーの場合は赤、空欄の場合は薄いグレーにし、エラーがない場合は色をクリアする

14

Page 16: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

<全体像>処理の流れを理解しよう

ボタンを配置

エラーチェック処理

15

Page 17: 最強のExcel VBA基礎コース レジュメ

プログラムを書く準備

16

Page 18: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

開発タブを表示する

「開発」タブが表示されていない

17

Page 19: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

開発タブを表示する

ファイル>オプション>リボンのユーザー設定

18

知識

「開発」にチェック

Page 20: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

VBEを表示する

Visual Basic

19

知識

Page 21: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

VBEを表示する

プロパティウィンドウ イミディエイトウィンドウ ローカルウィンドウ ウォッチウィンドウ

プロジェクトエクスプローラー(オブジェクトの一覧)

20

知識

Page 22: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

プログラムを書く場所を表示する(1)

ダブルクリック

21

Page 23: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

プログラムを書く場所を表示する(2)

22

Page 24: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

参考)モジュールの違い

▼オブジェクトにくっつく シートモジュール ブックモジュール フォームモジュール

↓イベントが起こせるエラー箇所を特定できない

▼オブジェクトにくっつかない 標準モジュール

オブジェクト指向の設計は不要インスタンス化できないスコープが広い

クラスモジュールオブジェクト指向の設計が必要インスタンス化できるスコープが狭い

初心者向き

プログラマー向き

イベントを起こすときに

使う

23

Page 25: 最強のExcel VBA基礎コース レジュメ

ワーク1:ボタンを作る

24

Page 26: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

ボタンを配置しよう

開発タブ>挿入>ボタン(フォーム コントロール)

25

左上

ワーク

Page 27: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

ボタンの形を作ろう

26

+アイコンが表示されるので、右下方向にドラッグする

ワーク

Page 28: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 27

マクロの登録

開発タブ>挿入>ボタン(フォーム コントロール)>マクロの登録>新規作成

ワーク

Page 29: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 28

2つの画面を意識しよう

Excel(表)

開発用の画面VBE

(Visual Basic Editor)

Page 30: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 29

ボタンのラベルを変更しよう

Excel>ボタンを右クリック>テキストの編集

ボタン以外のところをクリックすると、文字が確定する

ワーク

Page 31: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

シートモジュール

ブックモジュール

標準モジュール

30

参考)シート・ブック・標準モジュールの違い

使わない理由その1:Publicが使えないその2:エラー箇所が不明

Page 32: 最強のExcel VBA基礎コース レジュメ

ワーク2:ボタンから処理を呼び出す

31

Page 33: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

プロシージャとは

プロシージャ(Procedure)=ひとまとまりの処理

Function 処理名()・・・・・・・・・・・・・・・・・・・・・

End Function

Sub 処理名()・・・・・・・・・・・・・・・・・・・・・

End Sub

プロシージャは、標準プロシージャとイベントプロシージャに分類される。FunctionもSubも標準プロシージャに分類されるが、Subは適用範囲が狭い。

「Sub」は「Subroutine(サブルーチン)」の略で、戻り値を返せない片道切符の処理のこと。

半角スペース

32

知識

Page 34: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 33

ボタンクリック時の処理

Sub ボタン1_Click()

End Sub

何も書かれていない

ボタンをクリックしても、何も起きない

Page 35: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

メッセージを表示する

34

Msgbox “メッセージ”, 表示形式

vbOKCancel vbCritical vbYesNoCancel

※表示形式に何も入力しないと、OKボタンだけ表示される

ダブルクォーテーション

知識

Page 36: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 35

便利機能を活用しよう

カンマ「,」を入力した瞬間に、候補が表示される

↑↓で選んでTAB(またはダブルクリック)

MsgBox+スペースを入力すると、入力補助が表示される

知識

Page 37: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 36

メッセージを表示しよう

Sub ボタン1_Click()

MsgBox "処理を開始します。よろしいですか?", vbOKCancel

End Sub

書き終わったら、ボタンをクリックしてみよう

ワーク

Page 38: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 37

メッセージを表示しよう ワーク

Page 39: 最強のExcel VBA基礎コース レジュメ

ワーク3:セルの色を変える

38

Page 40: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

<全体像>処理の内容

'*****************************************'* エラーチェック処理'*****************************************'最初に、セルの色をクリアする

'処理開始の確認メッセージを表示する'キャンセルされた場合は、処理を終了する

'勤務表シートのC5:M35範囲内で、セル1つずつ繰り返し処理を行う

'セルの値の有無により、分岐処理を行う'値がある場合

'セルの値を表示する'文字の両端が数値でない場合、セルの色を赤にする'それ以外の場合は、セルの色をクリアする

'値がない場合'セルの色を薄いグレーにする

勤務表データに、時間以外の文字が混入していないかチェックするエラーの場合は赤、空欄の場合は薄いグレーにし、エラーがない場合は色をクリアする

39

Page 41: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 40

Functionを書いてみよう

Sub ボタン1_Click()MsgBox "処理を開始します。よろしいですか?", vbOKCancel

End Sub

'**********************************************'* エラーチェック処理'**********************************************Function エラーチェック処理()

End Function

ワーク

Page 42: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 41

コメントを書く

Sub ボタン1_Click()MsgBox "処理を開始します。よろしいですか?", vbOKCancel

End Sub

'**********************************************'* エラーチェック処理'**********************************************

知識

シングルクォーテーション「’」を付けるとコメントになる

例)

Page 43: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 42

コメントを書いてみよう

'**********************************************'* エラーチェック処理'**********************************************Function エラーチェック処理()

'最初に、セルの色をクリアするEnd Function

ワーク

Page 44: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 43

命令の仕方

どのシートの、どのセルの、何を、このように変えなさい

シート.セル.〇〇〇 = 値(色)

知識

Page 45: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 44

何を変えるのか

どのシート? Sheets(“シート名”)

どのセル?範囲を指定 Range(“範囲”)特定セルを指定 Cells(行番号,列番号)

何を変える?値を変えるなら Value色を変えるなら Interior.ColorIndex

Sheets(“シート名”). Range(“範囲”).Value

知識

どのシートの、どのセルの、何を、このように変えなさい

Page 46: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

セルの指定方法

セルの範囲指定方法は2種類ある

Range(“範囲”) Cells(行番号,列番号)

Range(“B2:C3”) Cells(2,3)

45

知識

行や列を順番に処理していくとき、数値だと足し算ができるので使いやすい

Excelシートの表示形式と同じ表示なので、ぱっと見てわかりやすい

Page 47: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 46

どう変えるのか

値を「100」に変える ~.Value=100

値を「あいう」に変える ~.Value=”あいう”

色を「赤」に変える ~.Interior.ColorIndex=3

色をクリアする ~.Interior.ColorIndex=0

色を「薄いグレー」に変える~.Interior.Color

=RGB(217, 217, 217)

知識

どのシートの、どのセルの、何を、このように変えなさい

Page 48: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

セルの色の変え方

色の指定方法は2種類ある

ColorIndex Color

黒 1白 2赤 3緑 4青 5:

47

知識

黒 RGB(0,0,0)白 RGB(255,255,255):

あらかじめ決められた色

自由に指定

Page 49: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 48

セルの色を変えてみよう

'**********************************************'* エラーチェック処理'**********************************************Function エラーチェック処理()

'最初に、セルの色をクリアするSheets("勤務表").Range("C5:M35").Interior.ColorIndex = 3

End Function

「3」「4」「5」など試してみる

ワーク

Page 50: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 49

プログラムを単独で実行してみよう

'**********************************************'* エラーチェック処理'**********************************************Function エラーチェック処理()

'最初に、セルの色をクリアするSheets("勤務表").Range("C5:M35").Interior.ColorIndex = 3

End Function

赤枠内のどこかをクリックして、F5を押す

ワーク

Page 51: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

補足)メニューボタン

実行(F5)

中止

「■」ボタンは、正しくは「リセット」という「Ctrl+Break」がない場合は、「Winロゴキー+U」から「スクリーンボード」を使って入力

中断

「F5」で実行、「Ctrl+Break」で中断、は覚えておく!

知識

Page 52: 最強のExcel VBA基礎コース レジュメ

ワーク4:処理から処理を呼び出す

51

Page 53: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

処理を呼び出す

Call 処理名

52

知識

Page 54: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 53

処理を呼び出してみよう

Sub ボタン1_Click()Call エラーチェック処理

End Sub

'**********************************************'* エラーチェック処理'**********************************************Function エラーチェック処理()

'最初に、セルの色をクリアするSheets("勤務表").Range("C5:M35").Interior.ColorIndex = 0

MsgBox "処理を開始します。よろしいですか?", vbOKCancelEnd Function

ボタンをクリックして確認!

ワーク

メッセージ表示処理を移動

「0」にする

Page 55: 最強のExcel VBA基礎コース レジュメ

ワーク5:分岐処理を行う

54

Page 56: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

<全体像>処理の内容

'*****************************************'* エラーチェック処理'*****************************************'最初に、セルの色をクリアする

'処理開始の確認メッセージを表示する'キャンセルされた場合は、処理を終了する

'勤務表シートのC5:M35範囲内で、セル1つずつ繰り返し処理を行う

'セルの値の有無により、分岐処理を行う'値がある場合

'セルの値を表示する'文字の両端が数値でない場合、セルの色を赤にする'それ以外の場合は、セルの色をクリアする

'値がない場合'セルの色を薄いグレーにする

勤務表データに、時間以外の文字が混入していないかチェックするエラーの場合は赤、空欄の場合は薄いグレーにし、エラーがない場合は色をクリアする

55

Page 57: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

分岐処理

分岐の書き方は2種類ある

If 条件 Then ・・・・・・・

Else・・・・・・・

End If

Select Case 変数Case 値1Case 値2Case Else

End Select

順位が3位以上ならメダルをください。

順位が1位なら金を、2位なら銀をください。

「If」は、値の大小を比較する場合なども含めて幅広く使用できる。「Select Case」は、値が一致する場合にのみ使用する。

知識

Page 58: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 57

条件の書き方

値が100の場合 .Value=100

値が100を超える場合 .Value>100

値が100以下の場合 .Value<=100

値がない場合 .Value=””

値がある場合 .Value<>””=値が空ではない場合

知識

空であることを示す

ノット・イコールを示す

Page 59: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 58

分岐処理を書いてみよう

Function エラーチェック処理()'最初に、セルの色をクリアするSheets("勤務表").Range("C5:M35").Interior.ColorIndex = 0

'勤務表シートのD5セルの値の有無により、分岐処理を行う'値がある場合

'値がない場合'セルの色を薄いグレーにする

End Function

• まずは、コメントで処理を書く• 終わったら、分岐処理だけ書く

ワーク

• 「勤務表シートのD5セルの値」は?• 値がない場合=値が空ではない場合

Page 60: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 59

分岐処理を書いてみよう

Function エラーチェック処理()'最初に、セルの色をクリアするSheets("勤務表").Range("C5:M35").Interior.ColorIndex = 0

'勤務表シートのD5セルの値の有無により、分岐処理を行う'値がある場合If Sheets("勤務表").Range(“D5").Value <> "" Then

‘セルの値を表示する

'値がない場合Else

'セルの色を薄いグレーにするEnd If

End Function

ワーク

Page 61: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

値の表示

Debug.Print 値

表示>イミディエイトウィンドウ

プログラムが正しく動いているかを確認するために、開発途中でよく使う

イミディエイトウィンドウ

知識

Page 62: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 61

セルの値を表示してみよう

Function エラーチェック処理()'最初に、セルの色をクリアするSheets("勤務表").Range("C5:M35").Interior.ColorIndex = 0

'勤務表シートのD5セルの値の有無により、分岐処理を行う'値がある場合If Sheets("勤務表").Range(“D5").Value <> "" Then

'セルの値を表示する

'値がない場合Else

'セルの色を薄いグレーにするEnd If

End Function

ワーク

Page 63: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 62

セルの値を表示してみよう

Function エラーチェック処理()'最初に、セルの色をクリアするSheets("勤務表").Range("C5:M35").Interior.ColorIndex = 0

'勤務表シートのD5セルの値の有無により、分岐処理を行う'値がある場合If Sheets("勤務表").Range(“D5").Value <> "" Then

‘セルの値を表示するDebug.Print Sheets("勤務表").Range(“D5").Value

'値がない場合Else

'セルの色を薄いグレーにするEnd If

End Function

ワーク

Page 64: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 63

セルの色を変えてみよう

Function エラーチェック処理()'最初に、セルの色をクリアするSheets("勤務表").Range("C5:M35").Interior.ColorIndex = 0

'勤務表シートのD5セルの値の有無により、分岐処理を行う'値がある場合If Sheets("勤務表").Range(“D5").Value <> "" Then

‘セルの値を表示するDebug.Print Sheets("勤務表").Range(“D5").Value

'値がない場合Else

'セルの色を薄いグレーにするEnd If

End Function

ここでは、「.Interior.Color」を使う薄いグレーはRGB(217, 217, 217)

ワーク

Page 65: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 64

セルの色を変えてみよう

Function エラーチェック処理()'最初に、セルの色をクリアするSheets("勤務表").Range("C5:M35").Interior.ColorIndex = 0

'勤務表シートのD5セルの値の有無により、分岐処理を行う'値がある場合If Sheets("勤務表").Range(“D5").Value <> "" Then

‘セルの値を表示するDebug.Print Sheets("勤務表").Range(“D5").Value

'値がない場合Else

'セルの色を薄いグレーにするSheets("勤務表").Range(“D5").Interior.Color = RGB(217, 217, 217)

End IfEnd Function

ワーク

Page 66: 最強のExcel VBA基礎コース レジュメ

65

B r e a k T i m e

Page 67: 最強のExcel VBA基礎コース レジュメ

勤務表データチェック

<後半戦>

66

Page 68: 最強のExcel VBA基礎コース レジュメ

ワーク6:引数・戻り値を理解する(1)

67

Page 69: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 68

引数・戻り値とは

引数(インプット)

戻り値(アウトプット)

処理

知識

Page 70: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 69

引数・戻り値の例

Today()なし 今日の日付

SUM(…)範囲 合計値

MsgBox(…)テキスト 押されたボタン

引数 戻り値処理

知識

Page 71: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 70

引数・戻り値の例

表示テキスト表示形式

引数 戻り値処理

MsgBox(…)

押されたボタンの値・OKをクリック

→1(vbOK)

・Cancelをクリック→2(vbCancel)

知識

Page 72: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 71

メッセージで選択された値を取得する

メッセージを表示するだけならMsgBox “メッセージ”, 表示形式

メッセージを表示して、さらに値を取得するならMsgBox(“メッセージ”, 表示形式)

OKをクリック →vbOK

Cancelをクリック →vbCancel

知識

Page 73: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 72

分岐処理とメッセージの組み合わせ

もし、メッセージの値が「キャンセル」なら、そのときは

・・・

以上

If MsgBox(“メッセージ”, 表示形式) = vbCancel Then

・・・

End If

知識

Page 74: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 73

復習)条件

値が100の場合 .Value=100

値が100を超える場合 .Value>100

値が100以下の場合 .Value<=100

値がない場合 .Value=””

値が空ではない場合 .Value<>””

知識

Page 75: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

<全体像>処理の内容

'*****************************************'* エラーチェック処理'*****************************************'最初に、セルの色をクリアする

'処理開始の確認メッセージを表示する'キャンセルされた場合は、処理を終了する

'勤務表シートのC5:M35範囲内で、セル1つずつ繰り返し処理を行う

'セルの値の有無により、分岐処理を行う'値がある場合

'セルの値を表示する'文字の両端が数値でない場合、セルの色を赤にする'それ以外の場合は、セルの色をクリアする

'値がない場合'セルの色を薄いグレーにする

勤務表データに、時間以外の文字が混入していないかチェックするエラーの場合は赤、空欄の場合は薄いグレーにし、エラーがない場合は色をクリアする

74

• メッセージを表示する• メッセージで選択された値を取得する• 値によって分岐処理をする

Page 76: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 75

メッセージによる分岐処理を書いてみよう

'**********************************************'* エラーチェック処理'**********************************************Function エラーチェック処理()

'最初に、セルの色をクリアするSheets("勤務表").Range("C5:M35").Interior.ColorIndex = 0

'処理開始の確認メッセージを表示する

:End Function

ワーク

Page 77: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 76

メッセージによる分岐処理を書いてみよう

'**********************************************'* エラーチェック処理'**********************************************Function エラーチェック処理()

'最初に、セルの色をクリアするSheets("勤務表").Range("C5:M35").Interior.ColorIndex = 0

'処理開始の確認メッセージを表示するIf MsgBox("処理を開始します。よろしいですか?", vbOKCancel) = vbCancel Then

End If:

End Function

ワーク

Page 78: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

処理の終了

Exit Function

Function 処理名()

Exit Function

End Function

これ以降の処理は実行されない

ここまでの処理は実行される

知識

Page 79: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 78

処理の終了を書いてみよう

'**********************************************'* エラーチェック処理'**********************************************Function エラーチェック処理()

'最初に、セルの色をクリアするSheets("勤務表").Range("C5:M35").Interior.ColorIndex = 0

'処理開始の確認メッセージを表示するIf MsgBox("処理を開始します。よろしいですか?", vbOKCancel) = vbCancel Then

'キャンセルされた場合は、処理を終了する

End If:

End Function

ワーク

Page 80: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 79

処理の終了を書いてみよう

'**********************************************'* エラーチェック処理'**********************************************Function エラーチェック処理()

'最初に、セルの色をクリアするSheets("勤務表").Range("C5:M35").Interior.ColorIndex = 0

'処理開始の確認メッセージを表示するIf MsgBox("処理を開始します。よろしいですか?", vbOKCancel) = vbCancel Then

'キャンセルされた場合は、処理を終了するExit Function

End If:

End Functionボタンクリックで確認

ワーク

Page 81: 最強のExcel VBA基礎コース レジュメ

ワーク7:繰り返し処理を行う

80

Page 82: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

<全体像>処理の内容

'*****************************************'* エラーチェック処理'*****************************************'最初に、セルの色をクリアする

'処理開始の確認メッセージを表示する'キャンセルされた場合は、処理を終了する

'勤務表シートのC5:M35範囲内で、セル1つずつ繰り返し処理を行う

'セルの値の有無により、分岐処理を行う'値がある場合

'セルの値を表示する'文字の両端が数値でない場合、セルの色を赤にする'それ以外の場合は、セルの色をクリアする

'値がない場合'セルの色を薄いグレーにする

勤務表データに、時間以外の文字が混入していないかチェックするエラーの場合は赤、空欄の場合は薄いグレーにし、エラーがない場合は色をクリアする

81

Page 83: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

繰り返し処理(ループ)

繰り返し処理の書き方は、大きく分けて2種類ある

For・・・・・・・・・・・・・・・・・・・・・

Next

Do While 実行条件・・・・・・・・・・・・・・・・・・・・・

Loop

1行目から10行目まで計算してください

行数が100未満の間はずっと計算してください

「Do While」は、指定した条件を満たさないと永遠に処理をし続けるという、いわゆる「無限ループ」を起こしやすいため、「For」のほうが安全性が高い。

82

知識

Page 84: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

繰り返し処理(ループ)

Forの書き方は2種類ある

For 始点 To 終点・・・・・・・・・・・・・・・・・・・・・

Next

For each 要素 In 範囲・・・・・・・・・・・・・・・・・・・・・

Next

1行目から10行目まで計算してください

A1:D8の中にあるセル1個ずつこの文書の中にある図形1個ずつ

「Do While」は、指定した条件を満たさないと永遠に処理をし続けるという、いわゆる「無限ループ」を起こしやすいため、「For」のほうが安全性が高い。

83

知識

Page 85: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 84

For each の使い方

‘勤務表シートのC5:M35範囲内で、セル1つずつ・・

For each cell In Sheets("勤務表").Range("C5:M35")・・・・・・・・・・・・・・・・・・・・・

Next

• 名前は何でもよい• 次々に値が変わっていくので「変数」という

cell

知識

Page 86: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 85

Forループを書いてみよう

Function エラーチェック処理():

'勤務表シートのC5:M35範囲内で、セル1つずつ繰り返し処理を行う'勤務表シートのD5セルの値の有無により、分岐処理を行う'値がある場合If Sheets("勤務表").Range("D5").Value <> "" Then

'セルの値を表示するDebug.Print Sheets("勤務表").Range("D5").Value

'値がない場合Else

'セルの色を薄いグレーにするSheets("勤務表").Range("D5").Interior.Color = RGB(217, 217, 217)

End IfEnd Function

ワーク

Page 87: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 86

Forループを書いてみよう

Function エラーチェック処理():

'勤務表シートのC5:M35範囲内で、セル1つずつ繰り返し処理を行うFor Each cell In Sheets("勤務表").Range("C5:M35")

'勤務表シートのD5セルの値の有無により、分岐処理を行う'値がある場合If Sheets("勤務表").Range("D5").Value <> "" Then

'セルの値を表示するDebug.Print Sheets("勤務表").Range("D5").Value

'値がない場合Else

'セルの色を薄いグレーにするSheets("勤務表").Range("D5").Interior.Color = RGB(217, 217, 217)

End IfNext

End Function

ワーク

Page 88: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 87

既存のプログラムを、Forループの中に入れてみよう

Function エラーチェック処理():

'勤務表シートのC5:M35範囲内で、セル1つずつ繰り返し処理を行うFor Each cell In Sheets("勤務表").Range("C5:M35")

'勤務表シートのD5セルの値の有無により、分岐処理を行う'値がある場合If Sheets("勤務表").Range("D5").Value <> "" Then

'セルの値を表示するDebug.Print Sheets("勤務表").Range("D5").Value

'値がない場合Else

'セルの色を薄いグレーにするSheets("勤務表").Range("D5").Interior.Color = RGB(217, 217, 217)

End IfNext

End Function

cell.Interior.ColorIndex

cell.Value

ワーク

Page 89: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 88

既存のプログラムを、Forループの中に入れてみよう

Function エラーチェック処理():

'勤務表シートのC5:M35範囲内で、セル1つずつ繰り返し処理を行うFor Each cell In Sheets("勤務表").Range("C5:M35")

'勤務表シートのD5セルの値の有無により、分岐処理を行う'値がある場合If cell.Value <> "" Then

'セルの値を表示するDebug.Print cell.Value

'値がない場合Else

'セルの色を薄いグレーにするcell.Interior.Color = RGB(217, 217, 217)

End IfNext

End Function

Sheets("勤務表").Range("D5") ↓

cell

コメントも修正しておこう

ワーク

Page 90: 最強のExcel VBA基礎コース レジュメ

ワーク8:関数の使い方を理解する

89

Page 91: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

<全体像>処理の内容

'*****************************************'* エラーチェック処理'*****************************************'最初に、セルの色をクリアする

'処理開始の確認メッセージを表示する'キャンセルされた場合は、処理を終了する

'勤務表シートのC5:M35範囲内で、セル1つずつ繰り返し処理を行う

'セルの値の有無により、分岐処理を行う'値がある場合

'セルの値を表示する'文字の両端が数値でない場合、セルの色を赤にする'それ以外の場合は、セルの色をクリアする

'値がない場合'セルの色を薄いグレーにする

勤務表データに、時間以外の文字が混入していないかチェックするエラーの場合は赤、空欄の場合は薄いグレーにし、エラーがない場合は色をクリアする

90

Page 92: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

さまざまな関数

91

左側から指定した文字数を抽出 Left(文字列,文字数)例)Left(“あいうえお”, 1) →戻り値「あ」

右側から指定した文字数を抽出 Right(文字列,文字数)例)Right(“あいうえお”, 1) →戻り値「お」

知識

質問1.セルの値(cell.Value)の左側から1文字、はどのように書けばよいですか?

質問2.セルの値(cell.Value)の右側から1文字、はどのように書けばよいですか?

Page 93: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

さまざまな関数

92

指定した値が数値かどうか判定 IsNumeric(値)例)IsNumeric(“あ”) →戻り値「False」例)IsNumeric(1) →戻り値「True」

知識

質問3.セルの値(cell.Value)の左側から1文字が数値かどうか、はどのように書けばよいですか?

質問4.セルの値(cell.Value)の左側から1文字が数値である場合、という分岐処理はどのように書けばよいですか?

正・誤を表す・・は「数値」で合っていますか?という意味

Page 94: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

条件の組み合わせ

93

AND(~かつ~)

If A = 1 And B = 1 ThenbError = True

End If

OR(~または~)

If A = 1 Or B = 1 ThenbError = True

End If

AもBも、両方とも1でないといけない

AとBのいずれか一方が1であればよい

組み合わせ方は2種類ある

知識

Page 95: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 94

条件を組み合わせてみよう

Function エラーチェック処理():

'セルの値の有無により、分岐処理を行う'値がある場合If cell.Value <> "" Then

'セルの値を表示するDebug.Print cell.Value

'文字の両端が数値でない場合、セルの色を赤にする

'それ以外の場合は、セルの色をクリアする

'値がない場合:

ワーク

まずは分岐処理(If~)だけ書いてみよう

Page 96: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 95

条件を組み合わせてみよう

Function エラーチェック処理():

'セルの値の有無により、分岐処理を行う'値がある場合If cell.Value <> "" Then

'セルの値を表示するDebug.Print cell.Value

'文字の両端が数値でない場合、セルの色を赤にするIf IsNumeric(Left(cell.Value, 1)) = False Or _

IsNumeric(Right(cell.Value, 1)) = False Then'それ以外の場合は、セルの色をクリアするElseEnd If

'値がない場合:

ワーク

Page 97: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 96

条件を組み合わせてみよう

Function エラーチェック処理():

'セルの値の有無により、分岐処理を行う'値がある場合If cell.Value <> "" Then

'セルの値を表示するDebug.Print cell.Value

'文字の両端が数値でない場合、セルの色を赤にするIf IsNumeric(Left(cell.Value, 1)) = False Or _

IsNumeric(Right(cell.Value, 1)) = False Then

'それ以外の場合は、セルの色をクリアするElse

End If

'値がない場合:

ワーク

.Interior.ColorIndexを使う(赤は3、クリアは0)

Page 98: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 97

条件を組み合わせてみよう

Function エラーチェック処理():

'セルの値の有無により、分岐処理を行う'値がある場合If cell.Value <> "" Then

'セルの値を表示するDebug.Print cell.Value

'文字の両端が数値でない場合、セルの色を赤にするIf IsNumeric(Left(cell.Value, 1)) = False Or _

IsNumeric(Right(cell.Value, 1)) = False Thencell.Interior.ColorIndex = 3

'それ以外の場合は、セルの色をクリアするElse

cell.Interior.ColorIndex = 0End If

'値がない場合:

ワーク

F5で確認

Page 99: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

完成したプログラム

Function エラーチェック処理()'最初に、セルの色をクリアするSheets("勤務表").Range("C5:M35").Interior.ColorIndex = 0

'処理開始の確認メッセージを表示するIf MsgBox("処理を開始します。よろしいですか?", vbOKCancel) = vbCancel Then

'キャンセルされた場合は、処理を終了するExit Function

End If

'勤務表シートのC5:M35範囲内で、セル1つずつ繰り返し処理を行うFor Each cell In Sheets("勤務表").Range("C5:M35")

'セルの値の有無により、分岐処理を行う'値がある場合If cell.Value <> "" Then

'セルの値を表示するDebug.Print cell.Value

'文字の両端が数値でない場合、セルの色を赤にするIf IsNumeric(Left(cell.Value, 1)) = False Or _

IsNumeric(Right(cell.Value, 1)) = False Thencell.Interior.ColorIndex = 3

‘その他の場合は、セルの色をクリアするElse

cell.Interior.ColorIndex = 0End If

'値がない場合Else

'セルの色を薄いグレーにするcell.Interior.Color = RGB(217, 217, 217)

End IfNext

End Function

98

Page 100: 最強のExcel VBA基礎コース レジュメ

ワーク9:動作確認

99

Page 101: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

チェックボタンをクリックしてみよう ワーク

Page 102: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 101

実行結果

もう一度ボタンを押すと、セルの色がクリアされる

データを修正してもう一度ボタンを押すと、赤色が表示されなくなる

Page 103: 最強のExcel VBA基礎コース レジュメ

102

B r e a k T i m e

Page 104: 最強のExcel VBA基礎コース レジュメ

オプション講義

103

Page 105: 最強のExcel VBA基礎コース レジュメ

ワーク10:変数を理解する

104

Page 106: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

変数とは

変数=値を格納する「箱」

String = 文字列

Integerは-32,768~32,767の整数を扱える。ちなみに、Excelで扱える最大行数は1,048,576 行( Excel2007以降)。

ちなみに「Dim」は「Dimension」の略で、FORTRAN言語の名残りと言われている。

Integer = 整数

Boolean = 正誤 Long = 超整数

「s」を文字列として使います→ Dim s As String (宣言)

「s」に値を入れます→ s = “文字です”

「s」を表示します→ MsgBox s

105

知識

Page 107: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 106

変数を使ってみよう①(String)

Function エラーチェック処理()'文字列を格納する箱「sCell」を宣言する

'勤務表シートのC5:M35範囲内で、セル1つずつ繰り返し処理を行うFor Each cell In Sheets("勤務表").Range("C5:M35")

‘sCellに、cell.Valueを格納する

‘以降、cell.Valueの代わりにsCellを使う

NextEnd Function

ワーク

Page 108: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 107

変数を使ってみよう① (String)

Function エラーチェック処理()‘文字列を格納する箱「sCell」を宣言するDim sCell As String

'勤務表シートのC5:M35範囲内で、セル1つずつ繰り返し処理を行うFor Each cell In Sheets("勤務表").Range("C5:M35")

‘sCellに、cell.Valueを格納するsCell = cell.Value

‘以降、cell.Valueの代わりにsCellを使うIf cell.Value <> "" Then

Debug.Print sCell

If IsNumeric(Left(sCell, 1)) = False Or _IsNumeric(Right(sCell, 1)) = False Then

:Next

End Function

ワーク

Page 109: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 108

変数を使ってみよう②(Boolean)

Function エラーチェック処理()Dim sCell As String‘正誤を格納する箱「bLeft」「bRight」を宣言する

'勤務表シートのC5:M35範囲内で、セル1つずつ繰り返し処理を行うFor Each cell In Sheets("勤務表").Range("C5:M35")

sCell = cell.Value

‘bLeftに、 IsNumeric(Left(sCell, 1))を格納する‘bRightに、 IsNumeric(Right(sCell, 1))を格納する

‘以降、IsNumeric~の代わりに、bLeftまたはbRightを使う

NextEnd Function

ワーク

Page 110: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 109

変数を使ってみよう②(Boolean)

Function エラーチェック処理()Dim sCell As StringDim bLeft As BooleanDim bRight As Boolean

'勤務表シートのC5:M35範囲内で、セル1つずつ繰り返し処理を行うFor Each cell In Sheets("勤務表").Range("C5:M35")

sCell = cell.ValuebLeft = IsNumeric(Left(sCell, 1))bRight = IsNumeric(Right(sCell, 1))

‘以降、IsNumeric~の代わりに、bLeftまたはbRightを使うIf cell.Value <> "" Then

:'文字の両端が数値でない場合、セルの色を赤にするIf bLeft = False Or bRight = False Then :

NextEnd Function

ワーク

Page 111: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 110

動作確認

ボタンを押して、動作が変わっていないことを確認しよう

Page 112: 最強のExcel VBA基礎コース レジュメ

ワーク11:引数・戻り値を理解する(2)

111

難しいけど頑張って理解しよう!

Page 113: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

やりたいこと

処理1

知識

処理を小分けにする(外に出す)

勤務表データチェック

処理2

処理3

利点1スッキリして見やすくなる

利点2処理を再利用できる

利点3エラーを特定しやすくなる

Page 114: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 113

やりたいこと 知識

色番号取得処理(呼び出される側)

エラーチェック処理(呼び出す側)

色を番号ではなく名称で指定できるように、「色番号取得処理」をつくる

色の名称“赤” ”緑”

色番号3 4

引数 戻り値

Page 115: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 114

引数と戻り値がある処理の書き方

Function 処理名(引数名 As 引数の型) As 戻り値の型

処理名 = 値

End Function

知識

例)Function getColor(sColor As String) As Integer

If sColor = “赤” ThengetColor = 3

End IfEnd Function

上記の処理を呼び出すとき)cell.Interior.ColorIndex = getColor(“赤")

「3」

戻り値として、何らかの値をセットする

戻り値として「3」をセットする

Page 116: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 115

Functionを書いてみよう

'**********************************************‘* 色番号取得処理'**********************************************Function getColor(sColor As String) As Integer

Select Case sColorCase "赤"

‘赤の場合は戻り値に3をセットするCase "緑"

‘緑の場合は戻り値に4をセットするCase "クリア"

‘クリアの場合は戻り値に0をセットするEnd Select

End Function

ワーク

処理名は「getColor」とする引数は、色名称(String型)とする戻り値は、色番号(Integer型)とする

Page 117: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 116

Functionを書いてみよう

'**********************************************‘* 色番号取得処理'**********************************************Function getColor(sColor As String) As Integer

Select Case sColorCase "赤"

getColor = 3Case "緑"

getColor = 4Case "クリア"

getColor = 0End Select

End Function

ワーク

処理名は「getColor」とする引数は、色名称(String型)とする戻り値は、色番号(Integer型)とする

Page 118: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 117

色番号取得処理を呼び出してみよう

Function エラーチェック処理():

'勤務表シートのC5:M35範囲内で、セル1つずつ繰り返し処理を行うFor Each cell In Sheets("勤務表").Range("C5:M35")

:'文字の両端が数値でない場合、セルの色を赤にするIf bLeft = False Or bRight = False Then

cell.Interior.ColorIndex = 3'その他の場合は、セルの色をクリアするElse

cell.Interior.ColorIndex = 0End If

:Next

End Function

ワーク

色を名称で指定してみよう

色を名称で指定してみよう

Page 119: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 118

色番号取得処理を呼び出してみよう

Function エラーチェック処理():

'勤務表シートのC5:M35範囲内で、セル1つずつ繰り返し処理を行うFor Each cell In Sheets("勤務表").Range("C5:M35")

:'文字の両端が数値でない場合、セルの色を赤にするIf bLeft = False Or bRight = False Then

cell.Interior.ColorIndex = getColor("赤")'その他の場合は、セルの色をクリアするElse

cell.Interior.ColorIndex = getColor("クリア")End If

:Next

End Function

ワーク

Page 120: 最強のExcel VBA基礎コース レジュメ

ワーク12:Withを使いこなす

119

Page 121: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

Withとは

120

繰り返し書くのが面倒なので、省略する方法

知識

勤務表シートのA1セルの値を「1」にする勤務表シートのA1セルの値を「2」にする勤務表シートのB1セルの値を「3」にする

With 勤務表シートA1セルの値を「1」にするA1セルの値を「2」にするB1セルの値を「3」にする

End With

Page 122: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

Withとは

121

繰り返し書くのが面倒なので、省略する方法

知識

Sheets(“勤務表”).Range(“A1”).Value = 1Sheets(“勤務表”).Range(“A1”).Value = 2Sheets(“勤務表”).Range(“B1”).Value = 3

With Sheets(“勤務表”).Range(“A1”).Value = 1.Range(“A1”).Value = 2.Range(“B1”).Value = 3

End With

「.」をつけ忘れずに!

Page 123: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved.

Withの入れ子構造(「ネスト」と言う)

122

知識

With Sheets(“勤務表”).Range(“A1”).Value = 1.Range(“A1”).Value = 2.Range(“B1”).Value = 3

End With

With Sheets(“勤務表”)With .Range(“A1”)

.Value = 1

.Value = 2End With.Range(“B1”).Value = 3

End With

Page 124: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 123

Withを使ってみよう

例)Function サンプル処理()

Sheets("勤務表").Range("C5").Interior.ColorIndex = 0

If Sheets("勤務表").Range("C5") <> "" ThenSheets("勤務表").Range("C5").Interior.ColorIndex = 4

ElseSheets("勤務表").Range("C5").Interior.ColorIndex = 0

End If

End Function

ワーク

Page 125: 最強のExcel VBA基礎コース レジュメ

Copyright © 日本頭脳株式会社 All rights reserved. 124

Withを使ってみよう

例)Function サンプル処理()

With Sheets("勤務表").Range("C5").Interior.ColorIndex = 0

If .Value <> "" Then.Interior.ColorIndex = 4

Else.Interior.ColorIndex = 0

End IfEnd With

End Function

ワーク