• 締切済み

Excel 2003 VBA ワークシート 固定

質問させて頂きます。 現在、Worksheet1にカレンダーなどを作成しているのですが A列~D列までスクロール可能。以降の列はスクロール無効。と行いたいのですが可能でしょうか? 可能で有るならば是非教えて頂きたいです。(詳細らも記載して頂くと有難いです。)

みんなの回答

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.2

> A列~D列までスクロール可能。以降の列はスクロール無効。 真意として、どういうことなのか補足が欲しいところです。 例えば「A~D列のみ表示、E列以降は非表示(使用不可)」ということなら 2003の場合)   ' E~IV列を非表示   Columns("E:IV").EntireColumn.Hidden = True 2007以降の場合)   ' E~XFD列を非表示   Columns("E:XFD").EntireColumn.Hidden = True これで事足りると思います。 そうじゃない、E列以降は常に1行目を表示しておきたいのだ、というなら、 エクセルにはそんな機能は備わっていないので次善の策で 共通-シートモジュールに、以下) Private Sub Worksheet_SelectionChange(ByVal Target As Range)   If Target.Column > 4 Then     Application.EnableEvents = False       Cells(1, Target.Column).Select   Else     Exit Sub   End If   Application.EnableEvents = True End Sub E列以降を選択したら、同列1行目にジャンプさせてしまいます。 ちなみに > Worksheets("Sheet1").ScrollArea = "A1:D20"  > 上記コードはA1:D20の範囲を無効にするコードと私は理解しています。 ちょっと違います。 正確には「指定範囲以外使用不可」です。 つまり、指定した範囲以外にはフォーカスを持っていけないように 設定をする=使用不可にするために使います。 なので、単純に   Worksheets("Sheet1").ScrollArea = "A:D" として、使用可能範囲をA~D列だけに設定してやれば、 上記一つ目の非表示と違い、E列意向を表示したままで使用不可、 お望みの > A列~D列までスクロール可能。以降の列はスクロール無効。 という設定も可能です。 もう一つあるとしたら、 「A~D列を常に表示」するように設定したい、 E列にフォーカスがあろうが、Z列にあろうが、 極端にIV列を表示していようが、 「A~D列はいつでも表示したい」、 つまりエクセルでいう「ウィンドウ枠の固定」機能をお望みならば、 共通)   Cells("D1").Select   ActiveWindow.FreezePanes = True これで設定可能です。 いやいや、そうでもない。 もっと違う結果が欲しいんだよ。 とおっしゃる場合は、より具体的な「望む結果」を、 回答者にわかるように補足ください。

noname#193651
質問者

補足

ご回答有り難うございます。 申し訳有りませんでした。抽象度が高すぎました。 > Worksheets("Sheet1").ScrollArea = "A1:D20"  > 上記コードはA1:D20の範囲を無効にするコードと私は理解しています。 上記に関しては記述ミスでした。 しっかり「指定範囲以外使用不可」と理解しています。 補足します。 シート1を対象にします。 シート1のA列~D列(列の指定は例えです。)の範囲は縦のスクロールを可能にし、以降の列は縦スクロールを無効にしたいのです。 なぜなら、A列~D列は一年分のカレンダーを記載しているので結構下までスクロールしなければなりません。 ですが、以降の列には天気予報を表示していますので、カレンダーの部分をスクロールしても天気予報は常に表示してある状態にしたいのです。 宜しくお願いします。

  • mine2309
  • ベストアンサー率37% (36/96)
回答No.1

マクロで以下のようにするとできます。 Worksheets("Sheet1").ScrollArea = "A1:D20" シート名および,スクロールする範囲はご自身のファイルに合わせて設定してください。

noname#193651
質問者

お礼

回答有難うございます。 以前試しましたが出来ませんでした。 Worksheets("Sheet1").ScrollArea = "A1:D20"  上記コードはA1:D20の範囲を無効にするコードと私は理解しています。 なので、回答者様が回答した用にすれば可能と思いましたが出来ませんでした。 上記コードを記述するとシート自体が無効になってしまいます。 私の記述が間違えているのでしょうか汗

関連するQ&A