リストボックスからデータを転記する方法とは?

このQ&Aのポイント
  • リストボックスからデータを転記する際に実行時エラー"1004"が発生してしまいます。このエラーの原因と解決方法を教えてください。
  • Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) でデータの転記を行っていますが、エラーが出てしまいます。どうにかしてこのエラーを解消したいです。
  • リストボックスの選択したデータをシートに転記するコードを作成しましたが、実行時エラー"1004"が発生してしまいます。解決策を教えてください。
回答を見る
  • ベストアンサー

リストボックスについて

リストボックスからデータを転記したいのですが、 実行時エラー"1004"が出てしまい、どうしてもうまくいきません。 どなたか原因を教えてください。 Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) Dim i As Long With Worksheets("sheet2") i = .Range("F47").End(xlUp).Row + 1 .Range(i, 6).Value = ListBox1.List(ListBox1.ListIndex, 0) .Range(i, 12).Value = ListBox1.List(ListBox1.ListIndex, 1) .Range(i, 26).Value = ListBox1.List(ListBox1.ListIndex, 2) .Range(i, 28).Value = ListBox1.List(ListBox1.ListIndex, 3) .Range(i, 34).Value = ListBox1.List(ListBox1.ListIndex, 4) .Range(i, 37).Value = ListBox1.List(ListBox1.ListIndex, 5) End With Unload Me End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.1

たぶんもう自力で解決済だろうとは思いますが。。。 原因は、Rangeプロパティの使い方の間違いです。 >.Range(i, 6).Value = ListBox1.List(ListBox1.ListIndex, 0)  .Range("F" & i).Value =   通常このような場合は、Cellsプロパティがいいでしょう。  .Cells(i, 6).Value = 以上。

mimoule1998
質問者

お礼

ご回答ありがとうございます。 問題なく動作しました。 

