Excelノート 14-1 マクロ

HOME  検索  索引  もくじ  関数目次ージへ        次ページへ

タイトル欄のアドレスは、エクセルファンクラブの該当する頁へのリンク先です。
詳しい事は、こちらの
お願いをご覧になってください。

1  マクロ(VBA)のコードの使い方
    
マクロの使い方(1) 標準モジュール
   
 マクロの使い方(2) 該当するシートのモジュール
   
 マクロの使い方(3) This Workbookのモジュール
    
マクロの使い方(4) ユーザーフォームのモジュール
    
マクロの使い方(5) PERSONAL.XLS (個人用マクロブック) のモジュール
    
マクロの使い方(6) ユーザー定義関数(標準モジュール)
2  セルに入力されたマクロ名を実行するには
3  マクロを、ツールバーのアイコンに登録して、いつでも簡単に使えるようにするには
4  ツールバーに設定したマクロのボタンを、メニューバーに設定するには
5  VBEのコードを他のファイルにコピーするには
6  セルをダブルクリックした時、マクロ起動するには?
7  On Error ステートメント
8  ボタンにマクロを登録し、マクロボタン自体の色を変えるには
9  指定のセルにイベントを起こすには
10 マクロ実行後に元に戻すには?

11 マクロの記録による、PERSONAL.XLS の作り方

12 VBA Projectのフォントを変えるには?
13 VBAのプロパティのリスト
14 VBAで、新規ブックを作成し、シートにボタンを貼り付けコードを記入するには
15 デバッグに入らないで、エラーメッセージだけを表示するには?
16 マクロを実行する前の最後の操作を取り消すには
17 引数の【参照渡し】と【値渡し】
18 引数の省略
19 引数の任意指定
20 OnKey で指定したプロシージャに引数を渡すには?

1 マクロ(VBA)のコードの使い方
マクロの使い方(1)  標準モジュール 
Excel97、Excel2000、Excel2002 共通

 1. Alt+F11 で、VBEの画面を出します。
 2. 左側のプロジェクト-VBAProjectで、該当するファイルを選択します。
   VBAProjectが出ていなければ、Ctrl+R で出します。
 3. [挿入]、[標準モジュール]、出てきた白い所に、コードを貼付けます。
 4. 右上の × でExcelの画面に戻ります。
 5. Alt+F8 でマクロの名前を選んで、実行します。
      ※ コードは一旦書き込んでしまえば、次回からは5番だけでOKです。
マクロの使い方(2)  該当するシートのモジュール 
Excel97、Excel2000、Excel2002 共通

Private Sub Worksheet で始まるコードは、シートのモジュールに書き込みます。
該当するシートでのみ有効です。
ワークシートのイベント
 1. 該当するシートのタブを右クリック、[コードの表示]。
 2. 出てきた所に、コードを貼付けます。
 3. 右上の × でExcelの画面に戻ります。
マクロの使い方(3)  This Workbook のモジュール 
Excel97、Excel2000、Excel2002 共通

Private Sub Workbookで始まるコードは、ThisWorkbookのモジュールに書き込みます。
ワークブックのイベント
 1. Alt+F11 で、画面左側にある【プロジェクト-VBAProject】の、
   該当するブック内の【ThisWorkbook】をダブルクリックします。
  (【プロジェクト-VBAProject】が出ていなければ、Ctrl+R で出します)
 2. 出てきた白い所に、コードを貼付けます。
 3. 右上の × でExcelの画面に戻ります。
マクロの使い方(4)  ユーザーフォームのモジュール 
Excel97、Excel2000、Excel2002 共通

ユーザーフォームのイベント    コントロールのイベントプロシージャ
 1. Alt+F11 で、[挿入]、[標準モジュール]
 2. プロジェクト-VBAProjectの、該当するブック内のユーザーフォーム名をダブルクリック
   (VBAProjectが出ていなければ、Ctrl+R で出します)
 3. F7を押して出てきた白い所に、コードを貼付けます。
 4. 右上の × でExcelの画面に戻ります。
