• 締切済み

エクセルのフォームをVBAで作るには?

セルの項目が多い場合 一般のフォームでは使えないようですが、 http://www.eurus.dti.ne.jp/~yoneyama/Excel/input_form.htm ここにあるフォームをVBAで作るとしたらどうすればいいのでしょうか? 教えてください。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

質問表現注意 フォームー>データーフォームのフォーム (注)フォームの使われ方 (1)一般会話や文章内で文書の構成などスタイル (2)コンピュターなどで印刷する項目と位置を決めた帳票(物理的) (3)表を作るときの項目と配置、罫線など画面のレイアウト(ソフト的) (4)VBAなどのユーザーフォームなどプログラム言語上で、コントロールなどを配置できるウインドウ。VBのフォームなど。 (ウインドウズ上で作る場合のもの) (5)エクセルでの、「データ」メニューの下のフォーム ーー >セルの項目が多い場合 あいまいな表現をせず、おおよその数の目安を書くべきでしょう。  やってみると、30列ぐらいだと、画面に収まるが。 ーーー >VBAで作る Sub Macro2() Range("a1:C1") = Array("A", "B", "C") Range("a1:C2").Select Application.DisplayAlerts = False ActiveSheet.ShowDataForm Application.DisplayAlerts = True End Sub 項目内容(見出し)の数は増やすこと。 ーーー 削除や変更まで盛り込むことは初心者には難しい。 だから最下行の下に追加処理だけにとどめるべきでしょう。 上記のようなことでなければ ユーザーフォームを1つシートに貼り付け(挿入ーユーザーフォーム) テキストボックスを項目数だけ、ユーザーフォームに貼り付け。 入力完了のコマンドボタンを1つ貼り付け。 そのコマンドボタンのクリックイベントに (プリミチブなカタチだが) Private Sub CommandButton1_Click() Set d = Range("a65536").End(xlUp).Offset(1, 0) d.Offset(0, 0) = TextBox1.Text d.Offset(0, 1) = TextBox2.Text d.Offset(0, 2) = TextBox3.Text '--- TextBox1 = "" TextBox2 = "" TextBox3 = "" TextBox1.SetFocus End Sub のようなもので出来る。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

ユーザーフォームを作成した事はまだないように見受けられますが。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_userform.html http://moug.net/tech/exvba/0091.htm こう言ったサイトを参考に作成しては如何でしょう。 オリジナルで何かをさせるって言うのは経験を積まないと難しいですが、頑張って下さい。

