2016年1月10日日曜日

エクセルにフォームをつける Part I (01)

エクセルのデータ表で、フォームを作って操作する(その1)準備~フォームの表示

データの整理には、エクセルの表を使うとわかりやすくて便利です。でも、たくさんの項目が横に並ぶと見づらくなるので、そういう時にフォームを作ります。カード型のフォームを作ると、内容を一目で見ながら入力編集できるし、入力チェックや書式の統一なども自由に設定できて、望み通りの使い方ができるようになります。
フォームは、エクセルのプログラム機能を使って作ります。エクセルには、VBAというプログラム言語が装備されていて、すぐに始めることができます。
サンプルを使ってその作り方を書いていきます。プログラムになじみのない人向けです。ちょっと作れるようになると、とても仕事がはかどるので、興味のある人はどうぞ。

バージョンは2016(2013とほぼ同じ画面です)です。サンプルの表(csv形式)を用意しました。よければこちらからダウンロードして使ってください。(右クリックして「名前をつけてリンク先を保存」)

その1:準備 ----------


【1-1】画面の準備

1. サンプル.csvを、Excelで開きます。
2. 画面を整えます
 0) リボンを隠して、タブだけを表示。(やらなくても構いません。リボンを出したままでも、OK)
  1. 右上の「リボンの表示オプション」をクリック
  2. 「タブの表示」をクリック
106_1
 1) 行列番号の表示を、R1C1形式に変えます。(ここではR1C1形式で作業します)
  1. [ファイル] タブをクリック
  2. [Options] をクリック
  3. [数式] をクリック
    数式の処理で、「R1C1参照形式を使用する」にチェックを入れて、[OK]
2) リボンに「開発」タブを出します。(Visual Basicエディタを使うためです)
  1. [ファイル] タブをクリック
  2. [Options] をクリック
  3. [リボンのユーザー設定] をクリック
  4. 右側の[リボンのユーザー設定]で [メイン タブ]の [開発]に チェック を入れて[OK]
↓結果です:1) 列番号の表示がABCから123に。2) 開発タブが表示されます。↓
107

3. 名前をつけて保存してください。ファイルの種類は「マクロ有効ブック(*.xlsm)」で。(ここでは、サンプル.xlsmとしました。)
4.プログラムを作る画面「Visual Basic Editor」を立ち上げます。
  1. [開発] タブをクリック
  2. リボン左端の「Visual Basic」をクリック
105

※ これで、準備完了です。

その2:フォームを作って表示する ----------

【2-1】ユーザーフォームを作ります(Visual Basic Editor上の操作です)

1)ユーザーフォームを作る準備をします
  1. [挿入]をクリック
  2. [ユーザーフォーム]をクリック
203
画面左のプロジェクトエクスプローラには「フォームモジュール」と「UserForm1」が、Editorの中には無地のフォームができました。
203_2

2)UserForm1に、ツールボックスからコントロール(「ラベル」「テキストボックス」「コマンドボタン」)を配置します。
 ※ 配置したコントロールの調整は、「オブジェクトの選択」をクリックして行います。
204
205
※ コントロールの位置・フォントなど、ビジュアルデザイン部分の調整は後ほど説明します。こだわらなくてもOKです。今のポイントは、「コントロールがフォーム上にあること」なので。
※ 以上で、フォームの形ができました。

【2-2】ユーザーフォームを表示するプログラムを書きます(Visual Basic Editor上の操作です)

1)プログラムを書く準備をします
  1. [挿入]をクリック
  2. [標準モジュール]をクリック
301
画面左のプロジェクトエクスプローラには[標準モジュールフォルダ]と[Module1]が、Editorの中には無地の白い画面ができました。
302


2)プログラムを書きます(「フォームを見せて」と、ことば通りに書きます)
303
上記3行を、エディタに書きます。以下はその説明です。

1. 命令を書くために、プロシージャと呼ばれる枠を作ります。

sub edit_data()

end sub
※ edit_data の部分は、このプロシージャの名前です。自由に決めてください。
 (私は「データを編集」という意味で、edit_dataと書きました。 名前の中に空白が入ってはいけないので、「 _ (アンダーバー)」を使いました。)
2. sub と、end sub の間に、「UserForm1を見せて」と、書きます。(さきほど作ったフォームの名前が「UserForm1」でした。) UserForm1 と show の間は「.(ドット)」でつなぎます。

sub edit_data()

    UserForm1.Show

end sub
プログラムは会話と似ています。極端に言うと「やりたいことを言葉にしてそれを置き換えるだけ」なのですが、英語がベースなので「見せて」を「show」と書くことになります。(ぼそ:英語圏の人がちょっとうらやましいですね)

※ 以上で、プログラム書きは終わりです。

【2-3】プログラムを実行して、フォームを表示します(Visual Basic Editor上の操作です)

1)subと end subの間に、カーソルを置きます。
2)書いたプロシージャ「edit_data」を実行します。次の3つのどの方法でも構いません。
  1. その1.[実行]-[Sub/ユーザーフォームの実行] をクリック
  2. その2. F5キー を押す
  3. その3. 右向き三角マークをクリック
401
3)フォームが表示されます。
403

4)補足。カーソルが、subと end subの外にあると、プロシージャ(マクロ)選択画面がでます。
edit_dataを選んで「実行」してください。
404

※ 続きはまた今度。「シートにボタンを作ってフォームを表示する」と「フォームにデータを表示する」の予定です。
※ ここまでのデータは、こちらからダウンロードできます。(リンクを右クリックして保存)

続きはエクセルにフォームをつける Part I(02)





0 件のコメント:

コメントを投稿

BloomというAI

オープンソースのAI「BLOOM」が出ました。 日本語も使えるというので、早速サンプルページで遊びました。 白い文字が私。ピンクの文字がAI。 ↑AIとやりとり できたのが、これ。AIとの合作超短編童話😆 『 傘をさして公園を歩いていたら、小さなリスが足...