Excel VBA質問箱 IV

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

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


491 / 13645 ツリー ←次へ | 前へ→

【80082】教えてくささい。 18/8/5(日) 18:18 質問[未読]
【80083】Re:教えてくささい。 γ 18/8/5(日) 18:43 回答[未読]
【80084】Re:教えてくささい。 18/8/5(日) 19:27 お礼[未読]

【80082】教えてくささい。
質問    - 18/8/5(日) 18:18 -

引用なし
パスワード
   どなたか教えてください。
以下のプログラムを試してみたのですが、上手くいきません。
メッセージボックスに空白またはキャンセルした場合に、
シート全体に意図しない部分に色が着いてしまいます。
そこで、(1)の部分を
   If 検索結果 <> False And 検索結果 <> "" Then '
に変更してみたのですが、上手くいきません。
なぜ、思い通りに動かないのか わかりません。
どなたか、教えていただけないでしょうか?


Dim 検索値 As Variant
Dim 検索結果 As Range
Dim 最初結果 As Range
Dim 結果範囲 As Range
Dim データ範囲 As Range
Set データ範囲 = ActiveSheet.UsedRange
検索値 = InputBox("検索する文字列を入力してください")
Set 検索結果 = データ範囲.Find _
(What:=検索値, LookIn:=xlValues, LookAt:=xlWhole, _
SearchOrder:=xlByColumns, MatchCase:=True, MatchByte:=True)
If 検索結果 Is Nothing Then  ←(1)
MsgBox 検索値 & "はみつかりません。"
Exit Sub
Else
Set 最初結果 = 検索結果
Set 結果範囲 = 検索結果
End If
Do
Set 検索結果 = データ範囲.FindNext(検索結果)
If 検索結果.Address = 最初結果.Address Then
Exit Do
Else
Set 結果範囲 = Union(結果範囲, 検索結果)
End If
Loop
MsgBox 検索値 & "は" & 結果範囲.Count & "件みつかりました。" & vbCrLf & _
セルを黄色で塗りつぶします。
結果範囲.Interior.Color = RGB(255, 255, 0)

End Sub

【80083】Re:教えてくささい。
回答  γ  - 18/8/5(日) 18:43 -

引用なし
パスワード
   こんな風にしてみたら。

Sub test()
  Dim 検索値 As Variant
  Dim 検索結果 As Range
  Dim 最初結果 As Range
  Dim 結果範囲 As Range
  Dim データ範囲 As Range
  
  Set データ範囲 = ActiveSheet.UsedRange
  
  検索値 = InputBox("検索する文字列を入力してください")
  If 検索値 = "" Then
    MsgBox "検索がキャンセルされました"
    Exit Sub
  End If
  
  Set 検索結果 = データ範囲.find _
        (What:=検索値, LookIn:=xlValues, LookAt:=xlWhole, _
        SearchOrder:=xlByColumns, MatchCase:=True, MatchByte:=True)
  If 検索結果 Is Nothing Then
    MsgBox 検索値 & "はみつかりません。"
    Exit Sub
  Else
    Set 最初結果 = 検索結果
    Set 結果範囲 = 検索結果
  End If
  
  Do
    Set 検索結果 = データ範囲.FindNext(検索結果)
    If 検索結果.Address = 最初結果.Address Then
      Exit Do
    Else
      Set 結果範囲 = Union(結果範囲, 検索結果)
    End If
  Loop
  MsgBox 検索値 & "は" & 結果範囲.Count & "件みつかりました。" & vbCrLf & _
      "セルを黄色で塗りつぶします。"
  結果範囲.Interior.Color = RGB(255, 255, 0)

End Sub

●インデントをしっかりつけることは、あなたが考えている以上に大事なことですよ。

【80084】Re:教えてくささい。
お礼    - 18/8/5(日) 19:27 -

引用なし
パスワード
   ▼γ さん:
>こんな風にしてみたら。
>
>Sub test()
>  Dim 検索値 As Variant
>  Dim 検索結果 As Range
>  Dim 最初結果 As Range
>  Dim 結果範囲 As Range
>  Dim データ範囲 As Range
>  
>  Set データ範囲 = ActiveSheet.UsedRange
>  
>  検索値 = InputBox("検索する文字列を入力してください")
>  If 検索値 = "" Then
>    MsgBox "検索がキャンセルされました"
>    Exit Sub
>  End If
>  
>  Set 検索結果 = データ範囲.find _
>        (What:=検索値, LookIn:=xlValues, LookAt:=xlWhole, _
>        SearchOrder:=xlByColumns, MatchCase:=True, MatchByte:=True)
>  If 検索結果 Is Nothing Then
>    MsgBox 検索値 & "はみつかりません。"
>    Exit Sub
>  Else
>    Set 最初結果 = 検索結果
>    Set 結果範囲 = 検索結果
>  End If
>  
>  Do
>    Set 検索結果 = データ範囲.FindNext(検索結果)
>    If 検索結果.Address = 最初結果.Address Then
>      Exit Do
>    Else
>      Set 結果範囲 = Union(結果範囲, 検索結果)
>    End If
>  Loop
>  MsgBox 検索値 & "は" & 結果範囲.Count & "件みつかりました。" & vbCrLf & _
>      "セルを黄色で塗りつぶします。"
>  結果範囲.Interior.Color = RGB(255, 255, 0)
>
>End Sub
>
>●インデントをしっかりつけることは、あなたが考えている以上に大事なことですよ。


返信ありがとうございます。
自分の勉強不足を非常に痛感しております。
返信していただいたvbaを実行させていただきました。
非常に満足しています。
本当にありがとうございました。
今後またわからない事が多々あると思いますので、
よろしくお願いします。

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