Excel VBA質問箱 IV

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

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


21358 / 76732 ←次へ | 前へ→

【60775】Find関数の使い方について
質問  Porta  - 09/3/13(金) 19:30 -

引用なし
パスワード
   A6(2009/3/1)〜A2196(2015/2/28)まで、当年の3月1日から連続した日にち
があります。
表示は「3月1日」のようになっており『年』は表示していません。
InputBoxに年月日(2011/3/3)を入れてその対象年月日の行をを検出すること
をしています。
For〜NextやMatch関数を使っての検索はできたのですが、
Find関数を使うと、シートの日にちを一旦日付のシリアル値に
変換して、また戻すというスマートさがないやり方になってしまいます。
シート上で月日をシリアル値に変更しないでFind関数で検索する方法を教えてください。
現在は下のコードを考えました。

Sub Find_methodで検索()
 Dim r As Range
 Dim c As Range
 Dim ch
 Dim ch2
 ch = Application.InputBox(Prompt:="検索したい年月日…3/3のように半
角入力してください" _
    & Chr(10) & "当年以外は2013/3/3のように年を入力してくだ
さい", _
     Title:="検索", Default:="ここに検索したい日付を入れて下さい",
Type:=1)
 If ch = False Then
  MsgBox "Cancelが押されました", vbExclamation
  Exit Sub
 End If

 With Range("A1", Cells(Rows.Count, "A").End(xlUp))
  .NumberFormatLocal = "G/標準"
 End With
 
 Set r = Range("A1", Cells(Rows.Count, "A").End(xlUp))
 
 Set c = r.Find(ch, Range("a1"), _
     xlFormulas, xlWhole, , xlPrevious)
 If Not c Is Nothing Then
  c.Activate
  
  MsgBox "昨日は" & c.Address(0, 0) & "にあります"
 Else
  MsgBox "その年月日はありません", vbExclamation
 End If
 
 With Range("A1", Cells(Rows.Count, "A").End(xlUp))
  .NumberFormatLocal = "m""月""d""日"";@"
 End With
 
End Sub

0 hits

【60775】Find関数の使い方について Porta 09/3/13(金) 19:30 質問
【60776】Re:Find関数の使い方について kanabun 09/3/13(金) 19:37 発言
【60777】Re:Find関数の使い方について kanabun 09/3/13(金) 20:06 発言
【60778】Re:Find関数の使い方について Porta 09/3/13(金) 21:22 発言
【60779】Re:Find関数の使い方について kanabun 09/3/13(金) 21:39 発言
【60783】Re:Find関数の使い方について Porta 09/3/14(土) 9:50 質問
【60784】Re:Find関数の使い方について kanabun 09/3/14(土) 11:48 発言
【60789】Re:Find関数の使い方について Porta 09/3/14(土) 20:50 お礼

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