エクセルのマクロ(データベースの登録フォーム)について 削除


Message#3 2014年12月16日(火)14時07分
From: マスタージョイン
ご質問の内容は やりたい事が解りやすく整理されていて
質問者の素養が感じられて好印象をえました!

そこで、どうせなら1から始めましょう
1)とりあえず1言
産地コード、産地-->産地マスタ シートを作成して置く
種別コード、種別-->種別マスタ シートを作成して置く

--都道府県コード(JIS規格) 産地マスタ---
A列 、 B列
産地コード、産地名
1 北海道
2 青森県
3
4
5
6
:
:
:
:
47 沖縄県
-----------------------------
2)TextBox3~TextBox8はやめて
ComboBox1~ComboBox6に変更しましょう。理由は
いちいち都道府県をテキスト入力するのは効率が悪いしタイプミスもあり得るので次に説明する方法でComboBoxにセットしておきましょう。

///////コンボ設定方法//////
VBAエディターで左ペインのUserForm1を右クリック->コード表示を左クリック
右ペインの左上▼でUserform を選択
右上の▼でInitialize を選択すると以下のような空っぽのイベントサブプロシージャができます。
これは、ユーザーフォームがShow ()やLoadで
メモリに最初に読み込まれた時に1回だけ発生するイベントです。
HideのあとのShowでは発生しません。
ちなみにUserForm_Activate()イベントはアクティブになるたびに呼び出されるイベントです。どのタイミングでマスタを読むのか?
たとえば商品マスタなどは稼働中に追加変更される場合を考えてUserForm_Activate()やWorkSheet_Change()イベントなどでComboBoxを再設定します。
ここでは都道府県なので、フォーム表示中の変更は無いはずなのでInitialize()で良いと思います。

[動作条件] Sheets("産地マスタ")に上記説明の都道府県データが有ること。
UserForm1.Show (vbModeless)でテストしてみてください。
■以下をUserForm1のコード域へコピペしてください■


Private Sub ComboBox1_Change()
TextBox9 = ComboBox1.Value
End Sub
Private Sub ComboBox2_Change()
TextBox10 = ComboBox2.Value
End Sub
Private Sub ComboBox3_Change()
TextBox11 = ComboBox3.Value
End Sub
Private Sub ComboBox4_Change()
TextBox12 = ComboBox4.Value
End Sub
Private Sub ComboBox5_Change()
TextBox13 = ComboBox5.Value
End Sub
Private Sub ComboBox6_Change()
TextBox14 = ComboBox6.Value
End Sub
Private Sub UserForm_Initialize()
Dim Rmax As Long
Dim i As Byte
Dim c As Byte
With Sheets("産地マスタ")
'1行目が見出しの場合沖縄は48行目ですが
'最終行を得る方法として 最下行からCTRL+↑で止まったセルの行を得る方法が一般的です
'他にSpecialCells()でVBA内の既定の定数を利用して範囲指定する場合もあります
'xlCellTypeConstants 定数が含まれているセル 定数値= 2
'xlCellTypeFormulas 数式が含まれているセル 定数値= - 4123
'この場合以下の2行の結果Rmaxの値は同じですが 途中に空白行があると結果は異なります。
' 別法 Rmax = .Columns(1).SpecialCells(xlCellTypeConstants).Rows.Count
Rmax = .Cells(Cells.Rows.Count, "A").End(xlUp).Row

For i = 2 To Rmax
For c = 1 To 6
Controls("Combobox" & c).ColumnCount = 2
Controls("Combobox" & c).TextColumn = 2
Controls("Combobox" & c).BoundColumn = 1
Controls("Combobox" & c).ColumnWidths = "0.4 Cm;2 Cm"
Controls("Combobox" & c).AddItem
Controls("Combobox" & c).List(i - 2, 0) = .Cells(i, "A") '産地名code
Controls("Combobox" & c).List(i - 2, 1) = .Cells(i, "B") '産地名
Next
Next
End With
End Sub

今後私宛に質問くだされば、何度でも回答します。段階的に行きましょう!

上のメッセージを削除します。
よければパスワードを入力し、削除ボタンをクリックしてください。

パスワード:

ExcelのVBAについてのQ&A掲示板

↑ExcelのVBA全般について分からない事があればこちらの掲示板よりご質問ください^^

VBAのInternetExplorer操作入門

↑ExcelのVBAをマスターできたら、エクセルVBAのIE(InternetExplorer)操作にも挑戦してみてください^^

VBAのIE制御入門RSS

RSSフィードを登録すると最新記事を受け取ることができます。

VBAIE操作のスカイプレッスン

エクセルVBAのステートメント

こちらでは、エクセルVBAの事例で利用したステートメントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのオブジェクト

こちらでは、エクセルVBAの事例で利用したオブジェクトをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのプロパティ

こちらでは、エクセルVBAの事例で利用したオブジェクトのプロパティをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのメソッド

こちらでは、エクセルVBAの事例で利用したオブジェクトのメソッドをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのイベント

こちらでは、エクセルVBAの事例で利用したオブジェクトのイベントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

dmb.cgi Ver. 1.068
Copyright(C) 1997-2014, hidekik.com