ユーザーフォーム

わずかな知識で VBA!

ユーザーフォーム


 ダイアログボックスを作ってみよう2 【実践編】

  では、いよいよ、実際にユーザーフォームを作成していきましょう!

  「ユーザーインターフェス」の章で紹介した簡単な納品書モドキを
  作成するマクロを実際に作って説明していきます。

  動作説明部分が、どうしても、「ユーザーインターフェース」の章と
  ダブリますが、ガマンしてお読みください。

  Excelで行っている、ほとんどの業務に応用できると思います。
      

わずかな知識で
VBA!


  プログラムの動作説明

   図1のような納品書モドキの入力表に、
   図2の表に記載してある商品の名称と個数、及び、個数により異なる単価を入力するためのマクロです。

   つまり、Excelの簡単な表をデータベースとし、その検索と入力作業を行います。

   VBAでデータ検索等を行う際の基礎知識が満載されています。


                     ダウンロードして使いながら確認してください。

マクロを有効にして、ダウンロードしたファイルを開いてください。

Download ダイアログボックス.xls(圧縮 DBox.lzh) (89Kバイト)

   単価シートにある単価を参照して、入力シートの各項目へ入力していく単純なマクロですが、
   全てを手入力で行う場合に比べ、各段に作業効率がアップします。

図1

  動作説明のための、

  簡単な入力表です。
図2

  コード、商品名、個数により

  異なった単価が、入力されている
  
  価格表です。

  手作業では、たぶん「入力規制」、「VLOOKUP」などのワークシート関数を使用して、
  業務を行っていると思いますが、同じことをダイアログボックスを使って行うマクロで、
  セルに直接データを入力する代わりに、ダイアログボックスに入力し、
  さらに、そのデータをマクロによりセルに入力します。

  ユーザーの入力ミスや操作ミスを未然に防げ、エクセルの操作に不慣れな人でもデータ入力が可能になります。

  もちろん、各シートは前もって作成しておきます。

  コード番号と商品名が記入されたコード表も必要なくなり、また、入力位置も探さずに済みます。

  

  

作成するユーザーフォームはたったの2つ。



  「マクロ表示」を実行すると、下のユーザーフォームが表示されます。

作業選択フォームの
  「キャンセルボタン」:

「作業選択」のフォームを消し

作業をキャンセルします。

作業選択フォームの
  「入力ボタン」:

入力フォームを表示します。


   この簡単なダイアログボックスが
  今回の処理を行うための
  ユーザーインターフェースとなります。


  フォームを表示する前の下準備として、

  「コード」のコンボボックスに、
  コード番号と品名を
  マクロによりセットしておきます。

  そうすることによって、
  図のようにコンボボックスの右側にある
 「▼」ボタンで参照できるようになります。

  
    ここで、商品コードを選ぶと、コンボボックスのチェンジイベントに設定したマクロにより、
    「コードボックス」にはコードが、「名称ボックス」にはその名称が入力されます。

   次に数量を入力すると、数量を入力したテキストボックスのチェンジイベントに設定したマクロが働き、
   商品の個数によって異なる単価が正しく選択されて、「単価ボックス」に表示されます。

  

   注 意
   
    この例では、入力シートと単価シート、及び、マクロも含め一つのブックになっていますが、
    実際には、使い勝手を考えて、全てを別々のブックに保存して使用します。

    マクロを保存したブックと単価シートを保存したブックを一つずつ作成し、入力シートは
    Excelのテンプレートの様に作業用のブックとして使用します。
 
    このようにすれば、マクロの修正や、単価ファイルの修正も一つのファイルだけで済み管理がしやすくなります。
    その場合、マクロはアクティブになっているシートに対して実行されるので、入力シートをアクティブにし、
    他の2つのブックも同時に開いた状態(最小化されていても、非表示でもかまわない)でマクロを実行します。

    この例では、名称ボックスに入力しておく商品数が少ないので、これで済みますが、
    実際には、商品数もこの例以上に多く、下の図のように項目別に表示するというような工夫が必要になります。
 
    表示項目を変更した場合、いったんコンボボックスの内容を削除し再び設定しますが、
    コンボボックスの内容削除方法は、
           
           オブジェクト名(コンボボックス名).Clear
 
                                     で行えます。


