[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ユーザーフォーム、セルの値をTextやListボックスへ』(ひなの)
またユーザーフォームについて教えていただけますとうれしいです。よろしくお願いします。
Q.今回はユーザーフォームを開くとセルの値([A][B][C])をテキストやリストに表示させたいです。
調べでは、下のコードで、できそうな気がするのですが、エラーばかりでどうにもなりません。 何がいけないのでしょうか?
("Sheet1")
[A] [B] [C] [1] NO 品名 容量 [2] A01 みかん 1 [3] A02 りんご 2 [4] A03 まんご 3 [5] A04 グレープ 4 [6] A05 鉛筆 5 [7] A06 消しゴム 6
Private Sub UserForm2_Initialize()
Dim lastRow As Long
lastRow = Worksheets("Sheet1").Cells(.Rows.Count, 1).End(xlUp).Row + 1 ME.List品名.List = Worksheets("Sheet1").Cells(lastRow, 1)
End Sub
< 使用 Excel:Excel2010、使用 OS:Windows7 >
是非、γさんの紹介されたページを参照しましょう。 リストボックスへのセル範囲の登録のコード例Bに、今回の要件に偶然にも列数もドンピシャリのものが掲載されていますよ。
(β) 2016/06/20(月) 07:19
ありがとうございます。おかげさまで、
エクセルの値をLISTBOXに取り込み LISTBOXの値をエクセルに書き出すまで、できちゃいました。
Q1.しかし、標準モジュールで、 「Sub myform1()」を「Sub 入力()」とかに変更するとエラーになります。 普段なら何の名前でもOKなはずなので、何ででしょうか? 変数か何かですか?
Q2.「Private Sub UserForm_Initialize()」の箇所ですが、「UserForm」もそうです、普段はUserFormとNO入れるのにこの場合は入れないですね。複数UserForm使う場合は値迷子になりませんか?もしかして、一個しか使えないのかしら?
Q3.よくばりが出てました、 マルチページに設定するのにわかり易い資料ありましたら。うれしいです。
標準モジュール
Sub myform1()
Load UserForm1 UserForm1.Show vbModeles End Sub
Private Sub CommandButton1_Click() Dim lastRow As Long Dim i As Integer '書き出すシート With Worksheets("Sheet4") lastRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1 For i = 1 To 3 .Cells(lastRow, i).Value = ListBox1.List(ListBox1.ListIndex, i - 1) Next i End With End Sub
Private Sub CommandButton2_Click()
Unload Me End Sub
Private Sub UserForm_Initialize()
Dim lastRow As Long Dim myData '商品リストシート With Worksheets("Sheet1") myData = .Range(.Cells(1, 1), .Cells(Rows.Count, 3).End(xlUp)).Value End With 'リストボックス内の列の大きさ With ListBox1 '列の数 .ColumnCount = 3 '3列の大きさ .ColumnWidths = "40;100;50" .List = myData End With End Sub
(ひなの) 2016/06/20(月) 12:40
>>標準モジュールで、 「Sub myform1()」を「Sub 入力()」とかに変更するとエラーになります。
ふつうはエラーになりません。どういうエラーですか? エラーメッセージを教えてください。
>>.「Private Sub UserForm_Initialize()」 >>複数UserForm使う場合は値迷子になりませんか? >>もしかして、一個しか使えないのかしら?
迷子にはなりません。あくまでユーザーフォームモジュールは、それが書かれている特定のユーザーフォームに属しています。 ですから、メモリーにLoad された時点で ユーザーフォームを制御するロジックは そのユーザーフォームのユーザーフォームモジュールに書かれた UserForm_Initialize という名前のプロシジャを動かします。 なので、はい、1つのユーザーフォームモジュールには1つしか書けません。
ときどき Private Sub UserForm1_Initialize() と書いている人を見受けます。 これは ユーザーフォーム制御ロジックから見れば、【見知らぬ名前のプロシジャ】、Sub 花子() と同じです。 ですから、永久に実行されません。でも、コンパイルエラーにはならないので、おかしいおかしいという質問を目にすることも ありますね。
>>マルチページ
参考にされたページ、リストボックスの説明セクションですが、このページの一番上のバナーで 目次をクリックすると 22.ユーザーフォームを利用する というところにそのほかのコントロールの説明もありますが、残念ながら、マルチページの 説明は含まれていません。
【ユーザーフォーム マルチページ】といったものでネット検索してみてください。 説明ページがたくさんヒットします。その中で、ひなのさんがわかりやすそうなものを選んで勉強されてはいかがでしょう。
↑は、マルチページ関連のページのリンク集です。
(β) 2016/06/20(月) 13:36
マクロが見つかりません。というエラーメッセージです。
でもそれはあたりまえです。
「Sub myform1()」でマクロ登録しているのに
「Sub 入力()」に変更した場合は再度マクロ登録しないといけないのに、
私してなかったので、エラーが発生したのです。 σ(馬゚д゚鹿)
>>.「Private Sub UserForm_Initialize()」 >>複数UserForm使う場合は値迷子になりませんか?
あっそっか UserForm1 には UserForm1のモジュールがあって
UserForm2にはUserForm2のモジュールがあるので迷子にはならないですね。
マルチページはチャレンジしてみます。
ありがとうございます。理解できました。
(ひなの) 2016/06/20(月) 18:20
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.