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

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

ただいまの
回答率

88.59%

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

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 4,202

kazu9n

score 13

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といった形で抽出したいです。
このコード自体が問題なのか、それ以外が問題なのかわかりません。

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    2018/11/06 16:04

    複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という意見がありました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

回答 2

+2

エクセル VBA リストボックスについて質問です。

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/11/06 10:57

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

    ソース貼ったからそこから読み取って、という意図ならちょっと横暴です。

    キャンセル

  • 2018/11/06 11:00

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

    キャンセル

  • 2018/11/06 13:47

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

    キャンセル

checkベストアンサー

0

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


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

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

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

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

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

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

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/11/06 18:13

    救われました (-人-)

    キャンセル

  • 2018/11/06 18:14

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

    キャンセル

  • 2018/11/06 19:13

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

    キャンセル

  • 2018/11/07 09:13

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

    キャンセル

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

  • ただいまの回答率 88.59%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

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