Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9463 / 13646 ツリー ←次へ | 前へ→

【27183】ListBoxに追加 YU 05/8/1(月) 11:38 質問[未読]
【27188】Re:ListBoxに追加 kobasan 05/8/1(月) 13:49 発言[未読]
【27189】Re:ListBoxに追加 kobasan 05/8/1(月) 14:05 発言[未読]
【27194】Re:ListBoxに追加 YU 05/8/1(月) 15:20 質問[未読]
【27201】Re:ListBoxに追加 kobasan 05/8/1(月) 16:48 回答[未読]
【27203】Re:ListBoxに追加 Jaka 05/8/1(月) 17:07 発言[未読]
【27206】Re:ListBoxに追加 YU 05/8/1(月) 17:48 お礼[未読]
【27210】Re:ListBoxに追加 kobasan 05/8/1(月) 22:39 発言[未読]

【27183】ListBoxに追加
質問  YU  - 05/8/1(月) 11:38 -

引用なし
パスワード
   こんにちわ。
早速ですが、ListBoxに、
エクセルの表から一部検索して一致した表のRowを表示したいのですが、
さっぱりわかりません。
こんな感じで作ってみたんですけど、MyCollに修飾子が不正です のエラーでいきづまってしまいました。どなたか教えていただけますか。

Dim A As Range
Dim MyRange As Range
Dim MyColl() As ListBox
Dim MaxRow As Integer

MaxRow = Worksheets("一覧").Range("A65536").End(xlUp).Row
Set MyRange = Worksheets("一覧").Range("A2:A" & MaxRow)

On Error Resume Next
For Each A In MyRange
  If A.Value = TextBox1.Value Then
  MyColl.Add A, CStr(A.Value)
  End If
Next
On Error GoTo 0
For r = 1 To MemberCount
  TextBox1.Text = MyColl(r).Value
Next r

【27188】Re:ListBoxに追加
発言  kobasan  - 05/8/1(月) 13:49 -

引用なし
パスワード
   ▼YU さん 今日は

とりあえず分かることだけですが、検討してみてください。

>早速ですが、ListBoxに、
>エクセルの表から一部検索して一致した表のRowを表示したいのですが、


>こんな感じで作ってみたんですけど、MyCollに修飾子が不正です のエラーでいきづまってしまいました。


>Dim A As Range
>Dim MyRange As Range
>Dim MyColl() As ListBox   '<------???不要では
>Dim MaxRow As Integer
>
>MaxRow = Worksheets("一覧").Range("A65536").End(xlUp).Row
>Set MyRange = Worksheets("一覧").Range("A2:A" & MaxRow)
>
>On Error Resume Next
>For Each A In MyRange
>  If A.Value = TextBox1.Value Then
>  MyColl.Add A, CStr(A.Value)   'ここを下記のように修正
  ListBox1.AddItem CStr(A.Value)  '<------修正
  'ListBox1だけあるとして
  'ListBox1,ListBox2のように指定する必要があります。
  'ListBoxは複数あるのですか  ?????

>  End If
>Next
>On Error GoTo 0
>For r = 1 To MemberCount
>  TextBox1.Text = MyColl(r).Value'<------したいことがよく分からない???
>Next r

【27189】Re:ListBoxに追加
発言  kobasan  - 05/8/1(月) 14:05 -

引用なし
パスワード
   もう一つ修正がありました。


>For Each A In MyRange
  If A.Text = TextBox1.Text Then  '<------修正

【27194】Re:ListBoxに追加
質問  YU  - 05/8/1(月) 15:20 -

引用なし
パスワード
   ▼kobasan さん:
あっ、なんだかいろんなところから引用したりしてたんで
めちゃくちゃですね(・・;)申し訳ないですm(__)m

ListBoxは一個なんですが、
ListBoxに入れたい値が10列分あるんです。

  ListBox1.AddItem CStr(A.RowSource)

