質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

9342閲覧

ExcelのVBAでリストボックス内の列をダブルクリックして、メッセージボックスに表示させたい。

kazu9n

総合スコア13

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2018/11/06 00:08

編集2018/11/06 03:15

VBAでシステムを作っています。
リストボックス内の列をダブルクリックして、メッセージボックスに表示させたいです。

発生している問題・エラーメッセージ

型が一致していません

該当のソースコード

Private Sub ok_Click() Dim lastRow As Long Dim myData, myData2(), myno Dim i As Long, cn As Long With Worksheets("入力画面") lastRow = .Cells(Rows.Count, 1).End(xlUp).Row myData = .Range(.Cells(1, 1), .Cells(lastRow, 11)).Value End With ReDim myData2(1 To lastRow, 1 To 11) For i = LBound(myData) To UBound(myData) If myData(i, 1) Like "*" & date1.Value & "*" And myData(i, 2) Like "*" & den.Value & "*" _ Then cn = cn + 1 myData2(cn, 1) = myData(i, 1) myData2(cn, 2) = myData(i, 2) myData2(cn, 3) = myData(i, 3) myData2(cn, 4) = myData(i, 4) myData2(cn, 5) = myData(i, 5) myData2(cn, 6) = myData(i, 6) myData2(cn, 7) = myData(i, 7) myData2(cn, 8) = myData(i, 8) myData2(cn, 9) = myData(i, 9) myData2(cn, 10) = myData(i, 10) myData2(cn, 11) = myData(i, 11) End If Next i With ListBox1 .ColumnCount = 11 .ColumnWidths = "30;30;30;30;30;30;30;30;30;30;30" .List = myData2 End With End Sub Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) Dim r1 As Variant Dim r2 As Variant With Worksheets("入力画面") r1 = .Range(.Cells(ListBox1.List(ListBox1.ListIndex, 0) + 1, 1), .Cells(ListBox1.List(ListBox1.ListIndex, 0) + 1, 11)) r2 = WorksheetFunction.Transpose(WorksheetFunction.Transpose(r1)) MsgBox Join(r2, "") End With End Sub Private Sub UserForm_Initialize() Dim lastRow As Long Dim myData10, myData12() Dim i As Long Dim cn As Long With Worksheets("入力画面") lastRow = .Cells(Rows.Count, 1).End(xlUp).Row myData10 = .Range(.Cells(1, 1), .Cells(1, 11)).Value End With ReDim myData12(1 To lastRow, 1 To 11) For i = LBound(myData10) To UBound(myData10) cn = 1 myData12(cn, 1) = myData10(i, 1) myData12(cn, 2) = myData10(i, 2) myData12(cn, 3) = myData10(i, 3) myData12(cn, 4) = myData10(i, 4) myData12(cn, 5) = myData10(i, 5) myData12(cn, 6) = myData10(i, 6) myData12(cn, 7) = myData10(i, 7) myData12(cn, 8) = myData10(i, 8) myData12(cn, 9) = myData10(i, 9) myData12(cn, 10) = myData10(i, 10) myData12(cn, 11) = myData10(i, 11) Next i With ListBox1 .ColumnCount = 11 .ColumnWidths = "30;30;30;30;30;30;30;30;30;30;30" .List = myData12 End With End Sub

補足情報

入力画面というエクセルのワークシートから取り出したいです。
リストボックスの項目数は11項目(金額、メーカー等)有ります。
A1:A11といった形で抽出したいです。
このコード自体が問題なのか、それ以外が問題なのかわかりません。

追記
自分で探した方が簡単そうなので自分でやりますね

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

エクセル VBA リストボックスについて質問です。
この質問者と同一人物でしょうか?
それとも学校か何かの課題?
この回答(私のですが)のコードを使っているようですが、余計な修正をしているせいで動いていないようです。
元のコードをそのまま使ってください。

投稿2018/11/06 00:22

ttyp03

総合スコア16996

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kazu9n

2018/11/06 00:42

同一人物です。 そのまま使っても動きませんでした
ttyp03

2018/11/06 00:51

え、解決したから質問閉じたのではないのですか? 動かないとはどのようになるのですか?
ttyp03

2018/11/06 01:07

