[[20220214145717]] 『ファイルを開いた時』(hiro) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ファイルを開いた時』(hiro)

マクロでファイルを開いた時にマクロを有効にしていないと
メッセージの書かれたシートが開いて作業ができないようになってます

下記?@と?Aの不具合が生じました

?@メッセージ付きのシートが開くがメッセージが入力されている
 セル以外が表示され、メッセージが見えない

?Aメッセージが付きのシートが開かない

マクロは始めてです
どうしたら直せるのか分かりません
助けてくれませんか?

マクロが有効でない時にメッセージを表示するのはこのマクロでしょうか?

Private Sub Workbook_Open()

    Sheets("あ).Visible = xlSheetVisible
    Sheets("sheet1").Visible = xlSheetHidden
 End Sub

< 使用 Excel:Office365、使用 OS:Windows10 >


 多分途中で上書き保存したのでしょうか。
 マクロが有効でない時にマクロで○○をするというのは一切出来ません。
 マクロが有効でない時というのは、前回保存した状態を表示しているだけです。
 マクロが有効でない時に表示したい状態にしてから上書き保存してください。
(cai) 2022/02/14(月) 16:25

■1
>マクロは始めてです
よくお見掛けする(hiro)さんとは別の方でしょうか?

いずれにせよ、マクロを研究するには【ステップ実行】という方法を使うと便利ですよ。

 ※ Workbook_Openなどのイベントに絡むものであっても、ブレークポイント(Stopステートメントによる代用含む)を
    設定することによりステップ実行することは可能です。

■2
質問とは関係ありませんが、この掲示板では丸付き数字などの環境依存文字を使うと文字化けすることがあるので避けたほうが無難だとおもいます。

■3
今回のケースでいえば、非常にシンプルな構成ですから何をしているのかわからない命令を調べてみるのもよいでしょう。
https://www.moug.net/tech/exvba/0040053.html
https://docs.microsoft.com/ja-jp/office/vba/api/excel.worksheet.visible
https://docs.microsoft.com/ja-jp/office/vba/api/excel.xlsheetvisibility

■4
ステップ実行すればわかるとおもいますが、マクロを有効にした場合、

 (1)ブックを開いたことをきっかけにしてマクロが発動
 (2)「あ」シートを表示にする
 (3)「Sheet1」シート非表示にする

ということをしています。
すなわち、提示のマクロではシートの表示、非表示しか操作してませんから、保存したときに関係ないシートをアクティブにしていたり、全然別のセルを表示させておいたりしたら仰るようなことになるとおもいます。

 ※なので普通は、保存時に「Sheet1」を表示に戻してアクティブシートにして、
  「あ」シートを非表示にするようなマクロとセットで運用していると思います。

とりあえず、今すぐ何とかするだけなら、手作業で↓をしてから保存すれば次からは戻りますよ。

 (1)「Sheet1」シート表示してアクティブにしたうえで、メッセージのあるセルまでカーソルを移動させておく(見えるようにしておく)
 (2)「あ」シートを非表示にする

■余談
投稿するときのタイプミスだとはおもいますが↓ですよね。

 誤 Sheets("あ)
 正 Sheets("あ")

(もこな2) 2022/02/14(月) 16:37


おはようございます
確認遅くなり申し訳ございません

>よくお見掛けする(hiro)さんとは別の方でしょうか?
 
 こちらのサイト昨日教えてもらったばかりで投稿は始めてです
 同じニックネームの方がいらしたのですね
 紛らわしくすいません、次回からひらがなにしようと思います

>質問とは関係ありませんが、この掲示板では丸付き数字などの環境依存文字を使うと文字化けすることがある>ので避けたほうが無難だとおもいます。

 教えてくれてありがとうございます
 正しくは
 
 下記1と2の不具合が生じました
 1メッセージ付きのシートが開くがメッセージが入力されている
 セル以外が表示され、メッセージが見えない
 2メッセージが付きのシートが開かない

>すなわち、提示のマクロではシートの表示、非表示しか操作してませんから、保存したときに関係ないシー>トをアクティブにしていたり、全然別のセルを表示させておいたりしたら仰るようなことになるとおもいま>す。

 マクロ付きのファイルを各担当者が使用し、私がそれを日々集計してます
 担当者に確認しましたが覚えていないとのことです
 ファイルに表示されているシートは1つ(sheet1)しかありません
 たぶん、
 (1)ブックを開いたことをきっかけにしてマクロが発動

  (2)「あ」シートを表示にする(「あ」にコンテンツを有効にすることを警告するメッセージ)
  (3)「Sheet1」シート非表示にする(「sheet1」に入力すると別のマクロが発動)
 となっているのではと思ってます
 今回の不具合は、
 (1)の時にマクロが発動せず、sheet1の入力ができる(コンテンツを有効にしていないので入力時のマクロが発動しない)
 (2)「あ」シートのメッセージが表示されない(メッセージが入力されていない行が表示される)

 (1)と(2)が正常に動く方法を教えてくれませんか?
 「あ」シートはないのでどうやってメッセージのあるセルまで動かすかわかりません

>投稿するときのタイプミスだとはおもいますが↓ですよね。

 タイプミスです
 教えてくれてありがとうございます

 

(hiro) 2022/02/15(火) 09:15


すでに皆さんがコメントされていますが、
マクロを有効にして開いたときに動作するマクロの不具合ではなく、
閉じるときに動作するマクロに問題があると考えられます。

「Private Sub Workbook_Open()」のほかに、
「Private Sub Workbook_BeforeClose(Cancel As Boolean)」があると思われますので、
提示してみて下さい。

(わからん) 2022/02/15(火) 10:37


遅くなりました
こちらで大丈夫でしょうか?

 Private Sub Workbook_BeforeClose(Cancel As Boolean)

    Sheets("sheet1").Visible = xlSheetVisible
    Sheets("あ").Visible = xlSheetVeryHidden
 End Sub

少し勘違いしてました
ファイルに表示されているシートはsheet1じゃなくて、「あ」シートしかありません
但し、ブックを開いて表示されるシートがメッセージシートで
コンテンツを有効にすると「あ」シートが開き、メッセージシートは表示されなくなります

(hiro) 2022/02/15(火) 11:34


 >メッセージが入力されているセル以外が表示され
Range.Show メソッド
Application.Goto メソッド
などでメッセージが入力されているセルに移動させる?
(どん) 2022/02/15(火) 12:12

こういうのは、元の状態に戻したい時がある私としてはやりません。

なぜなら、閉じる前に必ず実行して上書き保存
普通の上書き保存時にも必ず実行しなければならないから・・・。
(手本) 2022/02/15(火) 12:17


>普通の上書き保存時にも必ず実行しなければならない

ごもっともです。
それを考慮すると、こんな感じでしょうか。

 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Worksheets("Sheet1").Visible = True
    Worksheets("Sheet1").Activate
    Range("A1").Select

    Worksheets("あ").Visible = xlVeryHidden
 End Sub

 Private Sub Workbook_AfterSave(ByVal Success As Boolean)

    Worksheets("あ").Visible = True
    Worksheets("あ").Activate

    Worksheets("Sheet1").Visible = False
 End Sub

(わからん) 2022/02/15(火) 13:20


各担当者がマクロ有効じゃないのに入力作業(有効じゃなくても入力はできます)を
しないようメッセージを表示させているみたいです
苦肉の策だと言ってました

わからんさん
教えてくれたコードで実行すると「あ」シートが表示されないです
しかもエラーが出ます
 
 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    Worksheets("Sheet1").Visible = True
    Worksheets("Sheet1").Activate
    Range("A1").Select
    Worksheets("あ").Visible = xlVeryHidden ←ここで実行時エラー9

1.マクロが無効の場合、sheet1のみ表示
  ↓
2.マクロが有効の場合、「あ」シートのみ表示

(hiro) 2022/02/15(火) 14:48


もとからあった
Private Sub Workbook_Open()
は、消さないでください。
(わからん) 2022/02/15(火) 15:55

> Worksheets("あ").Visible = xlVeryHidden ←ここで実行時エラー9

シートがないときに出るエラーですか...
とりあえず、こちらに変更して下さい。

 Sheets("あ").Visible = xlSheetVeryHidden

(わからん) 2022/02/15(火) 17:24


確認遅くなり申し訳ございません
変更したらエラーでなくなりました
ありがとうございます

(hiro) 2022/02/17(木) 12:45


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.