
作業ブックのシートに
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
途中省略
If Range("$ER$3").Value = "■" Then
Call Accessシート表示
End If
End Sub
を設定しております。
指定セルに「■」が表示されるとマクロ「Accessシート表示」が実行されるのですが、
作業の中で、マクロ「Accessシート非表示」を実行して「シート名:Access」を非表示にした後、
同じシートの指定セル以外のセルを変更した場合にもマクロ「Accessシート表示
」が実行されてAccessシート表示が表示されてしまいます。
マクロ「Accessシート非表示」を変更して、一度、シート名:Accessを非表示にした後は、手動で表示にしない限り、このシートを非表示出来る方法があれば教えてください。
現状のマクロ
Sub Accessシート非表示()
Worksheets("Access").Visible = False
End Sub
以上となります。
よろしくお願いいたします。
No.4ベストアンサー
- 回答日時:
プルダウンならばWorksheet_Changeイベントは発生しますので
#2様の回答で良いと思います
BAは既に回答されているので追記の部分の説明です
私の回答は >表示される を 深読みしたもので(現状もトリガーを特定していないから)
数式の解で表示した場合 Worksheet_Changeイベントが発生しないと記憶しているためのものです
If Range("$ER$3").Value = "■" Then
Call Accessシート表示
End If
If Range("$ER$3").Value = "■" Then 部分に条件
Target(変更されたセル)がER3セルである
を加えればよい事になります
途中省略があるので
1行ですが
If Not Intersect(Range("ER3"), Target) Is Nothing And Target.Value = "■" Then Call Accessシート表示
とか
If Target.Address = "$ER$3" And Target.Value = "■" Then Call Accessシート表示
とかでも同様の処理になるかと・・・思います
いずれにしても
問題解決に 非表示プロシージャを触る必要は無いのではという事ですね
詳しく説明していただきましてありがとうございます。
№2の方と合わせて、設定しまして、上手くできました。
ありがとうございます。
No.6
- 回答日時:
こんにちは
ご質問文の文字通りの内容を実現するなら・・
1)どこかのセル(できれば非表示シートや、非表示セルが望ましい)を
フラグとして設定しておく。
2)マクロから対象シートを非表示にした際には、フラグをセットする。
3)対象シートを表示するマクロは全て、フラグを参照してセットされて
いる場合には表示しないように変更しておく。
4)対象シートの「表示イベント」でフラグをクリア。
といった仕組みすることで可能と思います。
とは言え、想像するところ、こんなつぎはぎ的なことをしなくても、整理さえすれば「やりたいこと」を実現するスマートな方法はありそうに思います。
(何がどうなっているのか不明なので、当方にはよくわかりませんけれど・・)
No.5
- 回答日時:
読み返ししたら
コピペしたので Call Accessシート表示 となっていますが
Call Accessシート非表示 ですかね・・
やっぱり変ですね
> 手動 で表示にしない限り、
であれば Call Accessシート表示は不要です(最もコード書いてないけど)
いつ非表示にするかわかりませんが
Private Sub Workbook_Open()
Worksheets("Access").Visible = False
End Sub
だけで
Worksheet_Changeイベントで
Worksheets("Access").Visible = True は不要?
No.3
- 回答日時:
こんにちは
ご質問の内容には矛盾があり理解できませんが おそらく
Accessシート非表示の内容を変更するのではなく
If Range("$ER$3").Value = "■" Then
Call Accessシート表示
の条件を考察するべきでしょう
文中に
>指定セルに「■」が表示されるとマクロ「Accessシート表示」が実行される
とあるので セルER3には 数式が入っているものと推測します
Worksheet_Changeイベントは数式による変更をトリガーしなかったと思うので
この数式の条件セル(入力される参照元セル)が変更されたときに
現状条件とTarget.Address条件を加えてCall Accessシート表示を実行すれば
例えばER3セルに入っている数式 =IF(AA3="","","■")
AA3も数式の場合は参照元をトレースで入力元セルを見つけてください
If Target.Address(0, 0) = "AA3" And Range("$ER$3").Value = "■" Then
Call Accessシート表示
End If
>同じシートの指定セル以外のセルを変更した場合にもマクロ「Accessシー>ト表示」が実行されてAccessシート表示が表示されてしまいます。
この処理は発生しないと思います
>一度、シート名:Accessを非表示にした後は
この 一度 の条件がどの様なものなのかわかりませんが
>手動で表示にしない限り、このシートを非表示出来る方法があれば教えてください。
ならば、
If Range("$ER$3").Value = "■" Then
Call Accessシート表示
End If
を消せばよい事になりますね
推測もありますので参考程度で
No.2
- 回答日時:
少し質問の意味が読み取りにくいですが、もしER3セルが「■」に変更された時だけ、「Accessシート表示」処理を呼びたいなら、以下のようにされてはどうでしょうか。
Intersectは複数の範囲の積集合を求めるメソッドです。意味が違っていたらごめんなさい。
Private Sub Worksheet_Change(ByVal Target As Range)
Set insect = Application.Intersect(Range("ER3"), Target)
If insect Is Nothing Then
' 何もしない
Else
If Range("ER3").Value = "■" Then
Call Accessシート表示
End If
End If
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excelのマクロについて教えてください。 1 2024/06/18 09:20
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2024/03/18 17:57
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 4 2023/05/26 10:43
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 4 2024/03/05 09:03
- Visual Basic(VBA) ExcelのVBAのことで質問です。 以下のコードを入れ、ボタンを押せば作動させると写真のように画面 3 2023/12/14 16:10
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2024/03/06 13:07
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2024/03/13 09:23
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/01/23 11:02
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vba セルの4辺について罫線が有...
-
vbsでのwebフォームへの入力制限?
-
エクセルのマクロについて教え...
-
エクセルの改行について
-
エクセルのVBAコードについて教...
-
【マクロ】値を渡されたプロシ...
-
Excelのマクロについて教えてく...
-
エクセルのマクロについて教え...
-
Excelのマクロについて教えてく...
-
vb.net(vs2022)のtextboxのデザ...
-
【マクロ】変数を使った、文字...
-
ワードの図形にマクロを登録で...
-
【マクロ】モジュール変数の記...
-
ExcelのVBAコードについて教え...
-
エクセルのVBAコードについて教...
-
エクセルのマクロについて教え...
-
エクエルのVBAコードについて教...
-
ExcelのVBAコードについて教え...
-
エクセルのVBAコードと数式につ...
-
改行文字「vbCrLf」とは
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マクロVBAについて、コードを教...
-
testファイル内にある複数のpng...
-
改行文字「vbCrLf」とは
-
エクセルVBA 検索結果を隣のシ...
-
vb.net(vs2022)のtextboxのデザ...
-
エクセルのVBAコードと数式につ...
-
【マクロ】切取りの場合、形式...
-
【ExcelVBA】5万行以上のデー...
-
ExcelVBAでパワポを操作したい
-
(EXCEL超初心者)EXCELの関数(ま...
-
エクセルの改行について
-
Excelマクロで使うVBAコードを...
-
ワードの図形にマクロを登録で...
-
【マクロ】変数を使った、文字...
-
VBAでFOR NEXT分を Application...
-
VBAの質問(Msgboxについて)です
-
エクセルのVBAコードについて教...
-
Excelマクロで使うVBAコードを...
-
Excelのマクロについて教えてく...
-
VBAの「To」という語句について
おすすめ情報
回答ありがとうございます。
詳しく教えて頂きましてありがとうございます。
記者が教えて頂いたコードで再度、質問をさせてください。
例えばER3セルに入っている数式 =IF(AA3="","","■")
AA3も数式の場合は参照元をトレースで入力元セルを見つけてください
とありますが、
ER3に数式では無く、プルダウンで「■」を選択しております。
この場合は、どのようになりますでしょうか、
何度も申し訳ありません。
よろしくお願いいたします。
何時も助けて頂きましてありがとうございます。
勝手ですが、今回の質問とは別に先日より色々と質問を繰り返して、
未だ、未解決な事が有ります。今週末に一度、整理をし、週明けに再度
質問をさせて頂きましと思いますが、助けて頂けますでしょうか。
勝手を言って申し訳ありません。
よろしくお願いいたします。
先にお礼をしてしまいましたので、
改めて
何時も適切なアドバイスをありがとうございます。
助かりました。