あれ?質問を良く見たら前回と要件が変わってる? 前回:シート上から11列取り出して表示したい 今回:リストボックスが11列ありそれを表示したい 前回も書きましたが、やりたいことを明確にしてください。
kazu9n

2018/11/06 01:16

横にABCDEFG・・・と11項目ありますっていうことです。 シートでいう横一列をとりだしたいのです。 なにもかわってないです。明確だと思いますけど・・・
ttyp03

2018/11/06 01:20

「リストボックスの項目数は11項目有ります。」って書いてますが。 シートから取り出す仕様も書いてないですし。 リストボックスにはどのような値が登録されているのですか? 明確って言うのは、 ・リストボックスの仕様(何列あって何が登録されているか) ・ダブルクリックしたときの仕様(リストボックスから何を取り出してシート状のどこを参照してどのように出力するのか)
ttyp03

2018/11/06 01:21

それからこの質問に載せているコード=元のコード、ではないのはわかってますよね? 余計なDebug.Printは取ってくださいね。
kazu9n

2018/11/06 01:51

明確だと思ってました。 すいませんでした。 全部貼り付けました。
ttyp03

2018/11/06 01:57

いや、コード貼られてもね。 結局、これが書かれてないですよね。 ・リストボックスの仕様(何列あって何が登録されているか) ・ダブルクリックしたときの仕様(リストボックスから何を取り出してシート状のどこを参照してどのように出力するのか) ソース貼ったからそこから読み取って、という意図ならちょっと横暴です。
ttyp03

2018/11/06 02:00

リストボックスとシートを紐付ける条件がわからない。 リストボックスの「何」を元に、シートの「どこ」を持ってくればよいのでしょうか?
ttyp03

2018/11/06 04:47

>自分で探した方が簡単そうなので自分でやりますね どうしてそうなる・・・ 人に説明できないということは、自分が何をやるべきかを理解していないということですよ。
guest

0

ベストアンサー

やり取りを見ていてあまりにもひどいと思ったので、横から失礼します。
※技術的な回答ではありませんので+評価は不要です。(-評価は受けます。)


#VBAでシステムを作っています。
#リストボックス内の列をダブルクリックして、メッセージボックスに表示させたいです。
⇒何を表示させたい?

#入力画面というエクセルのワークシートから取り出したいです。
⇒何を取り出したい?

#リストボックスの項目数は11項目(金額、メーカー等)有ります。
#A1:A11といった形で抽出したいです。
⇒何をどこへ抽出したい?

#このコード自体が問題なのか、それ以外が問題なのかわかりません。
#追記
#自分で探した方が簡単そうなので自分でやりますね

問題はコードにあるのではなく、質問文の文章能力と、質問する姿勢にあると思います。

質問文には大事な「目的」の部分が抜けていて、質問者さんの頭の中にある「なにをどうしたいのか」という部分が読み手としては掴みきれません。
情報の伝達能力が不足しています。
そしてその説明を求めると、キャッチボールが面倒になったのか「自分でやります」でF/Aですか?

kazu9nさんはこのサイトでお金を払ってヘルプデスクサービスを受けているお客様ではなく、回答者さんの善意のアドバイスを無償で受けようとされている立場ですよね?
質問する側は立場が低いなんていうつもりはさらさらありませんが、捨て台詞のように「自分で探した方が簡単そうなので自分でやりますね」というのは、解決のためにお付き合いしてくれているttyp03さんに対してあまりにも失礼だとは思いませんか?

そもそも自分でやれるのに最初からそうしなかったのはなぜですか?

簡単に答えだけほしいという姿勢が見て取れますが、正解だけを手に入れても技術者としての成長はあり得ません。
問題はそこにあるのではないでしょうか。

投稿2018/11/06 08:53

jawa

総合スコア3013

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ttyp03

2018/11/06 09:13

救われました (-人-)
ttyp03

2018/11/06 09:14

+評価したいけど、技術的な回答ではないのでやめておきます。
ttyp03

2018/11/06 10:13

えーっ、jawaさんにベストアンサーつけちゃうか。 ワイの苦労は何やったんや。
jawa

2018/11/07 00:13

ttyp03さんの回答にコメントして荒れると申し訳ないので別で立てたのですが、まさかそうくるとは。。 申し訳ないです。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問