BEAGLE-HC 医薬品、医療機器の研究・開発 ポータルサイト
 現在位置 : HOME > ITの活用 プログラミング > Excel コードライブラリアン(プログラム制御)
くすりのこと
 治療薬の最前線
データブック
 ヘルスケア市場
 データブック
 (売上ランキング)
ニュース
 企業ニュース
 (パイプラインニュース)
 (財務・決算ニュース)
 (M&Aニュース)
 メディアニュース
ITの活用
 バリデーション
 セキュリティ
 WORD文書の作成
 プログラミング
 (Word/VBA)
 (Excel/VBA)
 (Access/VBA)
 (SAS)
 (SQL)
イベント
 イベントカレンダ
製薬会社研究
 製薬会社
 製薬会社研究
 決算短信一覧
 
 
 
記述の規則 開始・終了処理 プログラム制御 ファイル操作
ワークブック・シート操作 セル・行・列の操作 セルの書式設定 関数
ウィンドウ操作 グラフ操作 データベースの操作 印刷
サンプルプログラム      
 
Page Index
●ジャンプ(GoTo)
●実行の中断(Stop)
●強制終了(Exit)
●プロセジャーの終了(End)
●プロセジャーの呼び出し
●条件分岐(If...Then)
●条件分岐(If...Then...Else)
●条件分岐(If...Then...ElseIf)
●条件分岐(Select Case)
●繰り返し(ループ)処理(While):前判定型
●繰り返し(ループ)処理(Do...Loop):前判定型、後判定型
●繰り返し(ループ)処理(For...Next):前判定型
●繰り返し(ループ)処理(For Each...Next):前判定型
●再帰呼び出し(Recursive Call)
●午後 5 時に Procedure を実行する
●実行中のマクロを一定時間停止する
●現在時刻から 15 秒後に Procedure を実行する
●他のブック・シートのマクロの実行または関数の呼び出しを行う
●バッチファイルを実行する
●ブック内の指定されたモジュールを削除する
●ブック内のモジュールをエクスポートする
●ブック内のモジュールをインポートする
●長時間処理プログラムの雛形
 
本章では、プログラムを制御するVBA記述ルールと、コードサンプルを例示します。
 
ジャンプ(GoTo) ↑ このページの最初へ
GoTo ラベル名

ラベル名:
 
実行の中断(Stop) ↑ このページの最初へ
プログラムの実行を一時的に中断する。

Stop
 
強制終了(Exit) ↑ このページの最初へ
繰り返し処理やプロセジャーから抜ける。

Exit Do
Exit For
Exit Function
Exit Property
Exit Sub
 
プロセジャーの終了(End) ↑ このページの最初へ
プロセジャーやステートメントを終了させる。

End
End Function
End If
End Property
End Select
End Sub
End Type
End With
 
プロセジャーの呼び出し ↑ このページの最初へ
【呼び出しの制限】
Privatepロセジャーは同じモジュール内でのみ呼び出しが可能

【呼び出しの規則】
標準モジュールからクラスモジュールを呼び出す場合は、プロセジャーの前にクラスモジュール名を記述する。

ex.
クラスモジュールX.プロセジャーY
 
条件分岐(If...Then) ↑ このページの最初へ
If 条件文 Then 処理1     'コードが1つの場合

If 条件文 Then          'コードが複数の場合
  処理1
EndIf

ex.
If Counter < 20 Then Counte = 20
 
条件分岐(If...Then...Else) ↑ このページの最初へ
If 条件文 Then 処理1 Else 処理2     'コードが1つの場合

If 条件文 Then                   'コードが複数の場合
  処理1
Else
  処理2
EndIf
 
条件分岐(If...Then...ElseIf) ↑ このページの最初へ
If 条件文 Then
  処理1
ElseIf
  処理2
ElseIf
  処理3
Else
  処理4
EndIf
 
条件分岐(Select Case) ↑ このページの最初へ
Select Case 領域/条件文
 Case ケース1
   処理1
 Case ケース2
   処理2
End Select

ex.
Select Case A
 Case 10
   X=1
 Case 20
   X=2
End Select
 
繰り返し(ループ)処理(While) ↑ このページの最初へ
While 条件文
-- ここに繰り返す処理を書く --
Wend

ex.
While Counter < 20
-- ここに繰り返す処理を書く --
Wend
 
繰り返し(ループ)処理(Do...Loop) ↑ このページの最初へ
Do While 条件文
-- ここに繰り返す処理を書く --
Loop


Do
-- ここに繰り返す処理を書く --
Loop Until 条件文
 
繰り返し(ループ)処理(For...Next) ↑ このページの最初へ
For Counter = 1 To 20
-- ここに繰り返す処理を書く --
Next Counter
 
繰り返し(ループ)処理(For Each...Next) ↑ このページの最初へ
『コレクション』の各オブジェクトや『配列』の各要素に対して繰り返し処理を実行する

Dim ss As Range
For Each ss In ActiveSheet.UsedRange
  ss.Value = "使用範囲です"
Next
 
再帰呼び出し(Recursive Call) ↑ このページの最初へ
SubやFunctionの中から、さらに自分自身を呼び出すような処理ができます。再帰呼び出しを利用することで、複雑な処理を非常に単純なコードとして実現できる場合があります。下の例では、「Msgbox CC」を5回実行します。

ex.
Sub a()
    CountDown (5)
End Sub

Function CountDown(cc As Integer) As Integer
    If cc > 0 Then
        MsgBox cc
        CountDown = CountDown(cc - 1)
    Else
        MsgBox "ここまで"
    End If
End Function
 
午後 5 時に Procedure を実行する ↑ このページの最初へ
Application.OnTime TimeValue("17:00:00"), "my_Procedure"