マクロの使い方(5)  PERSONAL.XLS (個人用マクロブック) のモジュール 
Excel97、Excel2000、Excel2002 共通

 1. Excelを起動し、ALT+F11 で、VBEの画面を開きます。
    プロジェクト−VBAProject(もし出ていなかったら、Ctrl+R で出します)の中に、
    VBAProject(PERSONAL.XLS)というのがあります(ない場合、下の注意をご覧下さい)
    それを右クリックして、 [挿入]-[標準モジュール]、
    出てきた白い画面にコードを貼って、右上の × で、Excelの画面に戻ります。
 2.メニューバーの[ウインドウ]の中に、Personal.xlsがあったら(多分ないと思います)
   それを選択し、さらにもう一度[ウインドウ]-[表示しない]を選択します。
 3. Alt+F8でマクロの名前を選んで、実行します。
 ※ ここに書き込んだコードは、新規のファイルからいつでもAlt+F8で使えます。

注意 : もし上の1番で VBAProject(PERSONAL.XLS) というのがない場合、
    こちらの1番を行ってから、上の2番へ進んでください。
 1. Excelを起動し、 [ツール]-[マクロ]-[新しいマクロの記録]で、
   マクロの保存先を個人用マクロブックにします。
   次に、何か簡単な操作をします(たとえば、選択しているセルを変えるとか)
   記録終了ツールバーがどこかに出ているので、それの■を押します。
   (もし出ていなければ、[ツール]-[マクロ]-[記録終了]でもよい)
   ALT + F11 で、VBEの画面を出し、プロジェクト-VBAProject
   (でていなければ Ctrl + R で出す) の所の、
   VBAProject(PERSONAL.XLS)の中に、Module1が、あるので、
   それをダブルクリックして、今記録した不要なコードを削除します。
   この、Module1に、使用したいコードを書き込みます。
   右上の×で、Excelの画面に戻ってください。
マクロの使い方(6) ユーザー定義関数(標準モジュール)   
Excel97、Excel2000、Excel2002 共通

 1. Alt+F11 で、VBEの画面を出します。
 2. 左側のプロジェクト-VBAProjectで、該当するファイルを選択します。
   VBAProjectが出ていなければ、Ctrl+R で出します。
 3. [挿入]、[標準モジュール]、出てきた白い所に、コードを貼付けます。
 4. 右上の × でExcelの画面に戻ります。
 5. 【挿入】【関数】関数の分類で【ユーザー定義】、書き込んだ関数の名前を選択します
      ※ コードは一旦書き込んでしまえば、次回からは5番だけでOKです。
2 セルに入力されたマクロ名を実行するには
A1セルに Test という文字列を入力しておいて、TestRun プロシージャを実行します。  
Sub TestRun()
    Dim x As String
    x = Range("A1").Value
    Application.Run x
End Sub
 
Sub Test()
    MsgBox "Testプロシージャが実行されました"
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
3 マクロを、ツールバーのアイコンに登録して、いつでも簡単に使えるようにするには
http://www.keep-on.com/~excelyou/2000lng1/200008/00080034.txt
  「既存の罫線の色変更をするには?」 【編集ラウンジ】
Excel97、Excel2000 共通
1. Excelを起動し、ALT+F11 で、VBEの画面を開きます。
  プロジェクト−VBAProject(もし出ていなかったら、Ctrl+R で出します)の中に、
  VBAProjict (PERSONAL.xls)
  というのがあります。それをダブりクリックして、
  [挿入]-[標準モジュール]、出てきた白い画面に、
  登録したいマクロのコードを貼ってください。
  コピーできたら、右上の×で、Excelの画面に戻ってください。
2. メニューバーのウインドウの中に、Personal.xls があったら、
  それを選択して、表示しない、をクリックしてください。
3. ツール、ユーザー設定、マクロで、ユーザー設定ボタンのニコちゃんマークを
  ツールバーの好みの場所にドラッグしてください。
  そして、選択したボタンの編集、名前を登録したいマクロの名前に変更します。
4. マクロの登録、出てきたマクロを選択します。
  わかりやすくするため、ボタンのイメージも、変更するといいと思います。
  変更の方法は、ニコちゃんマークをドラッグした後、
  選択したボタンの編集 をクリック、
  ボタンイメージの編集、またはボタンイメージの変更で行います。
  すでに、ニコちゃんマークをツールバーにドラッグしてある場合は、
  ツール、ユーザー設定、コマンド、マクロで、ツールバーのニコちゃんマークを選択し、
  選択したボタンの編集 をクリックしてから、
  ボタンイメージの編集、またはボタンイメージの変更を行ってください。
*********
注意 : もし上の1番で VBAProjict(PERSONAL.XLS) というのがない場合、
     こちらの1番を行ってから、上の2番へ進んでください。
