Excel VBA質問箱 IV

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

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


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

【66213】条件付セルの選択 roro728 10/8/10(火) 12:48 質問[未読]
【66215】Re:条件付セルの選択 UO3 10/8/10(火) 13:23 回答[未読]
【66217】Re:条件付セルの選択 roro728 10/8/10(火) 14:11 お礼[未読]
【66218】Re:条件付セルの選択 Jaka 10/8/10(火) 14:19 発言[未読]
【66219】Re:条件付セルの選択 Jaka 10/8/10(火) 14:21 発言[未読]

【66213】条件付セルの選択
質問  roro728  - 10/8/10(火) 12:48 -

引用なし
パスワード
   エクセルで、ある特定の言葉を含んでいるセルを探し、そのセルを全て選択し、さらに一番最後のセルにフォーカスを持ってくるVBAのコードはどのように作成したらよいでしょう?
例えば、セルE1, F1, G1に共通の言葉が入っていると仮定した場合、このコードを使うことにより、まずこの3つのセルを選択、さらにフォーカスをG1に持ってくるという作業をコード化するのがゴールです。

【66215】Re:条件付セルの選択
回答  UO3  - 10/8/10(火) 13:23 -

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

こんにちは
検索領域が特定されていませんのでシート全体を検索するコードにしてあります。
また、【一番最後のセル】というのが、2種類あると思います。
以下のコードは、該当のセルで一番大きな行の一番右のセルというロジックです。
もし、【一番大きな列の一番下のセル】ということであれば
SearchOrder:=xlByRows ==> SearchOrder:=xlByColumns に変更してください。

Option Explicit

Sub Sample()
Dim s As String, sel As String
Dim c As Range, zc As Range
Dim fAddr As String
 s = "特定文字列"      '<== 実際の検索文字列に
 With Worksheets("Sheet1")  '<== 実際のシート名に
  Set c = .Cells.Find(What:=s, after:=.Cells(Rows.Count, Columns.Count), LookIn:=xlValues, _
        LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, MatchByte:=False, SearchFormat:=False)
  If c Is Nothing Then
   MsgBox "指定の文字列はありません"
   Exit Sub
  End If
  fAddr = c.Address
  Do
   Set zc = c
   sel = sel & "," & c.Address(False, False)
   Set c = .Cells.FindNext(after:=c)
  Loop While c.Address <> fAddr
  .Range(Mid(sel, 2)).Select
  zc.Activate
 End With
 Set c = Nothing
 Set zc = Nothing
End Sub

【66217】Re:条件付セルの選択
お礼  roro728  - 10/8/10(火) 14:11 -

引用なし
パスワード
   問題解決!! 最高です! ありがとうございます!!

【66218】Re:条件付セルの選択
発言  Jaka  - 10/8/10(火) 14:19 -

引用なし
パスワード
   Union使用、検索対象セルが3000を超えるなら使わないように。
アドレスの連結は、256文字超えるとエラーになります。

Dim Rg As Range, Rng As Range
検索文字 = "1"
With Sheets("xxxxxxxxx")
  Set Rg = .Cells.Find(検索文字, After:=.Cells(.Cells.Count), LookIn:=xlValues, LookAt:=xlWhole, _
                SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
  If Not Rg Is Nothing Then
    SavAd = Rg.Address
    Do
     If Rng Is Nothing Then
      Set Rng = Rg
     Else
      Set Rng = Application.Union(Rng, Rg)
     End If
     Set Rg = .Cells.FindNext(Rg)
    Loop Until SavAd = Rg.Address
    Rng.Select
  End If
End With

【66219】Re:条件付セルの選択
発言  Jaka  - 10/8/10(火) 14:21 -

引用なし
パスワード
   あ、終わっちゃってたのね。
まいっか。

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