[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『あるシート以外の処理』(初心者)
sheet1以外を表示倍率を160%にしたいのですが、 「sheet1以外」の書き方が分かりません。 基本的な問題だと思うのですが、簡単な書き方があれば、 ご教授をお願いします。 if文など使ってみましたが、使い方が良く分かりません。 下記のようにしてみましたが、if ws.name <>"sheet1" thenが エラーとなってしまいました。 Sub auto_open() Application.CellDragAndDrop = False if ws.name <>"sheet1" then activewindow.zoom = 160 endif End Sub 宜しくお願いします。 windows vista excel2007
wsが定義されていないのでエラーがでると思います。 ブックのイベントとして作成してみましたので、 VBEのThisWorkbookに入れてみてください。
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name <> "Sheet1" Then ActiveWindow.Zoom = 160 End If
End Sub
(Miki)
ひそかにエクセルVBAのバグ以外の何物でもないと思っているけど、ブックを開く時点で、そのアクティブシートに対しては Activateイベントが発生しない。なので、仮にSheet1がアクティブシートなら、最初、開いた時にはズームが設定されない。
ThisWorkbookモジュールに
Private Sub Workbook_Open() If ActiveSheet Is Sheets("Sheet1") Then ActiveWindow.Zoom = 160 End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object) If Sh Is Sheets("Sheet1") Then ActiveWindow.Zoom = 160 End Sub
なお、エラー自体の理由はMikiさんの回答通り。
(ぶらっと)
ありがとうございます。 ThisWorkbookモジュールに既にopen closeのコードが書いてあります。 こういう場合はどうしたらよいのでしょうか? 基本的な問題かもしれませんが、宜しくお願いします。 (初心者)
質問者の初心者さん、 既にあるコードの下の空白部分に入れてください。
ぶらっとさん 逆でないですかね? 「Sheet1以外」でという内容です。
(Miki)
miki様 ありがとうございます。 教えていただいたコードでやってみましたが、 ブック立ち上げの際は、100%のままでしたが、 他のシートをアクティブにした後、シート1に戻ったら、 160%になってしまいました。
Private Sub Workbook_SheetActivate(ByVal Sh As Object) If Sh.Name <> "Sheet1" Then ActiveWindow.Zoom = 160 End If End Sub
(初心者)
>逆でないですかね? 「Sheet1以外」でという内容です。
Mikiさん、ご指摘深謝。そこつものでした。
>ブック立ち上げの際は、100%のままでしたが、 >他のシートをアクティブにした後、シート1に戻ったら、 >160%になってしまいました。
私がレスした、オープン時のアクティブシートの問題。以下を追加すればOK。 (ただし、Mikiさんご指摘のように、【以外】に変更してある。
Private Sub Workbook_Open() If Not ActiveSheet Is Sheets("Sheet1") Then ActiveWindow.Zoom = 160 End Sub
(ぶらっと)
ありがとうございます。 ご指導のとおりで出来ました。 (初心者)
強制的に走らせるならこんな方法も
Private Sub Workbook_Open() Application.Run "ThisWorkbook.Workbook_SheetActivate", Me.ActiveSheet End Sub (seiya)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.