作業選択フォームの
  「修正ボタン」:

 修正フォームを表示します。

 入力フォームと同じものですが、

 背景の色とキャプションを変えています。


  商品の個数を修正するときには、手作業で修正しても良いのですが、
  個数により単価が変わるため、入力ミスの原因にもなります。

  また、入力された製品を別のものに修正する場合には、
  入力時と同じように、コードを選択して修正した方が、楽に行えます。


  ただし、修正したい部分は、ユーザーにしかわかりません。

  そのため、修正時にはユーザーに修正行のコードの入力位置を選択してから、
  マクロを実行してもらうようにしています。


  作業選択フォームの「修 正」ボタンをクリックすると、次のメッセージが表示され、
  ユーザーに確認してもらい、「はい」なら処理を続行し、「いいえ」なら使用方法を説明するメーセージを表示し、
  使い方を説明しています。

  「作業選択」のフォームに直接記入しておくのも手ですが、
  ろくに読まずにボタンを押す、8本足の方もたくさんいるので、このようにワンステップおくことも必要です。

                     

 
 右側の確認メッセージで「はい
(Y)」の場合:

  選択している行に記入されている内容を読み込み、
  ユーザーフォームに記入してから、
  ユーザーフォームを表示します。



  

 

   

 「いいえ(N)」の場合

   左側のメッセージが表示され、
   
   「OK
」で処理を終了します


  「入力」フォームと「修正」フォームは、色とタイトルを変えていますが、
  ユーザーフォーム自体は、同じものを使用しています。

  つまり、作成したユーザーフォームは、3つにみえますが、
  「作業選択」と「入力、修正の兼用」フォームの
2つだけです。

  

  
  ユーザーインタフェースによる入力作業。

  コンボボックスの右側にある「▼」ボタンをクリックし、表示された商品名をマウスで選択すると、
  その製品名と製品単価がそれぞれのボックスへ自動的に入力されます。


  ユーザーは、商品を選択し、個数を入力後「入 力」ボタンをクリックするだけです。

  マクロで空白行を捜してワークシートに入力するので、入力位置を捜す必要はありません。

  また、製品名、製品単価は、単価表から読み込まれるので、
  入力する製品名や個数により異なる単価を間違えるというミスも防げます。

  あたりまえですが、単価も入力時に完璧にチェックしておけば、確実に毎回同じ単価が入力されます。

  
  「修 正」ユーザーフォームは、選択した行に入力されること以外は、
  「入力」ユーザーフォームと同じ作業を行います。



  作 業 手 順

  1.「入力・修正」フォームの作成

  2.「作業選択」フォームの作成

  3.「作業選択」フォームを表示するマクロの作成

  4. ツールバーを作成し、3.の【「作業選択」フォームを表示するマクロ】をボタンに登録する。

  以上です。

  仕事などに応用できるスキルを身につけましょう!

マクロを有効にして、ダウンロードしたファイルを開いてください。