1. Excelを起動し、ツール、マクロ、新しいマクロの記録で、
  マクロの保存先を個人用マクロブックにします。
  何か簡単な操作を記録します。たとえば、選択しているセルを変えるとか。
  記録終了ツールバーがどこかに出ているので、それの■を押します。
  (もし出ていなければ、ツール、ユーザー設定、ツールバー、記録終了にチェックを入れる)
  ALT + F11 で、VBEの画面を出し、プロジェクト-VBAProject
  (でていなければ CTrl + R で出す) の所の、
  VBAProject(PERSONAL.XLS)の中に、Module1 が、あるので、
  それをダブルクリックして、今作った不要なコードを削除します。
  この、Module1 に、今回のコードを貼り付けます。
  貼り付けたら、右上の×で、Excelの画面に戻ってください。
4 ツールバーに設定したマクロのボタンを、メニューバーに設定するには
Excel97、Excel2000 共通
1. ツール、ユーザー設定で、設定画面を出します。
2. その状態で、ツールバーにあるアイコンを、メニューバーの任意の場所にドラッグします。
5 VBEのコードを他のファイルにコピーするには
http://www.ae.wakwak.com/cgi-bin/sbox/~efc21/wwwlng.cgi?print+200101/01010372.txt
  「シートのモジュールを、マクロで他のブックにコピーするには?」 【VBAラウンジ】
Excel97、Excel2000 共通
1. コピー元のVBAProjectで、コピーしたいモジュールを右クリック、
   ファイルのエクスポート、保存場所を選んで保存します。
2. コピー先のVBAProjectで、右クリック
   ファイルのインポート、先ほど保存したファイルを選びます。
3. 保存したファイルは残ってしまいますので、不要なら削除します。
Book1の標準モジュール、Module1を、Book2のモジュールにコピーします。
 Sub 標準モジュールを別ブックにコピー()
  Dim sf$, df$, md$
  Dim src, des
  sf = "Book1.xls"  
'コピ−元のbook名
  df = "Book2.xls"   
'コピ−先のbook名
  md = "Module1"   
'コピ−する標準Module名
  Set src = Workbooks(sf).VBProject.VBComponents(md).CodeModule
  With Workbooks(df).VBProject
   On Error Resume Next
   Set des = .VBComponents(md).CodeModule
   If Err Then
    .VBComponents.Add(1).Name = md
    Set des = .VBComponents(md).CodeModule
   End If
   On Error GoTo 0
  End With
  des.DeleteLines 1, des.CountOfLines   
'上書き対応
  des.AddFromString src.Lines(1, src.CountOfLines)
 End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
Book1、Sheet1のモジュール、1行目から5行目を、Book2、Sheet1のモジュールにコピーします。
 Sub test()
  Dim strRet As String
  
'このコードを実行するブックのSheet1のモジュール、
  '1行目から5行目を、変数 strRet に代入

  strRet = ThisWorkbook.VBProject.VBComponents("Sheet1").CodeModule.Lines _
    (startline:=1, Count:=5)
  
'Book2のSheet1の1行目から、strRet の値を書き込む
  Workbooks("Book2").VBProject.VBComponents("Sheet1").CodeModule.InsertLines _
    1, strRet
 End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
6 セルをダブルクリックした時、マクロ起動するには?
A列をダブルクリックすると macro1 を実行
B列    〃       macro2 を実行
 
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range,Cancel As Boolean)
  Select Case Target.Column
    Case 1
      macro1
    Case 2
      macro2
  End Select
 End Sub

  このコードの使い方は、
マクロの使い方(2)該当するシートのモジュールにあります。
A1をダブルクリックすると macro1 を実行
 
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range,_Cancel As Boolean)
  If Target.Address = "$A$1" Then
   macro1
  End if
 End sub

  このコードの使い方は、
マクロの使い方(2)該当するシートのモジュールにあります。
7 On Error ステートメント
Sub test()
 On Error GoTo TRAP
 
'エラーでないときの処理を書き込む
Exit Sub
TRAP:
 
'エラーが出たときの処理を書き込む
End Sub
エラーが出た場合、そこから指定の場所にジャンプします。
On Error Resume Next
エラーが発生してもプログラムを中断せず、そのまま続けます。
On Error GoTo 0
現在のプロシージャ内のエラー処理を無効にします。
8 ボタンにマクロを登録し、マクロボタン自体の色を変えるには
http://www.keep-on.com/~excelyou/2000lng1/200008/00080034.txt
  「マクロボタン自体の色って変えられますか?」 【編集ラウンジ】
