- 締切済み
VBA 複数シートにスクロールエリアを設定するには?
こんにちは、この前と似たような質問です。 この前、VBAで複数シートを選択して行を追加したとき、選択しているシートそれぞれに同じ動作が行われる方法を教えていただきました。 今回は、複数シートのスクロールエリアの設定方法についてです。 複数シートが選択されている状態で、 For Each s In ActiveWindow.SelectedSheets s.ScrollArea = s.Range(s.Cells(1, 1), s.Cells(2, 2)).Address Next s とすると、最後に設定したシートしかスクロールエリアが設定されていなく、他のシートには設定できていません。。。なぜでしょうか? ワークシート名と範囲の名前でそれぞれ設定した場合は、 Worksheets("Sheet1").ScrollArea = "データ入力範囲1" Worksheets("Sheet2").ScrollArea = "データ入力範囲2" とすると、両方きちんと設定されました。 でも、スクロールを制限したいセル範囲は可変なため、範囲の名前を固定できないのです。どうしたら複数シートにスクロールエリアを設定できるでしょうか? 教えてください、よろしくお願いします。 ちなみに、処理が終わったあとは、最後のシートがアクティブになってしまうので、処理を開始したシートに戻ってから処理を終わりにしたい(アクティブシートは移動したくない)場合もおわかりになりましたらお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- pauNed
- ベストアンサー率74% (129/173)
こんにちは。 ご提示のコードで複数シートの設定ができますが...バージョンの違いでしょうか? (win2000sp4/xl2000sp3) >最後のシートがアクティブになってしまう 事もないです。 それとももしかして、s.Cells(1, 1)や s.Cells(2, 2)に範囲を指定したいアドレスを 文字列で入力しているという事なのでしょうか? 今のままだと各シートのスクロールエリアは$A$1:$B$2で共通固定になってますね。
- papayuka
- ベストアンサー率45% (1388/3066)
Excel2000ですがそのまま試してみたけど、ちゃんと設定されるしアクティブシートも動かないですが、、、 バージョンによるのかなぁ、、
お礼
問題はその上に書いていたコードで複数シート選択が解除されてしまっていました。ヒントになりました、ありがとうございました。
お礼
>それとももしかして、s.Cells(1, 1)や s.Cells(2, 2)に範囲を指定したいアドレスを 文字列で入力しているという事なのでしょうか? だったのですが、問題はその上に書かれていたコードの問題でした。複数シートを選択した後に解除されてしまう書き方をしていたためでした。おっしゃるとおり、このままでOKでした。 ありがとうございました。