Download ダイアログボックス.xls (圧縮 DBox.lzh)(89Kバイト)

     *Excelの初期設定では、「マクロのセキュリティ」が「高」に設定されています。
     マクロを動作させるためにはこの設定を「中」以下に変更する必要があります。


     「マクロのセキュリティ変更方法

           Excelのツールバーの「ツール(T)」 → 「マクロ」 → 「セキュリティ」
          
           により、セキュリティレベル「中」を選択してOK

           Excel2007では、

           左上にある「Excelボタン」→「Excelのオプション(I)」→「セキュリティセンター」→「セキュリティセンターの設定」

           で、マクロを有効にしておきます。



  1. 「入力」フォームの作成

      VBEの画面で、登録したいブックのProjectのどこか(この図では「Sheet1」)を選択し、
      「ツールバー」の「挿入(I)」から、「ユーザーフォーム(U)」を選択します。

          


    新しいユーザーフォームが作成されるので、ツールボックスで使用するコントロールを選択し、
    ユーザーフォーム上に配置していきます。

    各コントロールの大きさは、エクセルの図形等と同じ操作方法で変更できます。


    必要な、ラベル、テキストッボクス、コンボボックス、及び、コマンドボタンを配置します。

       

   配置したばかりのLabelは「Label1」などの表記のままなので、
   各ラベルをマウスで選択して、左下のプロパティウィンドウのCaptionを上の図のように修正します。

             


   バックカラーをフォームと同じ色にする代わりに、
   「BackStyle」プロパティで、Labelの背景を透明にする方法もあります。

  
   次に、コンボボックス、テキストボックスの「オブジェクトの名称」を修正していきます。
   この例では、上から 「kohdo」、「namae」、「kazu」、「tanka」

             

   同様にコマンドボタンのCaptionも「終了」、「入力」に修正します。

   それぞれの色は、プロパティウィンドウの「BackColor」をクリックすると「▼」ボタンが表示されるので、
   それをクリックすることにより、パレットから選択できます。


   いよいよ、各コントロールに必要なプロシージャを設定をしていきます。
   といっても、全てのコントロールに設定しなければいけないわけではありません。
 
   この例では、2つのコマンドボタンと、コードのコンボボックスに設定します。


 コンボボックスへの設定方法です。

   コンボボックスのプロパティ値の変更箇所

      オブジェクト名:kohdo

      BackColor: 薄い黄色

      IMEMode : 新規入力を受け付ける場合には、ひらがな入力に設定するべきですが、
              今回は修正していません。

      RowSource :単位や、番号など不変のデータの場合は、ここに、下記の例の様に
               シート名から始まるセル位置を指定します。
               ただし、マクロ実行時にアクティブになっているブックのシートに限られます。
         
                 設定例) 参照!C5:C20
                       シート「参照」のセルC5からC20のデータを表示する場合
        
               今回は、プロシージャから設定しているため、ここでの設定はしません。
               逆に、ここで指定すると、プロシージャからの設定ができなくなります。

                      


   コンボボックスで選択された項目を取得する方法

      まず、フォームが表示されている状態で、コンボボックスをダブルクリックします。
      すると、次のように、コンボボックスの内容が変更された時に動作する
      プロシージャが用意され、表示されます。

       

 
      この間に、選択されたコードを取得して、商品の一覧表からそのコードの名称を取得し、
      名称TextBoxに表示するソースコードを、記述していきます。

          Dim strkohdo As String
          Dim strsyohin As String
          '
          strkohdo = kohdo.Value
          If strkohdo = "" Then Exit Sub
          Set setcell = Worksheets("製品単価").Range("C7")
          cntA = 0
          Do Until setcell.Value = strkohdo Or setcell.Value = ""
             Set setcell = setcell.Offset(1, 0)
             cntA = cntA + 1
          Loop
          If setcell.Value = "" Then
             MsgBox "コードが見つかりません。" & Chr(13) & Chr(10) _
                   & "コードは一覧から選択してください!", vbCritical, "作業手順!"
             Exit Sub
          End If
          strsyohin = setcell.Offset(0, 1).Value
          namae.Value = strsyohin
          tanka.Value = ""


     まず、変数を宣言しますが、変数は、作成していくと必要な変数が判明してきます。
     実際には、そのつど書き足していきます。

     次に、コンボボックスの選択された項目を取得します。
     選択された項目は、Valueプロパティで取得できます。

          strkohdo = kohdo.Value

    チェンジイベントですので、コンボボックスの内容が変われば、空白に変わっても動作してしまいます。
    空白に変わった時は意味がないので、プロシージャを終了させるための命令が次の行です。

          If strkohdo = "" Then Exit Sub

    次に、選択された項目に関連した他の項目の取得方法です。
 
    コンボボックスには、何列ものデータを表示できますが、取得できるのは、指定した列 1つだけなのです。
 
    格納するデータの列の指定には、「BoundColimn」プロパティで指定します。
 
    デフォルトでは、「1」に設定されているので、一番左の列のデータをValueプロパティに格納します。
    この例では、商品コードを格納しています。

    次に、格納された商品コードを基に、SetステートメントとOffsetプロパティを使用して、他の項目を取得します。
    ここでは、名称TextBoxに表示するための、商品名を取得します。

         Set setcell = Worksheets("製品単価").Range("C7")
         cntA = 0
         Do Until setcell.Value = strkohdo Or setcell.Value = ""
            Set setcell = setcell.Offset(1, 0)
            cntA = cntA + 1
         Loop


    製品単価の表にsetcellをセットしてセルの値がコードと同じになるまで、
    Offsetプロパティで下の行に送っています。

    cntAは、他のプロシージャで個数による商品単価を取得するためのものです。

    そのため、setcellcntAは、プロシージャの欄外で宣言し、他のプロシージャでも利用できるようにしています。
    ユーザーフォームや、モジュール内でプロシージャの外にDimを用いて宣言した変数は、
    そのモジュール内でのみ各プロシージャに共通した変数となり利用できます。

         If setcell.Value = "" Then
            MsgBox "コードが見つかりません。" & Chr(13) & Chr(10) _
                & "コードは一覧から選択してください!", vbCritical, "作業手順!"
            Exit Sub
         End If


    検索条件が、コードとセルの値が一致するか、空白行までとしているため、一致するものがなければ、
    setcellの値は空白となります。その場合のエラー処理です。

    選択結果と注意を促して、プロシージャから抜けています。
    このエラー処理に引っ掛からなかった場合は、当然、コードとsetcellの値が一致した場合なので、
    商品名を取得し名称TextBoxに表示、選択し直した場合に備え、単価を消去します。

         strsyohin = setcell.Offset(0, 1).Value
         namae.Value = strsyohin
         tanka.Value = ""


    ここでは、商品名だけですが、Offsetプロパティを使用して、いくつでも取得することができます。

    以上が、このコンボボックスで行う作業です。

    
 
  次に、入力された個数により、個数によって違う単価を取得します。
 
    それには、入力された個数が判明しないとできません。
    そこで、数量TextBox(kazu)のチェンジイベントを使用します。

    コンボボックスの時と同じように、数量TextBox(kazu)をダブルクリックして、
    下記の様な空のプロシージャを作成します。

         Private Sub kazu_Change()

         End Sub


    この間に、商品の個数によって異なる単価を取得するプロシージャを記述します。

    ここでも、このプロシージャの中だけで有効な変数の宣言から始めます。
    ここで宣言した変数の他に、setcellcntAという各プロシージャで共有できる変数を使用しています。

         Dim setcellB As Range
         Dim lokazu As Long
         Dim cntB As Integer
         cntB = cntA + 1
         If IsNumeric(kazu.Value) = True Then
            lokazu = kazu.Value
         Else
            MsgBox "数量を正しく入力してください!", vbCritical, "作業手順!"
            Exit Sub
         End If
         Set setcellB = setcell.Offset(0, 2)
         Do Until setcellB.Offset(-cntB, 0).Value >= lokazu
            Set setcellB = setcellB.Offset(0, 1)
         Loop
         strtanka = setcellB.Value
         tanka.Text = strtanka


    数量TextBox(kazu)から、商品の個数を取得し、商品名を捜す時にすでにセットしてある
    setcellの2つ右側のセルにsetcellBをセットして、商品の個数が該当する区分を捜しに行きます。

    注意:商品の個数は、その大きさを比較するために、Long型を宣言しています。
        数量を記入せずに入力ボタンを押した場合、空白をLong型の変数に代入すると、
        エラーとなってしまうため、IsNumeric関数で、数値として評価できるかどうかをチェックしてから、
        変数に代入しています。

    cntBは、コードを捜しに行った時に下に送った回数(cntA)に1を加えて、
    単価の区分の記入してある行を示すようにしています。
 
    setcellBを順に右に送って、商品個数が区分欄に記入してある数値より大きくなるセルを捜しています。
    このへんの表の作成方法も、答えは一つではないので、自分の好みで設定しておきます。
    ここら辺の作り方は、ハッキリ言って思い付きです。
 
    区分に該当したところで、ループ作業が終了するので、そこのセルの値が
    個数によって違うその商品の単価です。

    その単価をstrtankaに代入し、単価TextBoxに表示します。

    これで、このチェンジイベントのプロシージャは終了です。

   では、いよいよ入力ボタンをクリックした時のプロシージャに移ります。
 
    他と同じように、コマンドボタンをダブルクリックします。
    すると、こんどは、クリックイベントの空のプロシージャができ、その間にソースコードを記述します。

         Private Sub CommandButton1_Click()
            Dim strnamae As String
            Dim strkohdo As String
            Dim strkazu As String
            Dim setnyu As Range

            '値の取得、値のチェック
            strnamae = namae.Value
            If strnamae = "" Then
               MsgBox "コードを選択するか、名称を入力してください!", vbInformation, "作業方法!"
               Exit Sub
            End If
            strkazu = kazu.Value
            If strkazu = "" Then
               MsgBox "数量を入力してください!", vbCritical, "入力ミス!"
               Exit Sub
            End If
            strkohdo = kohdo.Value
            If strkohdo = "" Then
               MsgBox "コードを選択するか、入力してください!", vbInformation, "作業方法!"
               Exit Sub
            End If
            strtanka = tanka.Value
            If strtanka = "" Then
               MsgBox "コードを選択するか、単価を入力してください!", vbInformation, "作業方法!"
               Exit Sub
            End If
           '入力位置の検索
            If 入力.Caption = "入 力" Then
               Set setnyu = Worksheets("入力").Range("B7")
               Do Until setnyu.Value = ""
                  Set setnyu = setnyu.Offset(1, 0)
                  If setnyu.Offset(1, 0).Interior.ColorIndex = 50 Then
                     setnyu.Offset(0, 0).Rows("1:1").EntireRow.Insert Shift:=xlDown
                     Set setnyu = setnyu.Offset(-1, 0)
                  End If
               Loop
            Else
               Set setnyu = ActiveCell.Offset(0, 0)
            End If
            '値及び計算式の入力
            With setnyu
               .Offset(0, 0).Value = strkohdo
               .Offset(0, 1).Value = strnamae
               .Offset(0, 2).Value = strkazu
               .Offset(0, 3).Value = strtanka
               .Offset(0, 4).Value = "=RC[-2]*RC[-1]"
               .Offset(0, 4).Style = "Comma [0]"
            End With
            If 入力.Caption = "入 力" Then
               '連続入力にそなえ製品名以外を消去
               kazu.Value = ""
               tanka.Value = ""
               kohdo.SetFocus
            Else
               Unload 入力
               Exit Sub
            End If
         End Sub


    ここで行うのは、各コントロールBoxの値の取得と、取得した値のチェックです。
 
    商品の個数も、今回は何も操作を行わないため、String型で取得しています。
    Long型でもいいのですが、
    変数に代入する前に、数値として評価できるかどうかのチェックをしなければなりません。
 
    このユーザーフォームを表示する段階で、新規入力か修正入力かで、
    ユーザーフォームのCaptionを変えています。
    つまり、Captionで、作業内容を判断しています。

    Captionが「入 力」なら、新規入力ということで、入力表の空白行を捜します。
    Captionが「入 力」以外なら、「修正」ということで、ユーザーが選択した行に入力します。

    データの入力には、setcellに対してのOffsetプロパティを用いて行っています。

    入力された値のチェックを行い、作業も2種類あるので、ちょっと長くなりましたが、
    考えなければいけない部分はほんの少しだけです。


   あとは、キャンセルボタンがクリックされた時のプロシージャを記述すれば終了です。
 
         Private Sub CommandButton2_Click()
            Unload 入力
         End Sub


   これで、「入力・修正」フォームの作成は終了です。
  どうですか? たいしたことはしていません。

  プロシージャの行数も見ての通りです。


  

  次に、入力作業のスタートとなる「作業選択」のユーザーフォームです。

        

  こちらは、簡単です。

  ユーザーフォームにコマンドボタンを3つ配置しただけです。
 
  まず、ユーザフォームは、オブジェクト名を「マクロ」、Captionを「作業選択」
  BackColerを薄い黄色に設定しています。

  各コマンドボタンは、CaptionBackColerのプロパティ値を変更して上の図のようにしています。


  「入力」ボタンに設定したプロシージャ
 
    コマンドボタンをダブルクリックして、下記のプロシージャを作成します。

       Private Sub CommandButton1_Click()
          '
          kombosettei
          'フォームを入力用に設定
          With 入力
             .Caption = "入 力"
             .BackColor = &HC0FFFF
          End With
          Unload マクロ
         入力.Show
       End Sub


    このボタンをクリックすると、入力フォームが入力用にセットされ、表示されます。

    といっても、何も難しいことはしていなくて、コンボボックスにコード番号と商品名の一覧をセットし、
    入力フォームのキャプションを「入 力」に、バックカラーを薄い黄色にセットしてから
    フォームを表示するだけです。
 
    フォームの色を「入 力」と「修 正」で違う色にしているのは、
    ユーザーがどっちを選択しているか把握しやすくするという、とても優しい心遣いからです(笑)

    「マクロ」ユーザーフォームを画面から消した後に、
    プロパティの設定を「入 力」用に変更したユーザーフォームを表示して終了です。

    コンボボックスの設定は、「入 力」でも「修 正」でも同じ作業のため、サブルーチンとしています。


  「修 正」ボタンに設定したプロシージャ

      Private Sub CommandButton2_Click()
         Dim r As Integer
         '
         r = MsgBox("修正行のコード位置を選択していますか?", 36, "確認!")
         Select Case r
         Case 7
            MsgBox "修正行のコード位置を選択してから実行してください!", 64, "作業手順!"
            Unload マクロ
            Exit Sub
         End Select
        
        kombosettei
        'フォームを修正用に設定、修正行の値代入
        With 入力
           .Caption = "修  正"
           .BackColor = &HC0FFC0
           .kohdo.Text = ActiveCell.Offset(0, 0).Value
           .kazu.Text = ActiveCell.Offset(0, 2).Value
        End With
        Unload マクロ
        入力.Show
     End Sub


   修正ボタンなので、入力位置が選択された位置となります。
   そのため、マウスによる選択位置の確認作業を行っています。

   コンボボックスの設定を「入 力」ボタンと同様に行った後、
   入力行に入力されているコードを、入力フォームのコードコマンドボックス(kohdo)に入力し、
   数量を数量テキストボックス(kazu)に入力した後、マクロを画面上から消し、
   「入力フォーム」を表示します。

   実際は、選択された行に入力されているコード(ActiveCell.Offset(0, 0).Value)を、
   「入力フォーム」のコードコマンドボックスに設定した段階で、
   コンボボックス【kohdo】のチェンジイベント
