スピン ボタン (ActiveX コントロール) を使用して前または次のシートを表示したい。ボタンをクリックすると、イベントが正常にトリガーされ、目的のシートがアクティブになりますが、元のシートの一部の要素 (コマンド、グラフなど) が保持され、追加の画像として表示されます。
下ボタンイベントのサンプルコード:
Private Sub SpinButton_JumpToWeek_SpinDown()
Dim sh_num As String
Dim tmp_num As Integer
Application.ScreenUpdating = False
Application.EnableEvents = False
SpinButton_JumpToWeek.Value = Range("B27").Value - 1
tmp_num = SpinButton_JumpToWeek.Value
' Activate desired KTx sheet
sh_num = "KT" & tmp_num
Range("F27").Value = "" 'reset to blank
Sheets(sh_num).Activate
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
この効果を無効にするには、別のシートを手動で選択 (アクティブ化) してから、目的のシートを再度選択する必要があります。この回避策をマクロで自動化しようとしましたが、残念ながらうまくいきません。
デバッグ モードでコードを実行すると (ブレークポイントと行ごとのステップ実行を使用して)、この問題が発生しないことは興味深いことです。
驚くべきことに、定義されたセルに値 (シート名のインデックス) を書き込むことによって (つまり、Worksheet_Change イベントを使用して) 前/次のシートを表示しようとすると、このような問題は発生しません。目的のページが正しく表示されます。写真を参照してください。
このイベントのサンプル コードここに画像の説明を入力してください:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sh_num As String
Application.ScreenUpdating = False
Application.EnableEvents = False
If Range("F27").Value > 0 Then
' Activate desired KTx sheet
sh_num = "KT" & Range("F27").Value
Range("F27").Value = "" 'reset to blank
Sheets(sh_num).Activate
End If
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
[スピン] ボタンを使用する必要があるのは、高速であり、一部のシートをスキップできるためです (たとえば、これらのシートにデータがない場合)。この問題は、32 ビットと 64 ビットの両方の Excel で発生します。
この問題が発生している理由と回避策を誰かが考えていますか? Excel の一部の設定またはシステム プロパティを変更する必要がありますか? どんな助けでも大歓迎です。
@mehow 単語数が多いため、ここにコメントを追加します。
- 私はあなたの提案に従い、アクティブ コントロール「Microsoft Office スプレッドシート」を挿入したユーザー フォームの例を試しました。ユーザーがセルに値を挿入すると、そのようなシートの応答が(私のような高速PCでも)比較的遅いため、これは私の場合には良い解決策ではないことがわかりました。さらに、これは私のかなり単純な *.xlsm ワークブックを非常に複雑にします。このワークブックには 50 を超えるシート (毎週 1 シート、これらのシートの内容はメイン シートにリンクされます) があり、私の基本的な必需品を完全に満たしています (もちろん、このスピンボタンは例外です)。
私の意見では、ある種のシステム プロパティ (Application.ScreenUpdating トリックなど) を操作する必要があるかもしれませんが、それを見つけるのに十分な VBA の知識がありません。
- 質問を明確に説明するには、サンプル ワークブックを共有する必要がありますが、このフォーラムにアップロードする方法がわかりません。残念ながら、このフォーラムで画像を正常にアップロード/表示できません (評価が低いため)。これも大いに役立ちます。
ところで、このフォーラムの他の質問の画像も表示されません。. この問題は、Web ブラウザーにプラグインがないために発生する可能性がありますか?