[[20180302181529]] 『ウィンドウ枠の固定』(人) ページの最後に飛ぶ

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

 

『ウィンドウ枠の固定』(人)

初めまして。質問させていただきます。

    Dim FoundCell As Range
    Set FoundCell = Range("A1:AA10").Find("名前1")
    If Not FoundCell Is Nothing Then
        FoundCell.Offset(1, 0).Select
        ActiveWindow.FreezePanes = True
    End If

A1~AA10に名前1と入ったセルを探し、名前1の下のセルでウィンドウ枠の固定をしたいと思っています。
そこで、上記のコードをモジュールに入れてみたのですが、問題が発生しました。A1をアクティブにした状態ですと問題なく動くのですが、右端の方のセルとか、離れたセルをアクティブにした状態で実行しますと変な位置でウィンドウ枠が固定されてしまいます。名前1の下のセルを選択してから実行しているので、実行前のアクティブセルは関係ないと思ったのですが・・・。どのように書いたら良いかご教示いただけないでしょうか。よろしくお願い致します。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 こちらで試しましたが、上手くいきましたよ?

(SoulMan) 2018/03/02(金) 19:14


 なるべくSelectしない様に↓こんな風に書いてみるとか
Sub てすと()
Dim FoundCell As Range
    Set FoundCell = Range("A1:AA10").Find("名前1")
    If Not FoundCell Is Nothing Then
        With ActiveWindow
            .SplitColumn = FoundCell.Column - 1
            .SplitRow = FoundCell.Row
            .FreezePanes = True
        End With
    End If
End Sub

(SoulMan) 2018/03/02(金) 19:26


 後、一番気になるのはこれも定番ですけど、Findの引数は省略してはいけません。
実際の検索を記録して加工してみるといいかもしれません。
Set FoundCell = Range("A1:AA10"). _
                Find("名前1", , xlValues, xlPart, xlByRows, xlNext, False, False)

(SoulMan) 2018/03/02(金) 19:50


 誤解があると困るのでFindについて追加しておきます。
 >Findの引数は省略してはいけません。
それでうまくHitしているのならいいんですよ
でも、今回の様に挙動な動きをしているのなら一番見直す必要があるという意味です。
(SoulMan) 2018/03/02(金) 20:23

SoulMan様
丁寧に解説いただきありがとうございます!
おっしゃる通り、Findの引数を省略していたのが原因でした。
本当にどうもありがとうございました。m(__)m
(人) 2018/03/02(金) 21:52

コメント返信:

[ 一覧(最新更新順) ]


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