Excel VBA質問箱 IV

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

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


1630 / 13644 ツリー ←次へ | 前へ→

【73021】UserformのTextBoxを使うには にしもり 12/10/23(火) 16:12 質問[未読]
【73022】Re:UserformのTextBoxを使うには ウッシ 12/10/23(火) 16:28 回答[未読]
【73023】Re:UserformのTextBoxを使うには にしもり 12/10/23(火) 16:40 質問[未読]
【73024】Re:UserformのTextBoxを使うには ウッシ 12/10/23(火) 16:45 回答[未読]
【73025】Re:UserformのTextBoxを使うには にしもり 12/10/23(火) 17:04 質問[未読]
【73026】Re:UserformのTextBoxを使うには ウッシ 12/10/23(火) 17:16 回答[未読]
【73027】Re:UserformのTextBoxを使うには にしもり 12/10/23(火) 17:40 お礼[未読]

【73021】UserformのTextBoxを使うには
質問  にしもり  - 12/10/23(火) 16:12 -

引用なし
パスワード
   こんにちは。教えてください。

シートのA1にexcel、A2に99999が入っています。
いま、UserFormのVBAに下記を記述しました。
つまり、
(1)Button1はTextBoxにexcelと入れたらMsgBoxに99999と出し、
(2)Button12TextBoxをクリアしたいのです。

ところが
(1)は実行時エラ-9 インデックスが有効範囲にない、
(2)はコンパイルエラー、メソッドまたはデータメンバがみつかりません、とでます。
何が欠けていますでしょうか。


Private Sub CommandButton1_Click()
    Dim MyVariant As Variant
    Dim i As Long
    MyVariant = Range("A:A")
    For i = 1 To UBound(MyVariant)
    If MyVariant(i, 1) = UserForm1.TextBox1.Value Then
        MsgBox MyVariant(i, 2) '(1)ここでError
        Exit Sub
      End If
    Next i
    MsgBox "見つかりませんでした。" 
End Sub

Private Sub CommandButton2_Click()
  UserForm1.TextBox1.Clear ' (2)ここでもError
End Sub

【73022】Re:UserformのTextBoxを使うには
回答  ウッシ  - 12/10/23(火) 16:28 -

引用なし
パスワード
   こんにちは

>シートのA1にexcel、A2に99999が入っています。

B1に99999ですよね?

とすれば、

MyVariant = Range("A:B")

としなくてはダメですよね?

MyVariant(i, 2) はB列に相当する部分を示してますから。

処理自体も、ループではなくて「Match」とか「VlookUp」とかで処理した方がいいかも。


>  UserForm1.TextBox1.Clear ' (2)ここでもError

は、Me.TextBox1.Text = "" では?

【73023】Re:UserformのTextBoxを使うには
質問  にしもり  - 12/10/23(火) 16:40 -

引用なし
パスワード
   ▼ウッシ さん:

あーー仰るとおりでした。
修正したら治りました。
ありがとうございました。

恐れながらもう1つ御聞きしたいです。
曖昧検索、つまり、*xce* や exce* と入れても99999と出すことは、可能なのでしょうか。
参考URLだけでもよろしくお願いします。

【73024】Re:UserformのTextBoxを使うには
回答  ウッシ  - 12/10/23(火) 16:45 -

引用なし
パスワード
   >曖昧検索、つまり、*xce* や exce* と入れても99999と出すことは、可能なのでしょうか。

*xce* や exce* とTextBox1に入力するなら

If MyVariant(i, 1) = UserForm1.TextBox1.Value Then

If MyVariant(i, 1) Like UserForm1.TextBox1.Value Then

とすればいいです。

xce や exce とTextBox1に入力するなら

If MyVariant(i, 1) Like "*" & UserForm1.TextBox1.Value & "*" Then

です。

【73025】Re:UserformのTextBoxを使うには
質問  にしもり  - 12/10/23(火) 17:04 -

引用なし
パスワード
   ▼ウッシ さん:
まことに、まことにありがとうございます。

恐れ入るのですがもう一つアドバイス下さい。
A2にはexcel2000、B2に88888入っているといたします。
そのとき、曖昧検索にすると、出力先がMsgBoxだと99999しか出ないことに気づきました。
99999も88888も、MsgBoxにだす、などということはできるのでしょうか?

【73026】Re:UserformのTextBoxを使うには
回答  ウッシ  - 12/10/23(火) 17:16 -

引用なし
パスワード
   こんにちは

Private Sub CommandButton1_Click()
  Dim MyVariant As Variant
  Dim i As Long
  Dim m As String
  MyVariant = Range("A1").CurrentRegion.Value
  For i = 1 To UBound(MyVariant, 1)
    If MyVariant(i, 1) Like "*" & Me.TextBox1.Value & "*" Then
      If m <> "" Then
        m = m & vbCrLf & MyVariant(i, 2)
      Else
        m = MyVariant(i, 2)
      End If
    End If
  Next i
  If m <> "" Then
    MsgBox m
  Else
    MsgBox "見つかりませんでした。"
  End If
End Sub

こんな感じです。

【73027】Re:UserformのTextBoxを使うには
お礼  にしもり  - 12/10/23(火) 17:40 -

引用なし
パスワード
   ▼ウッシ さん:
mを定義してLoopさせればよいのですね。
当方いまだに初心者に毛のはえたレベルでして心より感謝します。
と同時に勉強不足を痛感したので勉強いたします。
ありがとうございました。

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