シートにコマンドボタンを貼り付け、マクロを登録してボタンの色を変える方法
 1.ツール、ユーザー設定、ツールバーで、
   コントロールツールボックスにチェックを入れます。
 2.コマンドボタンをクリックし、シートに貼り付けます。
 3.コマンドボタンを右クリックし、コードの表示、すると、下の2行が出てきます。
  Private Sub CommandButton1_Click()
  End Sub

この2行の間に、次の2行を書き足してください。
マクロ名は、このボタンで実行したいマクロです。
  ActiveCell.Activate
  Call マクロ名

そうしたら、この画面は閉じます。
 4.もう一度、コマンドボタンを右クリックし、
プロパティ、BackColor の右の三角をクリックし、パレットから色を選びます。
 5.コントロールツールボックスの三角定規をクリックして、デザインモードを終了します。
※ これで、2000でも97でも対応できます。
9 指定のセルにイベントを起こすには
Targetという方法で指定できます。
 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  aa = Target.Address
  MsgBox aa
 End Sub
 Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
  aa = Target.Value
  MsgBox aa
 End Sub
 Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Target.Range("A1:B10").Interior.ColorIndex = 6
 End Sub

  このコードの使い方は、
マクロの使い方(2)該当するシートのモジュールにあります。
10 マクロ実行後の"元に戻す"機能を実現するには?
http://www.keep-on.com/~excelyou/2000lng4/200008/00080119.txt
  「マクロ実行後の"元に戻す"機能を実現するには?」 【VBAラウンジ】
マクロ処理したものは戻るボタンでは前の状態に戻せません。
次のようにあらかじめ保存しておい、,元に戻すしかありません。
 1.マクロ冒頭に
   ActiveWorkbook.Save
   を入れておきます。
 2.マクロ終了後、以下を実行します。
   Sub 元に戻す()
    Dim CurName As String
    CurName = ActiveWorkbook.Fullname
    ActiveWorkbook.Close Savechanges:=False
    Workbooks.Open CurName
   End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
11 マクロの記録による、PERSONAL.XLS の作り方
Excel97、Excel2000 共通
1.Excelを起動し、ツール、マクロ、新しいマクロの記録で、
  マクロの保存先を個人用マクロブックにします。
2.何か簡単な操作(たとえば、選択しているセルを変える)を記録します。
3.記録したら、記録終了ツールバーがどこかに出ているので、それの■を押します。
  (もし出ていなければ、ツール、ユーザー設定、ツールバー、記録終了にチェックを入れる)
4.ALT + F11 で、VBEの画面を出し、プロジェクト-VBAProject
  (でていなければ CTrl + R で出す) の所の、VBAProject(PERSONAL.XLS)の中に、
  Module1 が、あるので、それをダブルクリックして、今作った不要なコードを削除します。
5.右上の × で、Excelの画面に戻ってください。
12 VBA Projectのフォントを変えるには?
Microsoft Office 2000 Visual Basic Editor の表示の修正プログラム
 http://officeupdate.microsoft.com/japan/downloaddetails/2000/O9VBEupd.htm
13 VBAプロパティのリスト
プロパティのページに書きました。
  21 This WorkBook のプロパティ
  22 Sheet のプロパティ
  23 User Form のプロパティ
 ユーザーフォームのコントロールのプロパティ
  24 ラベル のプロパティ
  25 テキストボックス のプロパティ
  26 コンボボックス のプロパティ
  27 リストボックス のプロパティ
  28 チェックボックス のプロパティ
  29 オプションボタン のプロパティ
  30 トグルボタン のプロパティ
  31 フレーム のプロパティ
  32 コマンドボタン のプロパティ
  33 タブストリップ のプロパティ
  34 マルチページ のプロパティ
  35 スクロールパー のプロパティ
  36 スピンボタン のプロパティ
  37 イメージ のプロパティ
  38 Ref Edit のプロパティ
14 VBAで、新規ブックを作成し、シートにボタンを貼り付けコードを記入するには
http://www.ae.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200103/01030353.txt
  「VBAで他のBookのプロジェクトにコードを書かせるには?」 【VBAラウンジ】