関連するQ&A

  • 上手く動かない。

    http://www.eurus.dti.ne.jp/~yoneyama/Excel/jituyou/kakeibo.htmのサイトを見ながらマクロを作ろうと思っています。しかし動きません。どうしてですか?

  • ExcelのVBAでフォームのプロパティをコード化したい

    Excel2000 を使っています。VBAでフォームを作ったんですが、VBと違いエクスポートしてもフォーム内容(プロパティ)はコードに入ってきません。 今のVBAはVBと揃えているとばかり思っていたのにがっかりです。 どうにかして、VBAのフォームプロパティをコードに出力する方法はないでしょうか。

  • VBAのフォームについて

    今、悩んでいるというか、不思議に思っていることがあります。 ACCESS2003 VBAで、VBAコードでメインのフォームから、ある帳票フォームのインスタンスを作成しています。メインフォームのモジュールに以下のように記述し、 Dim 帳票1 as Form で、ボタンのクリックイベントで、 set 帳票1 = New Form_帳票の元フォーム とインスタンスを生成します。更に、この帳票フォームには、同様に子フォームを持っています。こちらも同様に帳票フォームモジュールに、 Dim 詳細1 as Form として、あるボタンのクリックイベントに、 set 詳細1 = New Form_詳細フォーム と、しています。ここで、帳票1の閉じるボタンを押しても、詳細1のフォームは、閉じません。 同様に、帳票の元フォームに Dim 帳票2 as form ボタンクリックで、 Set 帳票2 = New Form_帳票2の元フォーム とします。さらに帳票2の元フォームには、 Dim Child帳票 as Form ボタンクリックで、 Set Child帳票 = New Form_帳票2の元フォーム としています。 これで、Child帳票は、いくつもいくつもインスタンス化されます。そこで、今までの動作に準じて、たくさんあるChild帳票の大元を閉じると、こちらは子フォームが全部閉じます。例えば10個子フォームを作って、途中を閉じるとちゃんとその子だけが閉じます。最初の例の帳票1フォームを閉じても、詳細1フォームが閉じないのと、何が違うのか分かりません。私は、フォームが閉じるときには、そのメンバクラス(フォーム)は、破壊されるものだと思っていたのですが、そうでもないようです。どなたかわかりやすく、教えていただけないでしょうか?

  • excelでVBAでユーザーフォームのリストBOX

    下記VBAの作成の仕方を教えていただけないでしょうか。 やりたいこと (1)sheet2のA1セル~A5セルまでの間の間をユーザーフォームのリストボックスに登録する (2)sheet1のA1セルをクリックすると、ユーザーフォームが起動し、任意のリストをクリックすると、 その値がA1セルに格納され。ユーザーフォームが終了する。 ※コマンドボタンは使わずにお願いします。なおexcel2000です。

  • Excel:セルの幅を個別の行に適用したい

    「excel:セルの大きさを小さくしたい」 http://okwave.jp/kotaeru.php3?q=2081753 ここで質問させてもらい、セルの幅や高さを指定する方法を教えてもらいました。 「エクセル基本講座 セル幅の調整」 http://www.eurus.dti.ne.jp/~yoneyama/Excel/cell_ido.htm#habatyousei ただ、このやり方ではシートの行全体に同じセル幅を適用することしかできません。 一行目はセル幅5で、 二行目はセル幅10で、 といったやり方は存在しないのでしょうか? どういうことがしたいかというと、 表を作っているのですが、その表では一行目に5個の項目があり、 それらを罫線で囲っています。 ところが二行目にはその倍以上の項目があり、 それらを罫線で囲まなければならないのですが、 罫線はセルの幅や高さに沿ってしか作成できないようで、 困っています。 よろしくお願いします。

  • エクセルの表示形式で

    http://www.eurus.dti.ne.jp/~yoneyama/Excel/user_set.htm のサイトに「123」という数値データに対して、表示形式「@"円"」を設定すると、「123円」というように入力値を@に置き換えて表示します、と記載がありますが、エクセル2007で試したところ「123」しか表示されません。これは2003までの機能なんでしょうか。

  • エクセルVBAのユーザーフォーム

    こんばんは、エクセルVBAでユーザーフォームを作成しました。 そこに入力したものがブックに反映するわけですが、フォームに0(ゼロ)を入力した場合、ブック上のセルを選択すると0と入っているのですが、表示されません。なぜでしょう???? これができないとせっかく時間をかけて作ったのに、使えません。どなたかご存知の方よろしくお願いします!!!!

  • EXCEL VBAのフォームについて

    EXCEL VBAでフォームを表示したときに、最小化ボタンを表示させることは出来ないのでしょうか。 通常、フォームを表示させると、右上にXのボタンのみ表示されますが、通常のWindowsの画面の最小化ボタンを表示させる方法が、判りません。 この機能は、EXCEL VBAには実装されていないのでしょうか。また、最小化ボタンでなくてもかまいません。要は、やりたいことは、表示されているフォームを一時的に最小化する為に、その機能を実装したいと言うことです。ご存じのかたおりましたら、教えて下さい。 当方の環境はwindows-xp excel-2000です。

  • エクセル【RANK関数の入力について】

    http://www.eurus.dti.ne.jp/~yoneyama/Excel/nyumon/seiseki/sei-n05.htm 上記のサイトでエクセルを勉強中の者です。 『(練習1)RANK関数の入力』の5で『I5セルのフィルハンドルをドラッグして、I14セルまで数式をコピーします。』となっているのですが、私がやった場合、図の通りの数字の順位になりません。 I5は範囲がH5~H14の場合の順位なので9位となるのですが、それ以降は範囲がそれぞれ1ずつ下がった状態で計算しているみたいで、I6は範囲がH6~H15になってしまい、本来5位のはずが6位となってしまいます。 多分何かがおかしいと思うのですが、宜しければご教授お願い致します。

  • Excel VBAで2~4列目の3行目以下を選択

    Excel VBAで2列~4目の3行目以下すべてを選択する方法は、ないでしょうか? 2列~4目すべてを選択というのは、比較的簡単で、たとえば Sub 2to4 ()   Worksheets("Sheet1").Activate   Columns("B:D").Select End Sub とでも書けばよいのでしょうが。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_cell.html 要はこれから3行目までを除外する方法があればいいわけですが、 そういう方法があったら教えてください。 今は、cells(2,1)から、cells(4,5000)までを選択といったように 原始的な方法でやってますが、この方法だと数字を大きくしすぎると 2003以前のバージョンでトラブり、数字を小さくしすぎると、選択しきれなかったりと…。 いろいろ不都合が多いので…。

専門家に質問してみよう