上の OnTime メソッドの設定を取り消す
Application.OnTime TimeValue("17:00:00"), "my_Procedure",,False
 
実行中のマクロを一定時間停止する ↑ このページの最初へ
Application.Wait "18:23:00"

次の使用例は、実行中のマクロを約 10 秒間停止します。

newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 10
waitTime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait waitTime
 
現在時刻から 15 秒後に Procedure を実行する ↑ このページの最初へ
Application.OnTime Now + TimeValue("00:00:15"), "my_Procedure"
 
他のブック、シートマクロの実行または関数の呼び出しを行う ↑ このページの最初へ
例1
 Call File_Open("news_program.xls")          
'ファイルを開きます(Auto_Openは実行されません)
 Application.Run "news_program.xls!Main", 1     
'引数1が渡されます

例2
MYCUSTOM.XLM というマクロ シートで定義されている、My_Func_Sum という関数マクロを呼び出します。
マクロ シートは開かれている必要があります。
この関数には 2 つの数値引数があり、次の使用例では1 と 5 が渡されます。

 mySum = Application.Run("MYCUSTOM.XLM!My_Func_Sum", 1, 5)
 MsgBox "マクロの結果: " & mySum

例3
020補助簿.xls というブックのModule1というマクロ シートで定義されている、Import という関数マクロを呼び出します。
マクロ シートは開かれている必要はありません

Application.Run "020補助簿.xls!Module1.Import"
 
バッチファイルを実行する ↑ このページの最初へ
Dim myPath as String    'パス
Dim fileName as String  
 'バッチファイル

Set WSHShell = CreateObject("WScript.Shell")
WSHShell.Run """" & myPath & fileName & """", vbNormalFocus, True   
 ' FullPathで指定

Set WSHShell = Nothing
 
ブック内の指定されたモジュールを削除する ↑ このページの最初へ
Sub Delete_Module()
  Dim obj As Object

  For Each obj In ActiveWorkbook.VBProject.VBComponents
    If obj.Type = 1 And obj.Name = "Module11" Then
      ActiveWorkbook.VBProject.VBComponents.Remove obj
    End If
  Next obj

  Set obj = Nothing

End Sub

※参照設定が必要(パソコンにインストールされているライブラリを、VBAから使えるように参照する仕組み)
  「Microsoft Visual Basic for Application Extensibility」
※セキュリtyヒ設定が必要
  【ツール】−【マクロ】−【セキュリティ】−【信頼できる発行元】
   □Visual Basic プロジェクトへのアクセスを信頼する。 にチェック(レ)を入れる。
 
ブック内のモジュールをエクスポートする ↑ このページの最初へ
Sub Export_Module()
  Dim Obj As VBIDE.VBProject
  Dim ExpFile As String

  Set Obj = ThisWorkbook.VBProject
  ExpFile = ActiveWorkbook.Path & "\" & "Module1.bas"
  Obj.VBComponents("Module1").Export (ExpFile)

  Set Obj = Nothing

End Sub

※参照設定が必要(パソコンにインストールされているライブラリを、VBAから使えるように参照する仕組み)
  「Microsoft Visual Basic for Application Extensibility」
※セキュリtyヒ設定が必要
  【ツール】−【マクロ】−【セキュリティ】−【信頼できる発行元】
   □Visual Basic プロジェクトへのアクセスを信頼する。 にチェック(レ)を入れる。
 
ブック内のモジュールをインポートする ↑ このページの最初へ
Sub Import_Module()
  Dim Obj As VBIDE.VBProject
  Dim ImFile As String

  Set Obj = ThisWorkbook.VBProject
  ImFile = ActiveWorkbook.Path & "\" & "Module1.bas"
  Obj.VBComponents.Import ImFile

  Set Obj = Nothing

End Sub

※参照設定が必要(パソコンにインストールされているライブラリを、VBAから使えるように参照する仕組み)
  「Microsoft Visual Basic for Application Extensibility」
※セキュリtyヒ設定が必要
  【ツール】−【マクロ】−【セキュリティ】−【信頼できる発行元】
   □Visual Basic プロジェクトへのアクセスを信頼する。 にチェック(レ)を入れる。
 
長時間ルーチンの雛型 ↑ このページの最初へ
Dim Msg

On Error GoTo ErrHndlr
'カーソルを時計マークにする
Application.Cursor = xlWait
'ステータスバーを表示する
Application.DisplayStatusBar = True

Open "a" For Input As #1
Application.StatusBar = "処理 50% 終了しました"

'標準に戻す
Application.Cursor = xlNormal
Application.DisplayStatusBar = False
Exit Sub
ErrHndlr:
Msg = "エラー番号 " & Str(Err.Number) & Err.Source & " でエラーが発生しました。" _
& Chr(13) & Err.Description

MsgBox Msg, , "エラー", Err.HelpFile, Err.HelpContext
'標準に戻す
Application.Cursor = xlNormal
Application.DisplayStatusBar = False

↑ このページの最初へ

   ご意見・ご感想をお寄せください。 ‖ お問い合わせはこちらから ‖ このサイトについて           サイトマップ  ‖
  Copyright 2006 - 2013 uTRAM Corp. All Rights Reserved
 
PHARCIS(ヘルスケア最新情報提供)
Facebook for PHARCIS
ClinMark8
アクセスランキング
(2013年5月)

1位 企業ニュース
2位 売上ランキング
3位 メディアニュース
4位 製薬会社
5位 治療薬の最前線
6位 決算短信一覧
7位 データブック
8位 製薬会社研究
9位 イベントカレンダ
10位 パイプラインニュース