• 締切済み

Excel 2003 VBA ワークシート 固定

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

noname#193651
noname#193651

みんなの回答

  • 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

  • エクセルVBA 請求データ一覧からの複数の処理

    先日 1度質問をさせて頂いたものです。 作業内容が追加で必要になり試行錯誤でやっていたのですが躓いてしまいまして、 再度の質問で申し訳ありませんが、ご教示頂けないでしょうか。 抽出したデータは1行「AO」まで入力がされています。 実際に請求書に関係するものは「J」以降になり、 「J」以降は3列1組のデータとなります。 これを行単位で(行単位でなくても構いません)、 記載のある行まで繰り返し同じ処理を行いたいのですが、 可能でしょうか。 <例>  ① Worksheet1の2行目を選択  ② Worksheet2の     A列 List1     B列 List2     C列 List3     D列 List4    の数値を参照  ③ List1に記載のコードに該当してれば    そのコードの金額を合計し、    Worksheet3"請求書ひな形"のセル「J2」に入力    List2に記載のコードに該当していれば、    そのコードの金額を合計し、    Worksheet3"請求書ひな形"のセル「K2」に入力    List3に記載のコードに該当していれば、    そのコードの金額を合計し、    Worksheet3"請求書ひな形"のセル「L2」に入力    List4に記載のコードに該当していれば、    そのコードの金額を合計し、    Worksheet3"請求書ひな形"のセル「N2」に入力    セル「AN」の値を    Worksheet3"請求書ひな形"のセル「M2」に転記    セル「AO」の値を    Worksheet3"請求書ひな形"のセル「O2」に転記     <Workseet1>     ・・・・・J    K      L     M    N     O  ・・・・・・AO    ・・・・コード  費目名   金額    コード  費目名   金額  2  A01    ○○    100000  Z05   xxx    5000                    ・                    ・                    ・  <Worksheet2> A B C D A01 C01 P01 D01 A02 C02 P05 D11 A03 E01 Q10 D12 B01 F10 Q20 D20 B02 F20 R01 D30 ・       ・       ・ どうぞ宜しくお願い致します。

  • エクセル VBA

    Sheet1(データベース)のA列に会社名(約30社) B列に管理番号0001~9999の番号 C列に取扱い品名(同じ会社名で複数あります) D列以降はその他の詳細(列は不規則)があります。 Sheet1をもとに会社名ごとのシートを作成し、管理番号順に並べ替えをしたいのですがうまくいきません。 どなたかお知恵をお貸し下さい。

  • Excelのワークシート関数について

    Worksheet_Changeを()使って、自動リスト作成(入力規則)を使ったマクロを作成しております。 例えばL列のセルに値を入力すると同行のM列に自動にリストが作成されるものです。 今問題なのが、セルのコピー&ペーストで、L列のみのコピーペーストだとM列に自動リスト処理がはしるのですが、A列からL列の範囲コピーだとM列は無反応でなにも動きません。 ターゲット指定では下記のようにペーストされる範囲を指定しております。 Set Target = Intersect(Target, Worksheets("Sheet1").Range("A1:M100")) うまく動作させる方法をお願いいたします。

  • エクセル VBA ワークシート作成?

    仕入単価未決とゆうエクセルファイルがドライブDにあり このファイルを開いて元データーファイルとする。 このファイルのA列にはコード        B列には仕入先名        C列には品番        D列には品名 などが入力されております。 このファイルを仕入単価決定書とゆう名前のファイルの 決定書原紙とゆうワークシートに作成したフォーム内の テキストボックス1で仕入単価未決のファイルを選択し コマンドボタンをクリックしたら コード=仕入先名(B列)でワークシートを作成し 各仕入先(コード)ごとに各データーが入力されるように したいのですが、どのように行えばいいでしょうか? 文章は長いですが、説明が不足しておりましたら 指摘の程宜しくお願いいたします。

  • Excel VBA 別シートのデータ取得後 検索

    ブックAを開いています。 シートは「2013年1月」と「作業項目」の二つあり、 2013年1月にはカレンダーを作成しております。 また作業項目にはA1から順にA2,A3....と 文字列が記載されています。 この文字列をA1から順番にカレンダーの方で検索していき、該当すれば赤色に変更したいです。 (※セル内全ての文字列ではなく、該当文字列のみ赤色に変更) 宜しくお願い致します。

  • EXCEL VBAで教えてください。

    EXCELで、4列(A~D)仕立ての表があります。D列に入力されている日付が現在より過去の場合、その行を削除するように作成したいのですが、教えていただけますでしょうか?

  • excel vba についてお聞きします

    excel vba についてお聞きします userformを使ってworksheetにデータを登録するといった事をしたいと考えております userformにはtextboxとcommandbuttonを配置 commandbuttonを押したらtextboxに入力した内容をworksheetに登録させる 同時にworksheetのA列には日付を登録 日付は登録をするその日付を反映させる 同じ日付があった場合は日付の登録はせずにその日付の行、B→C→Dと順に textboxのデータの登録だけをする。 日付の入るA列以外にデータが入る事になります また、textboxの内容が既にworksheetに登録済の場合 『既に登録済みです』といったメッセージを出すようにもしたいのです ご教授の程、よろしくお願いします。

  • EXCEL VBAで日報作成したい

    お世話になります。 EXCEL VBAの勉強をかねて日報を作成しようと思っています。 添付図にあるような簡単な日報ですが、VBAでやりたいことは2つあります。 1.行追加 各行の隣にある「行追加」ボタンを押したらその行を下に追加したいのです。 2.カレンダー作成 「カレンダー作成」というボタンを押したらA5に入っている月を参照して、添付図のようなA列が月、B列が日、C列が曜日、D列が開始時間、E列が終了時間、F列が作業、G列に行追加ボタンが自動で該当月のカレンダーに自動作成できれば最高です。 上記1.2を実現するためのロジックについてどなたかお知恵をお借りできませんでしょうか? よろしくお願い致します。 EXCEL2013

  • ExcelのVBA

    Aというフォルダ内にあるEXCELファイルにてC列を参照(C列にはAフォルダ内にあるテキストファイルのファイル名が記載されている)し、 D列にC列に記載されているテキストファイルの内容(15文字程度)をVBAで出力したいと思っています。 Googleで色々と調べてみたのですが、同じような内容が発見できなかったので、質問致しました。 非常に困っていますので、どなたか教えていただけませんでしょうか? よろしくお願いします。

  • エクセルのシートの列を増やしたい

    エクセルを使って横向きに一年間の連続カレンダーを作成したいのですが、規定値で列は250列と少し(A~IV)までしかありません。 カスタマイズ等で列を増やせないのでしょうか? どなたかご存知の方、ご伝授願います。

専門家に質問してみよう