Deprecated : The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
フォーム コントロール:Excel基本講座
Home »
Excel講座の総目次 »
Excel基本講座の目次 »
フォーム コントロール
チェックボックスやオプションボタンなどをシートに貼付けて利用する方法の一例です。
コントロール ツールボックスにも同じようなボタンがありますが、ここで使用するのはフォームのボタンです。
Excel2010以降での使い方は フォームコントロールの使い方 からご覧ください。
【完成例】
C:G列にチェックボタンなどの入力値を選択して、[入力]ボタンでSheet2へ入力します。
A:B列は作業列として使用しています。これらはマクロでの処理を極力簡易にするためにシートでほとんどの処理をしています。
複数の選択肢から 1 つだけを選択するときに使用します。
グループボックスを利用してグループ別に制御することが出来ます。
【操作方法】
[表示]→[ツールバー]→[フォーム]を選択して、[フォーム]ツールバーを表示します。
ツールバーのオプションボタンをクリックし、シート内をクリックすると、オプションボタンが配置されます。
文字部分をクリックして、カーソルを表示すれば文字を修正できます。
例では「男性」「女性」に変更しました。
この2つのオプションボタンで1セットになるのでグループ化します。
ツールバーのグループボックスボタンをクリックし、オプションボタン2個を囲みます。
オプションボタンの書式設定をします。
オプションボタンを右クリックし、[コントロールの書式設定]を選択します。
リンクするセルに「B3」セルを指定します。
女性の方のオプションボタンはグループ化されているので、自動的に「B3」に設定されます。
オプションボタンのON,OFFの状態をB3セルに入力するということです。
ここの例では2こ配置していますので、どちらがONになっているか数値が入力されます。
男性なら1,女性なら2となります。
同様に年齢の区分をオプションボタンで作成します。
リンクするセルはB6とします。
オプションのONとOFFを切り替えます。
チェックが入っている時はTRUE、入っていない時はFALSEが返ります。
ツールバーのチェックボタンをクリックし、シート内へ配置します。
リンクするセルはB8とします。
値を増減することが出来ます。
上向きの矢印をクリックすると値が増加し、下向きの矢印をクリックすると値が減少します。
【操作手順】
ツールバーのスピンボタンをクリックし、シート内へ配置します。
設置したスピンボタンを右クリックし、[コントロールの書式設定]を選択します。
最小値1,最大値12,変化の増分1,リンクするセルD11とします。
D11セルを選択し、[書式]→[セル]で表示形式を「G/標準"月"」とし、左揃えにしました。
スピンボタンでは最小値と最大値は0〜30000の範囲が設定できます。
基準を本日「TODAY()」にして、スピンボタンで日付を上げ下げするには?
スピンボタンの書式設定を現在値:15000、最小値:0、最大値:30000、変化の増分:1、リンクするセル:A2 とします。
表示するB2セルには=TODAY()+A2-15000 として、現在値を基準に上下できるようにします。
ドロップダウン リスト ボックスに項目が表示でき、選択した項目の番号が返されます。
【操作手順】
表示するリストをH13:H20に入力しておきます。
ツールバーのコンボボックスをクリックし、シート内へ配置します。
設置したコンボボックスを右クリックし、[コントロールの書式設定]を選択します。
入力範囲H3:H20,リンクするセルB14,ドロップダウンリストの行数8とします。
リストを表示し、選択した項目の番号が返されます。
【操作手順】
ツールバーのリストボックスをクリックし、シート内へ配置します。
設置したリストボックスを右クリックし、[コントロールの書式設定]を選択します。
入力範囲H3:H20,リンクするセルB17,選択の種類を「単一選択」とします。
リストを表示し、選択した項目の番号が返されます。
【操作手順】
ツールバーのボタンをクリックし、シート内へ配置します。
「入力」と文字を変更します。
マクロの登録ダイアログが表示されますが、この段階では登録しないので「キャンセル」ボタンで閉じます。
B列に返された値をマクロのコードでそれぞれの値に変換しても良いのですが、ここでは理解しやすくするためにシート内で処理します。
「性別」はB3の値が1なら男性、2なら女性となるようにします。
=CHOOSE(B3,"男性","女性") または=IF(B3=1,"男性","女性")
「年齢」は同様に=CHOOSE(B6,"10〜29歳","30〜49歳","50歳以上")
「振込済み」は=IF(B8,"済","未")
「誕生月」は=D11
「第1希望」は=INDEX($H$13:$H$20,B14)
「第2希望」は=INDEX($H$13:$H$20,B17)
としました。
ボタンをクリックするとシート2へデータを蓄積する仕組みにします。
[Alt]+[F11]でVBEを開きます。
または、メニューバーの[ツール]→[マクロ]→[Visual Basic Editor]を実行します。
VBEのメニューバーの[挿入]→[標準モジュール]を実行します。Module1が追加されます。
VBA ProjectのModule1が選択されているのを確認し、右の枠内に以下のコードを入力します。
A列に数式で値を返しているので、単純にA列の値をシート2へ入力するコードにしています。
Sub 入力()
Dim LastRow As Long
With Worksheets("Sheet2")
LastRow = .Range("A" & Rows.Count).End(xlUp).Row + 1
.Range("A" & LastRow).Value = Worksheets("Sheet1").Range("A3").Value
.Range("B" & LastRow).Value = Worksheets("Sheet1").Range("A6").Value
.Range("C" & LastRow).Value = Worksheets("Sheet1").Range("A8").Value
.Range("D" & LastRow).Value = Worksheets("Sheet1").Range("A11").Value
.Range("E" & LastRow).Value = Worksheets("Sheet1").Range("A14").Value
.Range("F" & LastRow).Value = Worksheets("Sheet1").Range("A17").Value
End With
End Sub
下図のような状態になります。
コードの入力が終了したらVBEを[閉じる]ボタンをクリックして閉じます。
このVBEへ入力したマクロを「入力」ボタンに登録します。
「入力」ボタンを右クリックし、右クリックメニューの「マクロの登録」を選択します。
マクロの選択でマクロ「入力」を選択肢[OK]ボタンをクリックします。
各項目を選択して「入力」ボタンをクリックすると、Sheet2へは下図のように入力されます。
セルの書式を整える Topへ
C1:G22を選択し、塗りつぶし(パターン)で色を付けます。
下図では影付きスタイルや、3-D表示を使っています。
A:B,H列が目障りなのでフォントの色を「白」にすれば見えなくなります。
[入力]ボタンを実行して、別シートにデータを転送後にフォームに設置した各フォームの値を元に戻します。
コードの例
青文字の部分はSheet2への転送部分です。黒文字の部分が初期値へ戻す部分です。
各フォームのリンクしているセルの値を変更して、フォームの状態を変更することができます。
Sub 入力()
Dim LastRow As Long
With Worksheets("Sheet2")
LastRow = .Range("A" & Rows.Count).End(xlUp).Row + 1
.Range("A" & LastRow).Value = Worksheets("Sheet1").Range("A3").Value
.Range("B" & LastRow).Value = Worksheets("Sheet1").Range("A6").Value
.Range("C" & LastRow).Value = Worksheets("Sheet1").Range("A8").Value
.Range("D" & LastRow).Value = Worksheets("Sheet1").Range("A11").Value
.Range("E" & LastRow).Value = Worksheets("Sheet1").Range("A14").Value
.Range("F" & LastRow).Value = Worksheets("Sheet1").Range("A17").Value
End With
' 初期値に戻す
With Worksheets("Sheet1")
Range("B3").Value = 1
Range("B6").Value = 1
Range("B8").Value = False
Range("B14").Value = ""
Range("B17").Value = ""
Range("D11").Value = 1
End With
End Sub
実行前
[入力]ボタンをクリックした後、初期値とするものに戻しました。
スポンサードリンク
よねさんのWordとExcelの小部屋 |Excel(エクセル)講座の総目次 |Excel(エクセル)基本講座の目次 |フォーム コントロール
PageViewCounter
Since2006/2/27