ワークシート上の所定の位置に、拡大・縮小のコマンドボタンを作って、押すごと、25倍、50倍、100倍・・・(その逆)という風に表示倍率を変えたいのですが、
Dim Zm As Integer
Zm = 25
Private Sub ZoomButton_Click()
Zm = Zm * 2
ActiveWindow.Zoom = Zm
End Sub
と、こんなふうにやってみたんですが、最初値25倍のInitializeが分かりません。どうしたら良いのでしょうか?
VBAど素人なので、よろしくお願いします
No.5ベストアンサー
- 回答日時:
#4です。
>後半のものはうまくいきませんでした。
現象は、ボタンを押すと25%になって、何回押しても変化しないということでしょうか?
それでしたら、「ZmをPublic変数にして」とだけ書いて、ソースに明示しなかった部分の不足だと思います。
Public Zm As Integer 'これを追加
Private Sub CommandButton1_Click()
If Zm = 0 Then
Zm = 25
Else
Zm = Zm * 2
End If
ActiveWindow.Zoom = Zm
End Sub
これで動作すると思います。
できました!
すみません、きわめて初歩的なミスで。おそらく他に出来なかったものも同じようなミスなんでしょうね。
もしよろしかったら、時間がある時で構わないのですが、DimとStaticとPublicと、違いを教えて頂けないでしょうか?
私が使っている参考書には、Dimでの定義のやり方しか載っていません。Publicは、全てのモジュールで使える変数ということでしょうか?
No.6
- 回答日時:
#4です。
>DimとStaticとPublicと、違いを教えて頂けないでしょうか?
まずは、ヘルプを確認して頂いて、その上で不明点は別途質問していただいた方が適切な回答が得られると思います。
>Publicは、全てのモジュールで使える変数ということでしょうか?
(Option Private Module を使用しない場合、)その理解でよろしいと思います。
Dimで宣言された変数は、(Dim文が)呼び出されるたびに初期化されますが、Staticで宣言された変数は、一旦セットされた値を保持します。
Sub testst()
Static x As Long
x = x + 5
Debug.Print x
End Sub
Sub testdim()
Dim x As Long
x = x + 5
Debug.Print x
End Sub
イミディエイトウィンドウで、teststとtestdimを何回か実行してみて下さい。
かさねがさね、ありがとうございます。
おっしゃられる通り、もう少し自分で勉強しないとダメですね。
あまりに便利なサイトを見つけたものですから、ついつい甘えてしまいました。DimとStatic、なんとなく判ったような気がします。
No.4
- 回答日時:
初期値を25にする意味がよく理解できません。
普通現在の値を拡大ボタンを押したらその2倍、縮小ボタンを押したらその半分という風に設定すると思いますが、どうでしょうか?
Private Sub CommandButton1_Click()
Zm = ActiveWindow.Zoom
Zm = Zm * 2
ActiveWindow.Zoom = Zm
End Sub
この場合、ZmをPublic変数にする必要はありません。
勿論、ZmをPublic変数にして、最初の値を25にすることも出来ます。
すでに回答されている以外に、例えば、
Private Sub CommandButton1_Click()
If Zm = 0 Then
Zm = 25
Else
Zm = Zm * 2
End If
ActiveWindow.Zoom = Zm
End Sub
ありがとうございます。
これが一番シンプルで、素人にも大変判りやすいです。後半のものはうまくいきませんでした。
Zm=ActiveWindow.Zmという逆の式が成り立つとは思いもよりませんでした。いい勉強になりました。
マクロって面白いですね。皆さんからご意見いただきましたが、「へぇええ~」の連発です。
No.3
- 回答日時:
標準モジュールを挿入して、Module1 で、
Public Zm As Integer
ThisWorkbook で、
Private Sub Workbook_Open()
Zm = 25
ActiveWindow.Zoom = Zm
End Sub
コマンドボタンを作ったsheet で、
Private Sub CommandButton1_Click() '拡大ボタン
Zm = Zm * 2
ActiveWindow.Zoom = Zm
End Sub
Private Sub CommandButton2_Click() '縮小ボタン
Zm = Zm / 2
ActiveWindow.Zoom = Zm
End Sub
で、うまく行くと思います。
一度保存して、立ち上げ直してテストして下さい。
ボタンの位置は、#1の方も言っているように、拡大して行くと、ボタンの位置がズレて行きますので、出来るだけA1に小さく置くと良いです。
ありがとうございます。
何度試してみても、
WindowクラスのZoomプロパティを設定できません。
と言われてしまいます。
どうしてなのでしょう?
No.2
- 回答日時:
「小さくなり切れば、次は大きくなり、大きくなり切れば、次は小さくなる」と
いうことですね。
こんな感じで如何でしょうか。
Private Sub ZoomButton_Click()
Static UpDn As Boolean
Dim Zm As Single
If UpDn = False Then
Zm = ActiveWindow.Zoom * 2
If Zm = 400 Then
Zm = Zm / 4
UpDn = True
End If
Else
Zm = ActiveWindow.Zoom / 2
If Zm = 12.5 Then
Zm = Zm * 4
UpDn = False
End If
End If
ActiveWindow.Zoom = Zm
End Sub
すみません、質問の言葉が悪かったです。
拡大→拡大→縮小→縮小という折り返しが必要なわけではないんです。両方のボタンを作るという意味でした。
ありがとうございます。
No.1
- 回答日時:
(1)Zmをシートのセルの値として持たせる方法。
(2)ZmをPublic変数とし、先だってZm=25を実行する方法
(3)ZmをStatic変数にし、初回に0にしてくれるのを利用する方法
(2)
Sub test01()
zm = 25
End Sub
Private Sub CommandButton1_Click()
zm = zm + 25
ActiveWindow.Zoom = zm
CommandButton1.Caption = zm
End Sub
(3)
Private Sub CommandButton1_Click()
Static zm
zm = zm + 25
ActiveWindow.Zoom = zm
CommandButton1.Caption = zm
End Sub
(1)
Private Sub CommandButton1_Click()
zm = Cells(1, 3)
zm = zm + 25
ActiveWindow.Zoom = zm
CommandButton1.Caption = zm
Cells(1, 3) = zm
End Sub
しかし
(1)倍率減少のボタンも必要でしょう
(2)倍率が上がると画面からボタンが消えて、使い難い
です。
と言うことで総合的にみて現実的ではないですね。
ありがとうございます。
(2)だけが、どうしても実行できません。
(3)と(1)は出来ました。Static変数というものを知らないので、(1)が単純でいいですね。セルに入れてしまうというのは気が付きませんでした。
ただ、両方とも、+25ならいけるのですが、*2では駄目なようです。なぜんでしょう。
画面からボタンが消えてしまうのは、問題ですね。拡大した後に、毎回ボタンだけ縮小・位置修正しなければならないという、致命的な構成ミスです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
彼女のことが好きすぎて彼女の...
-
イタリアから帰国する際、肉製...
-
勃起する時って痛いんですか? ...
-
精液の落とし方を教えてください
-
精子が黄色?
-
精子に血が・・・
-
これって喉仏ですか? 私は女性...
-
風俗店へ行く前のご飯
-
白血球が多いとどんな心配があ...
-
検便についてです。 便は取れた...
-
急に主人の性欲が強くなった
-
レインボーシックスシージをし...
-
エクセル指定した範囲からラン...
-
男性に質問 お尻の穴を見せた...
-
EXCELで条件付き書式で空白セル...
-
知能テストは、今。 義務教育課...
-
甲状腺が腫れているが血液検査...
-
エクセルのラベルの値(文字列...
-
鏡についてです。自分の体型を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
彼女のことが好きすぎて彼女の...
-
白血球が多いとどんな心配があ...
-
勃起する時って痛いんですか? ...
-
精子が黄色?
-
検便についてです。 便は取れた...
-
これって喉仏ですか? 私は女性...
-
小数点以下を繰り上げたものを...
-
甲状腺が腫れているが血液検査...
-
精液の落とし方を教えてください
-
エクセル指定した範囲からラン...
-
EXCELで条件付き書式で空白セル...
-
2つの数値のうち、数値が小さい...
-
精子に血が・・・
-
エクセルのラベルの値(文字列...
-
イタリアから帰国する際、肉製...
-
ある範囲のセルから任意の値を...
-
リンク先のファイルを開かなく...
-
中出しをするとお腹が痛い・・・。
-
MIN関数で空白セルを無視したい...
おすすめ情報