【注意】
 このマクロは、Excel2002ではエラーが出ます。
 先にこちらの方法でエラーチェックを解除してから実行してください。
   ※ 【ツール】 【マクロ】 【セキュリティ】 の 【信頼のおけるソース元】 で、
      【Visual Basic プロジェクトへのアクセスを信頼する】にチェックを入れてください。 

 また、このコードはウイルスチェックに,引っかかっることもあるようですので、ご注意ください。
  http://www.ae.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200207/02070484.txt 
 因みに、WinMe + Excel2000 + Norton Internet Securityでは問題なく動作確認済みです。

Sub Test()
 Dim objWb As Workbook
 Dim objSh As Worksheet
 Dim objOLE As OLEObject
 Dim strObjName(1 To 3) As String
 Set objWb = Workbooks.Add
 Set objSh = objWb.Sheets(1)
 'CommandButton1を挿入
 Set objOLE = objSh.OLEObjects.Add(ClassType:="Forms.CommandButton.1")
 objOLE.Top = 10
 objOLE.Left = 10
 objOLE.Object.Caption = "検索" 'Caption変更
 strObjName(1) = objOLE.Name 'OLEObject名取得
 'CommandButton2を挿入
 Set objOLE = objSh.OLEObjects.Add(ClassType:="Forms.CommandButton.1")
 objOLE.Top = 10
 objOLE.Left = 90
 objOLE.Object.Caption = "検索条件クリア"
 strObjName(2) = objOLE.Name
 'CommandButton3を挿入
 Set objOLE = objSh.OLEObjects.Add(ClassType:="Forms.CommandButton.1")
 objOLE.Top = 10
 objOLE.Left = 170
 objOLE.Object.Caption = "全て表示"
 strObjName(3) = objOLE.Name
 'コード挿入
 ('ツール・オプションで、Option Explicitが設定してある場合に備え、2行目から書き込み)
 With objWb.VBProject.VBComponents(objSh.Name).CodeModule
  .InsertLines 2, "Private Sub " & strObjName(1) & "_Click()"  
  .InsertLines 3, "MsgBox " & """" & "Test1" & """"
  .InsertLines 4, "End Sub"
  .InsertLines 5, "Private Sub " & strObjName(2) & "_Click()"
  .InsertLines 6, "MsgBox " & """" & "Test2" & """"
  .InsertLines 7, "End Sub"
  .InsertLines 8, "Private Sub " & strObjName(3) & "_Click()"
  .InsertLines 9, "MsgBox " & """" & "Test3" & """"
  .InsertLines 10, "End Sub"
 End With
 Set objWb = Nothing
 Set objSh = Nothing
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。

15 デバッグに入らないで、エラーメッセージだけを表示するには?
Sub test1()
 '一番目に描画した四角形がないと、エラーになります
 On Error GoTo ErrorCheck
 ActiveSheet.Shapes("Rectangle 1").Delete
 Exit Sub
ErrorCheck:
 MsgBox Error(Err)
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
16 マクロを実行する前の最後の操作を取り消すには
Sub test()
 Application.Undo
End Sub
  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
17 引数の【参照渡し】と【値渡し】
【参照渡し】ByRefを使います。省略した場合も既定でこれになります
       
参照渡しで渡された引数の値を変更すると、
        呼び出し元側の変数の値も変更されます。
 '実行すると、"30-abc" と表示します。
 Sub CallTest2()
  Test2 3, "abc"
 End Sub
 Sub Test2(a As Integer, b As String)
  MsgBox a * 10 & "-" & b
 End Sub
 '実行すると、最初に "30-abc" 、次に "3-abc" と表示します。
 Sub CallTest3()
  Dim X As Integer
  Dim S As String
  X = 3
  S = "abc"
  Test3 X, S
  MsgBox X & "-" & S
 End Sub
 Sub Test3(ByRef a As Integer, ByRef b As String)
  MsgBox a * 10 & "-" & b
 End Sub
 '実行すると、最初に "30-abc" 、次に "30-abc" と表示します。
 Sub CallTest4()
  Dim X As Integer
  Dim S As String
  X = 3
  S = "abc"
  Test4 X, S
  MsgBox X & "-" & S
 End Sub
 Sub Test4(ByRef a As Integer, ByRef b As String)
  a = a * 10
  MsgBox a & "-" & b
 End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
【値渡し】値渡しの場合は呼び出し元の変数の値は変更されません。
 '実行すると、最初に "30-abc" 、次に "3-abc" と表示されます。
 Sub CallTest5()
  Dim X As Integer
  Dim S As String
  X = 3
  S = "abc"
  Test5 X, S
  MsgBox X & "-" & S
 End Sub
 Sub Test5(ByVal a As Integer, ByVal b As String)
  a = a * 10
  MsgBox a & "-" & b
 End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
18 引数の省略
引数の頭に Optional を付けて宣言すると省略可能になります。
 '実行する 3、 5 と表示します。
 Sub CallOptionTest()
  OptionTest
  OptionTest 5
 End Sub

 Sub OptionTest(Optional ByVal x As Integer = 3)
  MsgBox x
 End Sub
さらに後ろに = 値 と書けば省略したときの既定値を指定できます。
ある引数を Optional 付きで宣言したら、それ以降の引数は全部
Optional 付きにしなくてはなりません。
Optionalは、省略する物には全てひとつひとつ付けます。
 Sub CallOptionTest1()
  OptionTest1
  OptionTest1 , 3
  OptionTest1 "bbb"
  OptionTest1 "ccc", 5
 End Sub
 'CallOptionTest1を実行すると、aaa-0 aaa-3 bbb-0 ccc-5 と表示します。
 Sub OptionTest1(Optional ByVal a As String = "aaa", Optional ByVal x As Integer)
上の行を下の行に変更し、CallOptionTest1を実行すると、
aaa-1 aaa-3 bbb-1 ccc-5 と表示します。
 Sub OptionTest1(Optional ByVal a As String = "aaa", Optional ByVal x As Integer = 1)
上の行を下の行に変更し、CallOptionTest1を実行すると、エラーが出ます
 Sub OptionTest1(ByVal a As String, Optional ByVal x As Integer = 1)
  MsgBox a & "-" & x
 End Sub
複数の引数を省略するときでも原則としてカンマは省略できません。
 '実行すると、3 5 abc と表示します。
 Sub CallOptionTest2()
  OptionTest2
'全部省略
  OptionTest2 , 5
'第1・第3引数省略
  OptionTest2 , , True
'第1・第2引数省略
 End Sub
 Sub OptionTest2(Optional ByVal a As String = "abc", _
  Optional ByVal x As Integer = 3, _
  Optional ByVal b As Boolean = False)
  If b = True Then
   MsgBox a
  Else
   MsgBox x
  End If
 End Sub
  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
19 引数の任意指定
引数を明記すれば順番を変える事ができます。
引数名に続けて := を書き、さらに値を書いて指定します。
この場合指定しなかった引数は既定値になります。
これを使うと、省略できる引数がたくさんあって、
後ろのほうの引数だけ既定値以外にしたいときに
例えばCall Test(,,,,,,"abc") と書かずにCall Test(X:="abc") だけでできます。
(最後の引数名が X の場合)
 '実行すると、test 5 と表示します。
 Sub CallOptionTest3()
  OptionTest3 b:=True, a:="test"
  OptionTest3 x:=5
 End Sub

 Sub OptionTest3(Optional ByVal a As String = "abc", _
  Optional ByVal x As Integer = 3, _
  Optional ByVal b As Boolean = False)
  If b = True Then
   MsgBox a
  Else
   MsgBox x
  End If
 End Sub
  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
20 OnKey で指定したプロシージャに引数を渡すには?
http://www.keep-on.com/~excelyou/2000lng4/200009/00090414.txt
  「Application.OnKey "{F12}", "Test"時のTestに引数って渡せますか?」 【VBAラウンジ】
数値を渡す場合:
Application.OnKey "{F1}", "'Test 1'"
文字を渡す場合:
Application.OnKey "{F1}", "'Test ""abc""'"

 Sub Test111(ByRef a As Variant)
  MsgBox a
 End Sub
 Sub CallTest111()
  With Application
   .OnKey "{F1}", "'Test111 1'" '数値を渡す場合
   .OnKey "{F2}", "'Test111 ""abc""'" '文字を渡す場合
  End With
 End Sub
'**************************************************************
 Sub Test112(ByRef a As Integer, ByRef b As String)
  MsgBox a * 10 & "-" & b
 End Sub
 Sub CallTest112()
  With Application
   .OnKey "{F3}", "'Test3 1 , ""abc""'"
  End With
 End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。

HOME  検索  索引  もくじ  関数目次ージへ        次ページへ

このページのTOPへ     

 

 

 

 

 

 

 

inserted by FC2 system