[三流君] / [VBA系メニューへ] / [バックナンバー目次]

Excel 入力フォーム(UserForm)の作成

Excel VBAを使って、フォーム(UserForm)を作成したいと思います。
フォームを新規作成して、コントロールを軽く貼ってみました。はじめの一歩として参考となれば幸いです。
過去のメルマガ:[VBA でExcel UserForm(ユーザーフォーム)を操作する] にもサンプルが少しあるので見て三流解説を笑ってください。
And その他、直接、[Excel シートにコントロールを貼る] 方法もあるので、暇な時確認してください。



今回は、
Excel入力フォーム(UserForm)の作成方法を軽く、書きたいと思います。

/*
 * 1. フォーム(UserForm)の作成
*/

まぁ、Accessを使っている人は、
フォーム --> 新規作成

などでよく、作っていると思います。

私もあまり作らないのが
Excel のユーザーフォームです。

Excel97の例を書くと、(Excel2000も一緒だけど)
いつものモジュール編集に行くための
Alt+F11 を押します。
~~~~~~~~~~~~~~~~~~~
次に、メニューから
挿入 -- ユーザーフォームを選択します。


すると、白紙のフォームを作成することが出来ます。


/*
 * 2.コントロール
*/

ここからがスタートで、
基本は、コントロールを貼り付けて、
動作を書いていくんだけど。

何?コントロールって?

なんて説明しようかなぁ、そんな困った時はヘルプだよね、

[ラベル]
グラフィックのキャプションなど、ユーザーが変更できないテキストを設定します。

[テキスト ボックス]
ユーザーが入力または変更できる文字列を格納します。

・
・
・
[コマンド ボタン]
ユーザーがコマンドを実行するためのボタンを作成します。

うわ、説明長すぎ、
今回使いたいラベル、テキストボックス、コマンドボタンだけ抜粋しました。

/*
 * 3.ラベルを貼り付ける
*/
[ラベル]
グラフィックのキャプションなど、ユーザーが変更できないテキストを設定します。

何言ってんだろうね、これは?
タイトルとか説明とか表示する、入力の無いテキストかなぁ。

ふつうにツールボックスからAのアイコンを選択、


白紙のフォームエリアにワクを作るようにドラックすると、
あら不思議Label1とか勝手に出来てるよ。


これを目的の文書に変更します。
例)フォームのテスト作成ですなど、タイトルを。


ラベルを使用したコードが気になったらこっち(笑)↓
[No.122 Excel UserForm ラベルに情報を表示する]


/*
 * 4.テキストボックスを貼り付ける
*/

[テキスト ボックス]
ユーザーが入力または変更できる文字列を格納します。

これも簡単で、ツールボックスからab|のアイコンを選択、

フォームエリアにワクを作るようにドラックします。


簡単に貼り付け出来ましたね。

/*
 * 5.結果見たいよね
*/

もうガンマン出来なくなったアナタ、、、あとボタンの説明で終わりだから。
じゃなくって、
デザインって確認しながら作りたいですよね?

そんなアナタに、フォームの実行方法。
とても簡単で、
F5を押す(えっそんな簡単)
か
メニューから実行--Subユーザーフォームの実行を選択する


それか、
Subユーザーフォームの実行
のボタンを押す。


すると、編集中のフォームが表示されます。


えっ、どうやって終わらせるのか迷ったアナタ、
右上のXボタンで落ち着いて終わらせてね。

/*
 * 6.ボタンの作成、貼り付け
*/

[コマンド ボタン]
ユーザーがコマンドを実行するためのボタンを作成します。

よく見かけるのは、
OKやキャンセルの確認ボタンや登録・削除などの実行ボタン。

これも貼り付けは簡単で、
ツールボックスからコマンドボタンを選択します、


フォームエリアにワクを作るようにドラックします。


簡単に貼り付け出来ましたね。

名称を「閉じる」などに変更します。

F5を押して、イメージを確認する。


あれ?閉じるのボタン押したのに、閉じないよ。
チョット待てよ、日本語書いただけで動作したらプログラムする必要無いでしょ。
そっか(笑)
閉じるコードが気になったらこっち(笑)↓
[No.061 Excel Form 閉じる方法 Unload Me ]

/*
 * 7.終わりの挨拶
*/

今回は、
・Excelフォームの作成方法
・ラベル、テキストボックス、ボタンの貼り付け
・フォームの実行(表示)方法
でした。

さてと、次はフォームで何するかですよね。
何したいですか?(おいおい、考えとけよ)

拾い読みして、
1つでも何かの参考となれば幸いです。

Excel/Access大好き、三流プログラマーKen3でした。

過去のメルマガ:[VBA でExcel UserForm(ユーザーフォーム)を操作する] にもサンプルが少しあるので見て三流解説を笑ってください。
And その他、直接、[Excel シートにコントロールを貼る] 方法もあるので、暇な時確認してください。


MsgBoxを使って Excel UserForm Events の Test 2009/02/28


#Excel_UserForm_IE




番外編 Excel UserForm に IEを貼る

Excel UserForm に インターネットエクスプローラーを貼る そんな荒技が意外と簡単にできたりします
Excel2007のUserFormにIEを貼ってみました↓
Excel2007 UserForm に IE7を貼ってテスト
↑画面がゆれゆれの荒い動画ですが、何かの参考となれば幸いです

Excel UserForm に IEを貼る 20080213Book2003.zip
↑をダウンロードして実際に使ってみてください。