関連するQ&A

  • リストボックス

    すいません以下の処理に困っております。 リストボックスで値を取得して他のリストボックスにその値を 出力したいのですがまったくできません。 <例> リストボックス1 a b c リストボックス2(上で選択した値を出力) a ちなみに構文は、 ------------------------------------------------------------ Private Sub btn選択_Click() ListBox2.Text = ListBox1.Text 'ListBox1.ListIndex + 1 & ": " & ListBox1.Text End Sub Private Sub CommandButton1_Click() End Sub Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) btn選択_Click End Sub Private Sub ListBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean) btn選択_Click End Sub Private Sub UserForm_Initialize() With ListBox1 .AddItem "スケジューラ" .AddItem "データ変換" .AddItem "DWH Server" .AddItem "PPP Server" .AddItem "ファイヤーウォール" .AddItem "暗号オプション" End With End Sub ---------------------------------------------------- 初心者でまったくできません。 御教授をお願いします。

  • リストボックスの値を拾うには

    リストボックスの値を拾うには 以下のボタンコマンドでListBox1のListIndexから配列二番目の値を「hinban」という変数に取り込みたいのですがうまくいきません。 「hinban = ListBox1.List(ListBox1.ListIndex, 1)」という行を書いてみましたが 「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」とアラートが出てしまいます。 VBA初心者です。 解決法を教えてください。 Private Sub CommandButton1_Click() Dim lastRow As Long Dim i As Integer With Worksheets("Sheet1") lastRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1 'For i = 1 To 3 '.Cells(lastRow, i).Value = ListBox1.List(ListBox1.ListIndex, i - 1) hinban = ListBox1.List(ListBox1.ListIndex, 1) 'Next i End With End Sub

  • Listプロパティについて

    お世話になります。 自分で作ったコードではないので、訂正していたらよくわからなく なってしまいました。 これはsheet1からsheet2にリストボックスから転記するように なっています。MyCol = Arrayの部分を変更したのですが、 参考書で調べてみたのですが、理解出来なかったので、質問しました。 ListIndex8までを転記していることはわかりました。 その後、ListIndexを11列周期で値をMyBufに代入したいと考えています。(言葉が適当なのかはわかりません) 下記の部分を変更すればよいと思うのですが、まずはコードの 意味を理解したいと思うので、このコードの意味をわかりやすく 解説してもらえませんでしょうか? MyBuf(i, 0) = .List(N, i * 9 + j + 8) Next Range(MyCol(j) & "21:" & MyCol(j) & "42").Value = MyBuf 以下コード Range("AP4").Value = ListBox1.List(ListBox1.ListIndex, 0) Range("AN3").Value = ListBox1.List(ListBox1.ListIndex, 1) Range("AQ3").Value = ListBox1.List(ListBox1.ListIndex, 2) Range("C3").Value = ListBox1.List(ListBox1.ListIndex, 3) Range("C6").Value = ListBox1.List(ListBox1.ListIndex, 4) Range("AH14").Value = ListBox1.List(ListBox1.ListIndex, 5) Range("AM54").Value = ListBox1.List(ListBox1.ListIndex, 7) Range("AH15").Value = ListBox1.List(ListBox1.ListIndex, 251) Range("AH16").Value = ListBox1.List(ListBox1.ListIndex, 252) Range("AH17").Value = ListBox1.List(ListBox1.ListIndex, 253) Range("AH18").Value = ListBox1.List(ListBox1.ListIndex, 254) Dim i As Integer, j As Integer, N As Integer, MyBuf(21, 0), MyCol MyCol = Array("B", "F", "K", "L", "Z", "AB", "AD", "AH", "AK", "AM", "AS") With ListBox1 N = .ListIndex For j = 0 To 8 If j <> 7 Then For i = 0 To 21 MyBuf(i, 0) = .List(N, i * 9 + j + 8) Next Range(MyCol(j) & "21:" & MyCol(j) & "42").Value = MyBuf End If Next End With Exit Sub

  • リストボックスの内容を検索したいが...

    エクセル2019を使っています。 添付画像のようにユーザーフォームにテキストボックスとリストボックスを作り、テキストボックスに入力した文字でリストボックスの内容を検索しようとコードを作成しました。 Private Sub TextBox1_Change() Dim LastRow As Integer Dim rng As Range, r As Range With Worksheets("Sheet1") If .AutoFilterMode <> True Then .Range("A1").AutoFilter End If LastRow = .Cells(Rows.Count, 1).End(xlUp).Row .Range("A1").AutoFilter 1, "*" & TextBox1.Value & "*" If .Cells(Rows.Count, "A").End(xlUp).Row > 1 Then Set rng = .Range("A2:A" & LastRow).SpecialCells(xlCellTypeVisible) Else Me.ListBox1.Clear Exit Sub End If End With Me.ListBox1.Clear With Me.ListBox1 For Each r In rng .AddItem r.Value .List(.ListCount - 1, 1) = r.Offset(0, 1).Value Next r End With End Sub Private Sub UserForm_Initialize() Dim LastRow As Integer Dim rng As Range, r As Range With Worksheets("Sheet1") If .AutoFilterMode <> True Then .Range("A1").AutoFilter End If LastRow = .Cells(Rows.Count, 1).End(xlUp).Row Set rng = .Range("A2:A" & LastRow) End With With Me.ListBox1 .ColumnCount = 1 For Each r In rng .AddItem r.Value .List(.ListCount - 1, 1) = r.Offset(0, 1).Value Next r End With ListBox1.ListIndex = 0 End Sub とりあえず検索はできるのですが、使用されていない文字や記号を入力したあとにバックスペースキーで入力した文字や記号を削除するとリストボックスの内容が意図した内容で表示されません。 どこを修正したらいいでしょうか。

  • VB リストボックス選択項目が取得できない。

    エクセルのユーザフォームで日程表を作っています。 下記ListBox1で会議名称だけ表示させています(チェックボックス無し)。 Private Sub ListBox1_click()で選択さした項目を、ここではあらかじめ結合したF5、F6セルに入力させたいのですが、なにも入力されません。 また、ウォッチウインドゥで cとListIndexとListBox1.Valueを設定し、実行後に見るとListIndex 2、ListBox1.Value : "責任者会議"とそれなりに表示されますが、cはEmptyです。 なぜF5セルと、併せてウォッチウインドゥに変数cが設定されないのでしょうか。教えてください。 Excel 2007 VB6.5です。 '行事入力一覧 Private Sub UserForm_Initialize() With ListBox1 .AddItem "" .AddItem "サービス課会議" .AddItem "責任者会議" .AddItem "安全衛生委員会" .AddItem "ISO委員会"  End With End Sub --------------------------------- Private Sub ListBox1_click() MsgBox ("選択した行事名を「行事等」欄へコピーします。" _ & vbCrLf & vbCrLf & "コピーしたい日付の「行事等」欄をクリックしてください。") Dim ListIndex As Long '選択番号 Dim c As Variant ListIndex = ListBox1.ListIndex With ActiveSheet For i = 0 To -1   c = ListBox1.Value Range("F5").Value = ListBox1.Value ’ Range("F5:F6").MergeCells.Value = ListBox1.Value ’ Cells(5, 6).Value = ListBox1.Value Next i  .Range("G5").Value = "-4A56" 'Test G5とG6の結合セルだが入力される。 End With Stop      ListBox1.Value = ""       Unload Me End Sub

  • Excelのリストボックスで(VBA・ユーザーフォーム)

    ユーザーフォームにあるリストボックスに、2列のデータを表示しています このデータを選択すると、シートのセルに転記するようにしたいのですが、うまく行きません 今のコードはこのようになっています Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) Sheets(1).Range("A1").Value = ListBox1.Value End Sub このコードで1列目のデータがA1に入るのですが、B1に2列目のデータを入れたいのですが出来ません 例えば、リストボックスが下のような場合 コード 商品名 00001 お茶 00002 紅茶 00003 コーヒー 紅茶の行を選択したら、A1に00002、B1に紅茶と入力されるようにしたいのです どのようにすればよいのか教えて下さい よろしくお願い致します

  • リストボックスから項目を選択してセルに入力したいのです

    EXcel2003でマクロ作成中です。エクセルシートのN列を右クリックすると、ユーザーォームが現れ、その中のリストボックスから項目を選択すると選択文字が白色に反転します。 ユーザーホームの下方に設置した「入力する」ボタンをクリックする、アクティブセルにテキスト文字列が挿入されます。 Option Explicit Private Sub CommandButton1_Click() With ListBox1 If .ListIndex = -1 Then MsgBox "項目を選択してくだい" Else ActiveCell.Value = ListBox1.list(ListBox1.ListIndex) End If End With Unload UserForm1 End Sub --------------------------- Private Sub CommandButton2_Click() Unload UserForm1 End Sub ------------------------------ これと同じものをB列につくりました。エクセルシートのB列を右クリックすると、リストボックスが表示されますが、その中の項目を選択しようとすると、一瞬にしてユーザーフォーム自体が消えてしまい項目を 選択できません。 Private Sub CommandButton1_Click() With ListBox2 If .ListIndex = -1 Then MsgBox "項目を選択してくだい" Else ActiveCell.Value = ListBox2.list(ListBox2.ListIndex) End If End With Unload UserForm2 End Sub ----------------------------- Private Sub CommandButton2_Click() Unload UserForm2 End Sub ------------------------------------------ まったく同じものを作って内容だけかえたのですが、できません。 どうしてでしょうか?ご教授おねがいします。

  • リストボックスで選択した項目に該当するデーターをラベルに表示する

    よろしくお願いします ユーザーフォームにリストボックスが2つ ラベルが1つ 配置しています。 リストボックス1で選択した項目に該当するリストを リストボックス2に表示する。 次に リストボックス2で選択した項目に該当するデーターを ワークシートのセル(E5:E300)から選んで ラベル1に表示する。 このようにしたいのですがエラーが出ます。 Dim LastRow As Long Dim DstRow As Long Const FstRow As Long = 5 Dim MctRow As Long   -  -  - Private Sub UserForm_Initialize() With Me.ListBox1 .RowSource = Worksheets("入力").Range("A5:A300").Address(External:=True) End With End Sub   -  -  - Private Sub ListBox1_Click() Dim j As Integer Dim RowCnt As Long With Worksheets("入力") LastRow = .Range("E300").End(xlUp).Row ListBox2.Clear For RowCnt = 5 To LastRow If ListBox1.List(ListBox1.ListIndex) = .Cells(RowCnt, 3).Value Then ListBox2.AddItem For j = 0 To 1 ListBox2.List(ListBox2.ListCount - 1, j) = .Cells(RowCnt,5 + j).Value Next j End If Next RowCnt End With End Sub   -  -  - Private Sub ListBox2_Click() Dim SrcCode As Long SrcCode = ListBox2.List(ListBox2.ListIndex, 0)     ↑    ↑    ↑ ここでエラーになります。 実行時エラー 型が一致しません と表示されます With Worksheets("入力") LastRow = .Range("E300").End(xlUp).Row MctRow = Application.WorksheetFunction.Match(SrcCode, .Range("E5:E" & LastRow), 0) + 5 Label1 = Format(.Cells(MctRow, 5)) End With End Sub

  • リストボックスで選択した一行を一度にセルに入力したい

    Xcel2003でマクロ作成中です。以下のコードで、リストボックスで一行を選択しました。この選択した一行のデータのうち2個のデータをC列とD列に入力することができました。が、E列にもデータを入力したいのです。が色いろやってみましたができません。 Private Sub ListBox2_Click() With ListBox2 If .ListIndex = -1 Then MsgBox "項目を選択してくだい" Else ActiveCell.Value = ListBox2.list(ListBox2.ListIndex, 0) ActiveCell.Offset(0, 1).Value = ListBox2.list(ListBox2.ListIndex, 1) End If End With Unload UserForm3 End Sub 上のコードにどう追加記入したらよろしいでしょうか?

  • エクセルマクロ_上書き(リストボックスでデータを抽出し、その行へ上書き)

    エクセルマクロ初心者です。(2003使用_ユーザーフォーム,リストボックス,テキストボックス,チャックボックス) Sheet1のデータをユーザーフォームへ反映させ、修正したものをその行へ上書きするマクロを作成したいと思っていますが、うまくいかないのでどなたかお教え願います。 (Sheet1―A8より表がはじまります) 管理番号 品名 数量 希望納期 変更数量 完納 コメント アカ12 みかん     40   8月3日 アオ35 りんご     30   8月5日 クロ54 なし     50   7月7日 アカ98 もも     20   9月1日 アオ43 すいか     35   8月3日 ●完納の行がチャックボックスで、チェックがついたら、”完納”と記載、チェックがついていなかったら空欄のまま。もし表に”完納”と記載されていたら、コマンドボタン1でデータを抽出した時に、チェックがつくようにしたいのです。が、まったくうまくいかないのです。 ●また、コマンド1での抽出データに値を入力したものを上書きすることは一部できるのですが、空欄にしたときに、空欄の状態(無記入)に上書きすることができません。 Private Sub UserForm_Initialize() Dim r As Range Set r = Sheets("Sheet1").Range("A8").CurrentRegion.Offset(1) Set r = r.Resize(r.Rows.Count - 1) With ListBox1 .ColumnWidths = "50;50;0;0;0;0;0" .ColumnCount = 7 .RowSource = r.Address(A8, G) End With End Sub Private Sub CommandButton1_Click() If ListBox1.ListIndex <> -1 Then TextBox1.Value = ListBox1.List(ListBox1.ListIndex, 0) TextBox2.Value = ListBox1.List(ListBox1.ListIndex, 1) TextBox3.Value = ListBox1.List(ListBox1.ListIndex, 2) TextBox5.Value = ListBox1.List(ListBox1.ListIndex, 4) TextBox6.Value = ListBox1.List(ListBox1.ListIndex, 6) End If If Not IsEmpty(ListBox1.List(ListBox1.ListIndex, 3)) Then TextBox4.Value = Format(CDate(ListBox1.List(ListBox1.ListIndex, 3)), "m/d") Else TextBox4.Value = "" End If End Sub Private Sub CommandButton2_Click() If ListBox1.ListIndex <> -1 Then Dim r As Range ' 元データの範囲を取得 Set r = Sheets("Sheet1").Range("A8").CurrentRegion.Offset(1) Set r = r.Resize(r.Rows.Count - 1) ' 日付型かどうかをチェック If IsDate(TextBox4.Value) Then ' 選択されたセルの更新 r(ListBox1.ListIndex + 1, 4) = TextBox4.Value End If r(ListBox1.ListIndex + 1, 7) = TextBox6.Value End If End Sub Private Sub CheckBox1_Click() If ListBox1.ListIndex <> -1 Then Dim l As Range Set l = Sheets("Sheet1").Range("A8").CurrentRegion.Offset(1) Set l = l.Resize(l.Rows.Count - 1) If CheckBox1.Value = True Then l(ListBox1.ListIndex + 1, 5).Value = "完納" If CheckBox1.Value = False Then l(ListBox1.ListIndex + 1, 5).Value = "<>" End If End If End If End Sub すみませんが、ご親切に教えていただけましたら幸いです。 よろしくお願いいたします。

専門家に質問してみよう