Excelで入力用のシートを作りました。
ちょうど、画面に収まるように作っているので
スクロールさせたくありません。
オプションで、スクロールバーは非表示にしていますが、
マウスのホイール(?)でスクロールしてしまいます。
何とかスクロールさせないようにしたいのですが、
よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

シートのVBAプロパティウインドウを開いて、


ScrollAria の値に表示させたい範囲を入れてみてはいかがでしょう。
シートのVBAプロパティウインドウは、コントロールツールボックスのメニューバーから、プロパティのコマンドボタンをクリックすると出てきます。

これで、スクロールバーがあっても動きませんし、私の環境(WIN2000+EXCEL2000)ではホールマウスでも動きません。

ただし、一つ問題があります。シートのプロパティはファイルを一度閉じると解除されますので、ブックを立ち上げるときに再設定しなければなりません。これを自動でやるには、VBEのThisWorkbookのコードウインドウに

Private Sub Workbook_Open()
ThisWorkbook.Sheets(1).ScrollArea = "$A$1:$Q$50"
End Sub

次の三行の記述をするとできます。
    • good
    • 0
この回答へのお礼

ありがとうございます。
できました!
ところで、Auto_Open()プとWorkbook_Open()
の違いは何なんでしょうか?
私は、Auto_Open()に記述しましたが、それでもOKでした。

お礼日時:2003/09/30 20:57

> ところで、Auto_Open()プとWorkbook_Open() の違いは何なんでしょうか?



コードビハインドオブジェクトが採用される前のなごりという言い方が正しいかは判りませんが、(^^;)
私はEXCEL95以前の互換性を保つためにAuto_Open()があると解釈してます。

ただ、excel97では、Openメソッドで開く他のファイルのWorkbook_Openイベントは実行されなかったと思います。そんなときAuto_Openが有効だったと思います。

excel2000では問題ありませんので、コードビハインドオブジェクトの利点を生かしてWorkbook_Openのみで事足りると思いますが、まぁ、どちらでもよろしいかと。
    • good
    • 0
この回答へのお礼

詳しい解説、ありがとうございます。
ところで、コードビハインドオブジェクトってなんですか。
まあ、こんなに質問ばかりしていては失礼なので、何とか自分で探して見ます。
これからは、Workbook_Openの方を使おうかと思います。
どちらも同じなら、Workbook_Openの方が簡単そうですし、意味がわかります。

お礼日時:2003/10/02 06:23

Excelで入力用のシートがちょうど、画面に収まるように作ってあれば、


「表示」「ズーム」で倍率を小さくし表の右下のセルにカーソルを置き、表全体とその右下のカーソルのあるセルが表示されるようにしてください。
その状態で「ウィンドウ」「ウィンドウ枠の固定」とし表示の倍率をもとにもどせば出来ます。
    • good
    • 0
この回答へのお礼

ありがとうございます。
入力画面が固定されているので、表面上は動きませんが、スクロールは実行されているようです。
手軽にできる点がいいかもしれません。

お礼日時:2003/10/01 05:59

こんにちは。

maruru01です。

バージョンが明記されていないので、こちらの環境(2000)で回答します。
以下の手順で行います。

・[Alt]+[F11]を押して、VBEの画面を表示させる
(メニューの[ツール]→[マクロ]→[Visual Basic Editor]でもOK)
・[Ctrl]+[R]で、プロジェクトエクスプローラを表示させる
(たいてい画面の右側にすでに表示されている)
・プロジェクトエクスプローラで、VBAProject(ブック名)→Microsoft Excel Objects→スクロールを制限したいシート名を選択する
・[F4]でプロパティウィンドウを表示させる
(たいていプロジェクトエクスプローラの下にすでに表示されている)
・プロパティの中の[ScrollArea]に、
「A1:Z100」
などとスクロールさせる範囲を入力する
(決定すると、セル範囲は絶対参照になる)

これで、設定した範囲しかスクロール出来なくなります。
なお、元に戻す場合は、[ScrollArea]の内容を削除して下さい。
    • good
    • 0
この回答へのお礼

ありがとうございます。
No2の方と同じ方法ですよね。
ただ、自動的に実行できるので、No2の方の方法にしました。

お礼日時:2003/09/30 21:01

ども