ここから、前置き長いけど(蛇足が多いですが)、ExcelのユーザーフォームにIEを貼り、それを操作する(代入する)、そんな感じが一番既存のプログラムの修正が少ないと思い姑息な逃げ手をUPします。※逃げてじゃなくて、はじめから私がユーザーフォームに貼るサンプルをUPしていれば被害が少なかったのかも・・・かなり反省。

フォームを1つ作り IEのオブジェクトを貼る

まぁ、ユーザーフォームを選択すると、下記のようにUserForm1が作成されます。
2008021301_2

次に、ツールボックスで空白エリアを選択後、右クリックを押してその他を選択します。
2008021302

利用可能なコントロールがたくさん表示されるので迷いますが、
下の方にスクロールさせ、Microsoft Web Browser を選択します。
2008021303

すると、コントロールに丸い世界のアイコンが表示されます。※地球をイメージ?
これを選択してフォームに貼り付けます。
2008021304

貼り付けると こんな感じ↓(オブジェクト名 WebBrowser1 で貼り付けられると思います)

2008021305

忘れずに保存します。
次に標準モジュールをいつものように作成します。
ここで、気がつくが、ドットを押してメソッドやプロパティが出るので大変便利?
2008021306
↑もっとはやく 教えろよ ボケ・・・と 読者の声が聞こえてくるような・・・・

IEを貼ったフォームを開いてみます

Sub form_open_test()  '標準モジュールから
    'IEを貼ったフォームを開いてみます。
    UserForm1.Show vbModeless '開くOpenと言いつつ、Show 見せる
    '↑ユーザー フォームがモーダルかモードレスかを示すブール型に注意
    'モードレス で 開いたまま、下の処理を実行
   
    'フォームを開いただけじゃ面白くないので、
    UserForm1.WebBrowser1.Navigate "http://www.ken3.org/"

    While UserForm1.WebBrowser1.Busy
        DoEvents  'いつもの意味無しの待ち
    Wend

    '止める?
    If MsgBox("フォームを閉じますか?", vbYesNo) = vbYes Then
        'フォームをアンロードする(閉じる)
        Unload UserForm1
    Else
        MsgBox "そのままお楽しみください(笑)"
    End If

End Sub

こんな感じで、ExcelのUserFormに違うアプリケーションのオブジェクト(ここではIE)を貼ることもできます。
IE操作 の 続きに 興味があったら [三流君 VBAでIEを操作]を見て笑ってください
※いろいろな応用を考えないとなぁ・・・


検索して目的の情報を探す。

目的の情報を探すには、最近はググれとよく聞きます。なので、検索ボックスを付けました。
いろいろなキーワードを入れて、検索してみてください。

カスタム検索
三流君(site:www.ken3.org) 内を Googleを利用してキーワード する

ページフッター

ここまで、読んでいただきどうもです。ここから下は、三流君宛のメッセージ送信や 三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、※質問や感想は、気軽に送ってくださいね。

質問や要望など メッセージを送る(三流君に連絡する)

質問や要望など連絡方法でお互い確認が取りやすく、便利なのが掲示板なのですが、私の対応のまずさから不定期で荒れてしまい、掲示板は現在封鎖中です。(反省しなきゃ)
感想や質問・要望・苦情など 三流君へメッセージを送る。
時間的余裕のある要望・質問・苦情の場合は、下記のフォームからメッセージを送ることができます。

あなたのお名前(ニックネーム):さん
返信は?: 不用(HP更新を待つ) , E-mail→ アドレス:に返事をもらいたい



(感想や質問・要望 メッセージはHPで記事に載せることがあります。)

急ぎで連絡がほしい、そんな時は:[三流君連絡先]に連絡してください。

リンクや広告など

項目別に↓に人気の記事をまとめてみました。お探しのジャンルを選択してください。
人気記事(来場者が多いTOP3):
[VBAでIE,WebBrowserを操作]・・・VBAでIE,WebBrowserを操作する サンプルです
[Access から Excel 連携 CreateObject("Excel.Application")]・・・AccessからExcelを操作したりデータの書き出しなどです
[VBAでOutlookの操作 CreateObject("Outlook.Application" )]・・・VBAからOutlookを使い、メール関係を処理するサンプルです
↑上記3つみたいなCreateObjectで他のアプリケーションを操作するサンプルが人気です。

開発時の操作: [F1を押してHELPを見る]/ [Debug.Print と イミディエイトウインドウ]/ [実行時エラーでデバッグ]/ [参照設定を行う]

仕様書(設計書?) XXXX書類: [基本設計書や要求仕様書]/ [テスト仕様書 テストデータ]/ [バグ票]/ [関数仕様書]/ [流れは 入力・処理・出力]

Excel関係:
[Excel UserFormを操作する]・・・エクセルでユーザーフォームを作成して入力などを行ってます
[ExcelからAccessを操作する]・・・ExcelからAccessのマクロを起動してみました、
[Excel関係 関数、その他]・・・その他Excel関係です

Access関係:
[Access UserForm/サブフォーム 操作]・・・アクセスでフォームを使ったサンプルです
[Access レポート操作]・・・レポートを操作してみました
[Access クエリーやその他関数]・・・あまりまとまってませんが、スポット的な単体関数の解説です

その他:VBAの共通関数やテキストファイルの操作など
[VBAでテキストファイル(TextFile)の操作]・・・普通のテキストファイルを使ったサンプルです
[VBA 標準関数関係とその他解説]・・・その他、グダグタ解説してます

Blog:[三流君の作業日記]/ [サンプルコードのゴミ箱]/ 広告-[通販人気商品の足跡]



[三流君(TOP ken3.org へ戻る)] / [VBA系TOPへ] / [VBA系バックナンバー目次へ移動]