が実行され、
   商品名が、名称テキストボックス(namae)に、
  
   数量テキストボックス【kazu】には、数量(ActiveCell.Offset(0, 2).Value)が
   設定されます。加えて、数量が設定された段階で、入力フォーム【kazu】のチェンジイベントが実行されます。
   入力フォームが表示された時には、入力行に入力されている項目全てが、
   入力フォームに表示されている状態となります。

   ちょっとわかりずらかったかもしれませんが、チェンジイベントは、ユーザーからの入力時だけでなく、
   マクロで設定したときにも、その内容が変更されれば実行されます。 


  2つのボタンで共用して使用しているサブルーチン【kombosettei】の説明です。

    このサブルーチンで、コンボボックスに商品コードと商品名を設定しています。

      Function kombosettei()
         Dim cntC As Integer
         Dim setcell As Range
         'コマンドボックスの設定
         cntC = 0
         With 入力.kohdo
            .ColumnCount = 2
            Set setcell = Worksheets("製品単価").Range("C7")
            'RowSourceの入力
            Do Until setcell.Value = ""
               .AddItem
               .List(cntC, 0) = setcell.Offset(0, 0).Value
               .List(cntC, 1) = setcell.Offset(0, 1).Value
               Set setcell = setcell.Offset(1, 0)
               cntC = cntC + 1
            Loop
         End With
      End Function


   ここでは、「Sub」ではなくて、「Function」としていますが、「Sub」でも何も問題はありません。
   サブルーチンとして作成しているため、その判別方法のひとつとして「Function」にしているだけです。
 
   
   ここでも、Setステートメントを用いて単価表のコードナンバーと商品名を、
   入力フォームのコードコンボボックス【kohdo】に設定しています。
 
   単価表が空白行になるまで、AddItem で項目の追加を宣言したあと、Listプロパティの設定を繰り返しています。

   このサブルーチンは、「作業選択」のフォーム内でのみ使用しているので、他のチェンジイベントと同じように
   フォーム内に記述していますが、
   他のフォームでも使用したい場合には、標準モジュールに書かないと使用できません。
 


  さて、残るは、「キャンセル」ボタンのみです。

   マクロを表示させ、いきなりキャンセルボタンを押すような人には、
   MsgBoxを使って、「こら! もっと考えてからボタンをクリックしろ タコ」と表示したくなりますが、
   大人なので、そんなことはできません。
 
   男は黙って次のプロシージャです。

      Private Sub キャンセル_Click()
        Unload マクロ
      End Sub


  これで、このマクロを実行するための全てのプロシージャの完成です。
  おおっと!マクロフォームを表示するためのプロシージャを忘れていました。

  VBEの「ツールバー」→「挿入(I)」から「標準モジュール(M)」をクリックして、モジュールを追加し、そこに

      Sub makuro()
        マクロ.Show
      End Sub


   を記述すれば、OKです。

   実際は、ツールバーを作成して、そこに上記のマクロを登録し、
   マクロファイルにそのツールバーを添付して完成となります。

   その方法を忘れた方は、「マクロの登録」の章を読み直してください。

        


  わずかな知識でVBA!       TOP

  マクロで何ができる?   ユーザーインターフェース    マクロの記録   マクロの登録
 
  イベントについて      マクロの編集とデバッグ    ゲームで覚えるVBAプログラミング
 
  オブジェクトの操作     セルの操作            MsgBox関数・InputBox関数
 
  変数の型           ヘルプの活用          イミディエイトウィンドウ  
 
  Withステートメント      Setステートメント
 
  条件分岐のステートメント   If Then Else,Select Case
 
  繰り返しのステートメント   Do Loop
 
  繰り返しのステートメント   For Next
  
  ダイアログボックスを作ってみよう1       ダイアログボックスを作ってみよう2 【実践編】
  
  ActiveXコントロール      各コントロールのプロパティ       文字列の操作        Endプロパティ

  リンク・検索   相互リンク    マイプロフィール       YouTubeの部屋 
    

Copyright (C) わずかな知識でVBA! All Rights Reserved