こんなことで宜しいでしょうか
表示倍率を一度50%にして、メニューのウィンドウ→分割を選択して必要セル範囲まで移動させて、表示倍率を100%
にもどす。
もしくは、ウィンドウ枠の固定を使われたらいかがでしょうか
    • good
    • 0
この回答へのお礼

ありがとうございます。
ただ、No2の方の方法を取り入れました。
ウィンドウ枠の固定とかもいいかもしれませんが、
どうしたらいいかよくわかりません。

お礼日時:2003/09/30 20:59

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

Qエクセルでスクロールしても画面が動かない設定?

他人の作ったエクセルなのですが、画面が固定されており、スクロールバーは動くのですが、いくらスクロールしても画面が動きません。
矢印キーでは一番右端や下のセルまで飛ぶことは「名前ボックス」のセル番地が表示されるのでわかるのですが、画面自体はまったく動きません。

メニューの「ウィンドウ」で見ると、「分割の解除」と「ウィンドウ枠固定の解除」となっており、これを解除すると普通にスクロールするので、「ウィンドウ枠の固定」と「ウィンドウの分割」を使ってこんなカラクリ(?)にしたのだろうとは想像するのですが、自分で同じように再設定することができません。

ためしに、画面の可視範囲外となるセルをアクティブにし、スクロールバーで画面をもとに(A1セルを左上に表示されるように)もどしてから、ウィンドウ枠の固定を行なうと、アクティブセルとは無関係のところで分割されてしまいました。
どうすればこんな設定が可能なのでしょうか?

エクセルは2000です。

Aベストアンサー

まず,画面のズームで表示サイズを100%から75%など小さくして,より多くのセルを表示させるようにする。これで100%の時は画面表示外のセルも75%なら表示されていると思います。
次に,100%のとき画面表示外のセルをアクティブにして「ウィンドウ枠の固定」を行う。セルのアクティブをA1など100%表示の時の範囲内に戻して,再び画面表示の「ズーム」を100%に戻すと出来上がりです。

Qエクセル VBA セルの個数を所得する

いつも皆様には大変お世話になっております。

早速の質問ですが、

    A    B     C     D     E
1
2       123
3       123
4       123
5       123
6
7       123
とエクセルのセルがなっている場合の
上のB2から下のB7までのセルの個数を所得したいのです
B8以降にも数字が入る場合があるのと間に空白が入る場合があるので
困っています。
B2のセルは固定となっているのでB2からの判別で問題ない状況です。
どうぞ皆様お知恵をお借りしたく思っておりますのでよろしくお願いいたします。

Aベストアンサー

質問が非常に不明確なのですが・・・

所得?取得ですよね?

単にB2:B7のセルの個数をVBAで取得するなら
MsgBox Range("B2:B7").Count

B2:B7の空白でないセルの個数なら
MsgBox Application.CountA(Range("B2:B7"))

B7まででなくB2からB列のデータがある最後までのセル個数なら
MsgBox Range("B2:B" & Cells(Rows.Count, "B").End(xlUp).Row).Count

B2からB列のデータがある最後までの空白でないセル個数なら
MsgBox Application.CountA(Range("B2:B" & Cells(Rows.Count, "B").End(xlUp).Row))

Qユーザーフォームを表示中にシートの操作をさせるには

ユーザーフォームを表示中にシートの操作をさせる事はできるのでしょうか。
セルへの入力、画面のスクロールなどは、ユーザーフォームからマクロを実行させたり、.hideでユーザーフォームを一時的に隠すなどすればいいのでしょうが、そういう手段をとらないでユーザーフォームを表示中にシートの操作をさせる事はできるのでしょうか。

Aベストアンサー

ユーザフォームの
ShowModalプロパティを
falseにすればよいかと。

Q【Excel VBA】マクロでExcel自体を終了させたい

環境:WindowsXP、Excel2003

マクロでエクセルを終了(ブックを閉じて、アプリケーション自体も終了)させたいのですが、以下のコードではアプリケーションが閉じてくれません。

ThisWorkbook.Close
ExcObj.Quit
Application.Quit

どこか悪いところはありますでしょうか?

よろしくお願いします。

Aベストアンサー

