[[20190204105016]] 『A列から特定の文字を探し、そのセルを選択したい』(なのれい) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『A列から特定の文字を探し、そのセルを選択したいです。』(なのれい)

いつもお世話になっております。

マクロ勉強中で初歩的な質問かもしれませんが、宜しくお願い致します。

A列から特定の文字を探し、そのセルを選択したいです。

Sub 文字列を検索して行全体を選択する()

  Dim rng As Range
  Set rng = Range("A:A").Find("北海道")
    rng.EntireRow.Select

End Sub

上記で行全体は選択は出来たのですが、北海道のセルを単体で選択する事が出来ないです。

Sub 文字列を検索して行全体を選択する()

  Dim rng As Range
  Set rng = Range("A:A").Find("北海道")
    rng.Row.Select

End Sub

上記のように
EntireRow

Row
に変更すれば選択出来るのでは?と思いましたが、できませんでした。

アドバイス頂けないでしょうか?
宜しくお願い致します。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


失礼致しました。

Sub 北海道という文字列を検索してA列のセルを選択する()

  Dim rng As Range
  Set rng = Cells.Find(What:="北海道")

    Cells(rng.Row, "A").Select

End Sub

自己解決致しました。

(なのれい) 2019/02/04(月) 12:21


 ただ単に rng.select でもいいと思いますが、
 見つからなかった時の処理や、複数あった時に1こしか選択されないので
 そんなときの処理も考えておいた方がいいかと思います。

 Sub TEST()
    Const TargetStr As String = "北海道"
    Dim Rng As Range
    Dim fCell As Range
    Dim tCell As Range
    Set Rng = Range("A:A").Find(What:=TargetStr, LookAt:=xlWhole, LookIn:=xlValues)
    If Rng Is Nothing Then
        MsgBox TargetStr & " はありません。", vbCritical
        Exit Sub
    Else
        Set fCell = Rng
        Set tCell = fCell
    End If
    Do
        Set Rng = Cells.FindNext(Rng)
        If Rng.Address = fCell.Address Then Exit Do Else Set tCell = Union(tCell, Rng)
    Loop
    tCell.Select
 End Sub
(ろっくん) 2019/02/04(月) 12:25

ろっくんさん返信頂きありがとうございます。

やっぱり自分のはダメでした。

Sub 北海道という文字列を検索してA列のセルを選択する()

  Dim rng As Range
  Set rng = Cells.Find(What:="北海道")
    Cells(rng.Row, "A").Select
End Sub 

これだと、
北海道がある行のA列を選択でした。

そうではなく、A列の北海道を探し選択したかったです。

また、A列に北海道は一つしかありません。
無いこともあるのでエラーが出ない方が助かります。

すみませんが宜しくお願い致します。

(なのれい) 2019/02/04(月) 13:00


Range("A:A").Find("北海道").Select

これでうまくいきました。
失礼いたしました。
(なのれい) 2019/02/04(月) 13:08


 A列  B列  C列 D列
1     北海道
2北海道      沖縄

Sub 北海道という文字列を検索してA列のセルを選択する()

  Dim rng As Range
  Range("A:A").Find("北海道").Select
  ActiveCell.Offset(0, 2).Cut
  Range("B:B").Find("北海道").Select
  ActiveCell.Offset(0, 2).Paste

End Sub

上記の図を例として「沖縄」をD1のセルに貼り付けしたいです。
重要なのは、A列の北海道の2つ隣のセルを切り取り、B列の北海道の2つ隣へ貼り付けたいです。

宜しくお願い致します。

(なのれい) 2019/02/04(月) 13:26


上に付け足しです。

Sub 北海道という文字列を検索してA列のセルを選択する()

  Dim rng As Range
  Range("A:A").Find("北海道").Select
  ActiveCell.Offset(0, 2).Cut
  Range("B:B").Find("北海道").Select

ここまでは上手く行きます。
貼り付けするコードを入れるとエラーが出てしまいます。

  ActiveCell.Offset(0, 2).Paste
End Sub 

エラー内容
https://gyazo.com/9db4cfc0533ba822732dedd824fc5da6
(なのれい) 2019/02/04(月) 13:32


 Sub sumple()
    Dim rng As Range, rng2 As Range
    Set rng = Range("A:A").Find("北海道")
    Set rng2 = Range("B:B").Find("北海道")

    rng.Offset(0, 2).Cut rng2.Offset(0, 2)
 End Sub

(TAKA) 2019/02/04(月) 13:42


 エラー対策として【完全一致の指定】と【見つからなかった場合の処理】を入れると

  Sub sumple()
    Dim rng As Range, rng2 As Range
    Set rng = Range("A:A").Find("北海道", Lookat:=xlWhole)
    Set rng2 = Range("B:B").Find("北海道", Lookat:=xlWhole)

    If rng Is Nothing Then
        MsgBox "A列に北海道は存在しません"
        Exit Sub
    End If

    If rng2 Is Nothing Then
        MsgBox "B列に北海道は存在しません"
        Exit Sub
    End If

    rng.Offset(0, 2).Cut rng2.Offset(0, 2)
 End Sub

こうなります
(TAKA) 2019/02/04(月) 13:48


 Pasteメソッドの構文は
 貼り付けシート.Paste 貼り付けセル
(ねむねむ) 2019/02/04(月) 13:55

 ついでに、

 ■Cutメソッド
  切り取るセル.Cut 貼り付けるセル
 ■Copyメソッド
  コピーするセル.Copy 貼り付けるセル
(TAKA) 2019/02/04(月) 14:04

ねむねむさん、TAKAさん
理解出来ました。

分かりやすく説明頂きありがとうございます。
(なのれい) 2019/02/04(月) 14:11


 >ActiveCell.Offset(0, 2).Paste

 PasteSpecial にしないと、指定セルに貼り付けできない。
(BJ) 2019/02/04(月) 16:05

 PasteSpecialはCopyした場合にしか使えず、Cutした場合には使えない。
(ねむねむ) 2019/02/04(月) 16:26

皆さま勉強させて頂いております。
ありがとうございます。
(なのれい) 2019/02/04(月) 18:01

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.