これは無理なんですね・・・
ごめんなさい。聞いてることもむちゃくちゃで・・・

【27201】Re:ListBoxに追加
回答  kobasan  - 05/8/1(月) 16:48 -

引用なし
パスワード
   ▼YU さん 今日は

とりあえず

>ListBoxは一個なんですが、
>ListBoxに入れたい値が10列分あるんです。

この部分は、これでできると思います。

Private Sub CommandButton1_Click()

Dim A As Range
Dim MyRange As Range
Dim MaxRow As Long, Listmax As Long, i As Long
Dim wsNmae As String
  wsNmae = 一覧"

  MaxRow = Worksheets(wsNmae).Range("A65536").End(xlUp).Row
  Set MyRange = Worksheets(wsNmae).Range("A2:A" & MaxRow)

  ListBox1.ColumnCount = 10  'ListBox1の列は10列にする
  
  For Each A In MyRange
    If A.Text = TextBox1.Text Then
      ListBox1.AddItem A.Text   'A列
      For i = 1 To 9
        ListBox1.List(ListBox1.ListCount - 1, i) = A.Offset(, i).Text 'i番目の列
      Next
    End If
  Next
  ListBox1.TextColumn = 1 '選択されたら1列目を表示する
  '選択されたとき何列目を表示させるのか分からないので、
  '1列目にしています。

  'For r = 1 To MemberCount
  '  TextBox1.Text = MyColl(r).Value  '<------したいことがよく分からない???
  'Next r

End Sub

【27203】Re:ListBoxに追加
発言  Jaka  - 05/8/1(月) 17:07 -

引用なし
パスワード
   こんにちは。
これは2列の場合ですが、こんな感じに都度作り直すのが良いんじゃないかと思います。
あ、内容は本文とは違いますから、参考程度に。

Private Sub CommandButton1_Click()
  Dim LtTb() As String
  LTC = ListBox1.ListCount
  ReDim LtTb(1 To LTC + 1, 1 To 2)
  If LTC <> 0 Then
    For i = 1 To LTC
      LtTb(i, 1) = ListBox1.List(i - 1, 0)
      LtTb(i, 2) = ListBox1.List(i - 1, 1)
    Next
  Else
    i = 1
  End If
  LtTb(i, 1) = TextBox1.Value
  LtTb(i, 2) = TextBox2.Value
  ListBox1.List = LtTb
    TextBox1.Value = TextBox1.Value + 1
    TextBox2.Value = TextBox2.Value + 1
  DoEvents
  Erase LtTb
End Sub

他、
Private Sub CommandButton5_Click()
  Dim TB() As String
  Static CNT As Long
  Const LCC = 10 '最初に0〜10行まで、計11行分作っておく。
          'ただ、これ以上は追加できません
  If ListBox1.ListCount = 0 Then
    ReDim TB(0 To LCC, 0 To 1)
    ListBox1.List = TB
    Erase TB
    CNT = 0
  Else
    CNT = CNT + 1
  End If
  If CNT <= LCC Then
    ListBox1.List(CNT, 0) = TextBox1.Value
    ListBox1.List(CNT, 1) = TextBox2.Value
  End If
End Sub

【27206】Re:ListBoxに追加
お礼  YU  - 05/8/1(月) 17:48 -

引用なし
パスワード
   ▼kobasan さん:
▼Jaka さん:
ありがとぅございますm__m
頑張ってみます。
またわからないことがあったらよろしくお願いします。

【27210】Re:ListBoxに追加
発言  kobasan  - 05/8/1(月) 22:39 -

引用なし
パスワード
   Jakaさん 今晩は
YUさん 今晩は

Jakaさん
【26949】合計値の求め方
では、横から失礼しました。

Jakaさんの沢山のコードいろいろと活用させてもらっています。

今回の参考コードについては、組み込み完了しました。
これからもいろいろと勉強させてもらいますので、よろしく・・・。

9463 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free