普通に考えれば質問者のコードで上手くいきそうですが
hana-hana3さんの回答にもあるようにThisWorkBook.Closeでコード終了となりますので
Application.QuitをThisWorkBook.Closeの前にもってこないといけません。
Application.Quitはそれがあるプロシージャのコードが全て終わるまで
その実行を保留するちょと特別動作をします。

'-------------------------------------
 Application.Quit
 ThisWorkbook.Close
'-------------------------------------
 
 

QVBA(エクセル)で自動的にボタンをクリックさせるには

いつもお世話になっております。
下記のことがしたいのですがどうやって良いのかがわからなくって困っております。

やりたいこと。
AブックとBブックが有るとします。(双方ともエクセルファイル)
エクセルのVBAで、Aブックのシート上のコマンドボタンを押すと
Bブックのシート上のコマンドボタンをクリックするという動きを
VBAでさせたいのですがどうしてもクリックさせることができません。

試したこと。
初めは、AのボタンをクリックするとBのボタンをセレクトして
SendKeysでENTERを送ってみたりしたのですがうまくいきませんでした。

何かやり方が有りましたら、お教えいただけませんでしょう。
宜しくお願いいたします。

Aベストアンサー

Privateスコープを変更しない場合、Application.Runメソッドを使う手もあります。
Application.Run "'C:\Book1.xls'!Sheet1.CommandButton1_Click"
※『Sheet1』の部分はシートモジュールのオブジェクト名になります。

ですが、Bブックのボタン_Clickの中味を標準モジュールに置いて、
AブックのボタンとBブックのボタンと、両方から実行できるようにしておくほうが良いような気もしますね。

(コマンドボタンが[フォーム]ボタンの事だったら、同じマクロを[マクロの登録]するだけの話?)

QエクセルVBAでフィルタ抽出部分のみのコピー

エクセルVBAで売上帳を作成していますが、オートフィルタでデータ抽出した後、表示されている行のみをコピーして別シートに貼りつけるにはどうすればよいのでしょう?

別シートは指定したセルに値のみの貼り付けをしたいと思っています。

宜しくお願いします。

Aベストアンサー

こんにちは
マクロの記録で作成した一例です。コメントを読んで、適当にアレンジして下さい。

Option Explicit
Sub SampleMacro1()
'
' SampleMacro1 Macro
' マクロ記録日 : 2009/3/13
'
 'フィルター部分
 Selection.AutoFilter Field:=1, Criteria1:="=ほげほげ", Operator:=xlAnd
 '可視セルの選択
 Selection.SpecialCells(xlCellTypeVisible).Select
 '選択範囲のコピー
 Selection.Copy
 'コピー先のシート&セル選択
 Sheets("Sheet2").Select
 Range("A1").Select
 'ペースト
 ActiveSheet.Paste
 'コピー元シートに戻りコピー状態解除
 Sheets("Sheet1").Select
 Application.CutCopyMode = False
 Range("A1").Select
End Sub

外してたら、ごめんなさい

こんにちは
マクロの記録で作成した一例です。コメントを読んで、適当にアレンジして下さい。

Option Explicit
Sub SampleMacro1()
'
' SampleMacro1 Macro
' マクロ記録日 : 2009/3/13
'
 'フィルター部分
 Selection.AutoFilter Field:=1, Criteria1:="=ほげほげ", Operator:=xlAnd
 '可視セルの選択
 Selection.SpecialCells(xlCellTypeVisible).Select
 '選択範囲のコピー
 Selection.Copy
 'コピー先のシート&セル選択
 Sheets("Sheet2").Select
 Range("A1").Select
 'ペース...続きを読む

Qエクセル マクロで指定フォルダを開く

エクセルにて
指定フォルダを開く、マクロがあれば教えて頂けないでしょうか。
よろしくお願いいたします。

Aベストアンサー

こんにちは。

こういうものですか?
開くフォルダを変えたいときは targ に与えるパスを変更します。

Sub OpenFolders()
Dim targ As String
targ = "C:\"
Shell "C:\Windows\Explorer.exe " & targ, vbNormalFocus
End Sub

QEXCEL(VBA) セルをクリックしたときの処理

何度もお世話になります。

A5:A20のどれかをクリックしたときに
クリックしたセルが値が入力済みか確認してから
ファイルを名前を付けて保存したいのですが
クリックしたという情報(イベント?)の取得方法が
わかりません。

