Excel VBA質問箱 IV

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

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


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

【48239】最終行までのチェックする方法について Tomo 07/4/9(月) 20:58 質問[未読]
【48240】Re:最終行までのチェックする方法について りん 07/4/9(月) 21:08 回答[未読]
【48250】Re:最終行までのチェックする方法について Tomo 07/4/10(火) 7:13 お礼[未読]
【48273】Re:最終行までのチェックする方法について りん 07/4/11(水) 8:22 回答[未読]
【48290】Re:最終行までのチェックする方法について Tomo 07/4/11(水) 20:01 お礼[未読]

【48239】最終行までのチェックする方法について
質問  Tomo  - 07/4/9(月) 20:58 -

引用なし
パスワード
   A列にある文字がセルD6の文字と同じの場合を・・・検索しています。

このコードでは、合致した場合にExitForでループから出ますが、
最終行まで検索を続け、同じ文字が複数回チェックできるように
させ、
尚且つ、最終行まで検索後、同じ文字が無かった場合はMsgBoxにて該当文字が
無い表示をしたいのですが・・・

コードについて、アドバイスお願いします。

Sub test1 ()
Dim R As Range
Dim MyR As Range
Dim Flg As Boolean

Set MyR = Range("A7",Range("A65536").End(xlUp))
For Each R In MyR
  If R = Range("D6") Then
     MsgBox "該当する文字がありました", vbOKOnly
   Flg = True: Exit For
  End If
Next
  If Flg = False Then
     MsgBox "該当する文字はありません ", 48
   Exit Sub
  End If
End Sub

【48240】Re:最終行までのチェックする方法について
回答  りん E-MAIL  - 07/4/9(月) 21:08 -

引用なし
パスワード
   Tomo さん、こんばんわ。

>このコードでは、合致した場合にExitForでループから出ますが、
>最終行まで検索を続け、同じ文字が複数回チェックできるように
>させ、
>尚且つ、最終行まで検索後、同じ文字が無かった場合はMsgBoxにて該当文字が
>無い表示をしたいのですが・・・

たとえば、D6の値と一致するセルがあれば文字列を追加していく方法です。

Sub test1()
  Dim R As Range
  Dim MyR As Range
  Dim msg As String

  Set MyR = Range("A7", Range("A65536").End(xlUp))
  For Each R In MyR
    If R.Value = Range("D6").Value Then
     msg = msg & vbCrLf & R.Address(False, False)
    End If
  Next
  If msg = "" Then
   MsgBox "該当する文字はありません ", 48
  Else
   MsgBox "以下のセルが該当しました" & msg$, vbInformation, Range("D6").Value
  End If
End Sub
こんな感じです。

【48250】Re:最終行までのチェックする方法について
お礼  Tomo  - 07/4/10(火) 7:13 -

引用なし
パスワード
   ▼りん さん:

おはようございます。
早速回答有難うございました。
質問させていただいて、本当に価値があったと喜んでおります。

文字列を追加していく方法の素晴らしさを体験させていただきました。
vbCrLfの使い方も今まで単に行変え程度で使っているレベルでしたが、今回このような文字列の追加の行変え、という素晴らしい体験ができ感謝しています。
有難うございました。

本来の私の意図としては
その都度MsgBoxを表示させることでしたが?それは不可能でしょうか?

【48273】Re:最終行までのチェックする方法について
回答  りん E-MAIL  - 07/4/11(水) 8:22 -

引用なし
パスワード
   Tomo さん、おはようございます。

>その都度MsgBoxを表示させることでしたが?それは不可能でしょうか?

Sub test1()
  Dim R As Range
  Dim MyR As Range
  Dim msg As String

  Set MyR = Range("A7", Range("A65536").End(xlUp))
  For Each R In MyR
    If R.Value = Range("D6").Value Then
     '毎回出すならループ処理の内側で
     MsgBox R.Address(False, False), vbInformation, "該当セル"
     msg = msg & vbCrLf & R.Address(False, False)
    End If
  Next
  If msg = "" Then
   MsgBox "該当する文字はありません ", 48
  Else
   MsgBox "以下のセルが該当しました" & msg$, vbInformation, Range("D6").Value
  End If
End Sub
こんな感じです。

【48290】Re:最終行までのチェックする方法について
お礼  Tomo  - 07/4/11(水) 20:01 -

引用なし
パスワード
   ▼りん さん:

有難うございました。
コードをしっかりと覚えました。でも、時間の経過とともに忘れてしまわないよう
記録に残しました。
これで、全て問題解決ができました。
再三のご指導感謝しています。

今後ともよろしくお願いします。

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