(1)どのようにチェックすればよいのでしょうか?
(2)また、皆さんはどのようにしてこのような問題を解決してるのでしょうか?

よろしくお願いします。

Aベストアンサー

Sheet1だとして、
Sheet1のマクロで

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'
If Target.Column = 1 And Target.Row >= 5 And Target.Row <= 20 Then
If Target.Value <> "" Then MsgBox "入力済み"
End If
'
End Sub

と入れると、クリックしたセルがA5からA20のどれかで
かつセルに値が入っているときのみ”入力済み”とメッセージが表示されます。
このメッセージ表示の部分を、「名前を付けて保存」の処理に置き換えてはいかがでしょうか。

QExcel VBA あるセルでENTERを押すと特定のセルへ移動したい

Excel VBAで例えばセル"A2"をセレクトしている状態で
「ENTER」を押すとB5に自動的にセレクトすることはできないでしょうか?

Worksheet_Change関数を使おうと思ったのですが
"A2"の中身が変化しないと発動しません。

Worksheet_SelectionChange関数を使って"A2"を選択している状態で「ENTER」を押すと"A3"が選択されることを利用し、
「"A3"が選択されたら"B5"に飛ぶ」
も考えたのですが、マウスやキーボード操作で"A3"を
選択すると"B5"に飛んでしまうので、これも使えません。

何か対策案はないでしょうか。ご教授よろしくお願いします。

Aベストアンサー

こんばんは。

これは、定番のコードですが、私は、それに、もう少し工夫を凝らしてみました。
本来は、クラスによるインスタンスが良いとは思いますが、それを一般的にお勧めするには、ちょっと荷が重いような気がしました。

'<標準モジュール>

Private Sub ReturnDirectrion2SelectCell()
 If ActiveCell.Address(0, 0) Like "A2" Then
  Range("B5").Select
 Else
  'Original ReturnDirection の再現
  On Error Resume Next
  Select Case Application.MoveAfterReturnDirection
  Case xlDown
    ActiveCell.Offset(1).Select
  Case xlToRight
    ActiveCell.Offset(, 1).Select
  Case xlToLeft
    ActiveCell.Offset(, -1).Select
  Case xlUp
    ActiveCell.Offset(-1).Select
  End Select
 End If
End Sub

Sub SetKeys()
  '設定用
  Application.OnKey "~", "ReturnDirectrion2SelectCell"
  Application.OnKey "{Enter}", "ReturnDirectrion2SelectCell"
End Sub
Sub SetOffKeys()
 '解除用
 Application.OnKey "~"
 Application.OnKey "{Enter}"
End Sub

'-----------------------------------------

自動設定が必要な場合は、以下のコードを加えてください。

'-----------------------------------------
'<標準モジュール>
Sub Auto_Open()
 Call SetKeys
End If
Sub Auto_Close()
 Call SetOffKeys
End If
'-----------------------------------------

なお、現在の設定では、全てのブックの全てのシートに同じように適用されます。Auto_Open等の代わりに、例えば、Worksheet_Activate や Workbook_SheetActivateなどに、SetKeysをCall し、Worksheet_DeactivateやWorkbook_SheetDeactivateに、SetOffKeysをCallするようにすると良いと思います。

こんばんは。

これは、定番のコードですが、私は、それに、もう少し工夫を凝らしてみました。
本来は、クラスによるインスタンスが良いとは思いますが、それを一般的にお勧めするには、ちょっと荷が重いような気がしました。

'<標準モジュール>

Private Sub ReturnDirectrion2SelectCell()
 If ActiveCell.Address(0, 0) Like "A2" Then
  Range("B5").Select
 Else
  'Original ReturnDirection の再現
  On Error Resume Next
  Select Case Application.MoveAfterReturnDirection
  ...続きを読む

QEXCEL VBAで全選択範囲の解除

EXCEL VBAで
Cells.Select
と書くと、全セルが選択状態になりますが、
これを解除するには、どう書けばよいのでしょうか?

Aベストアンサー

その1
A1 など、適当なセルを選択する。
(回答#1と同じ)

その2
全選択する前の選択範囲に戻る。

全選択前に
変数 = Selection.Address で記憶

全選択後
Range(変数).Select で元の選択範囲を選択


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報