1

リクエスト:VBAまたはActiveXスクロールバーを使用してシートを左右にシフトするミニスクロールバーのVBAコード?

トレーナー名を下に(セル「B7」から「B86」に)リストし、スキル分野を上に(セルE6から「AJ6」に)リストするトレーナースキルマトリックスを作成しました。トレーナーの名前とスキルが交差する場合、「Y」はスキルを持っている、「N」はスキルを持たない、「n\a」を示すドロップダウンリストがあります。スキルがそのトレーナーに適していない場合。相互参照を容易にするために、ヘッダー行(セルE6から「AJ6」)とトレーナー名(セル「B7」から「B86」)を凍結しました。

「ミニ」水平スクロールバー(セルA4:B4にあります)を追加します。これは、メインのExcelシートスクロールバーとまったく同じように動作します(つまり、シートを左右に移動します)。ActiveXスクロールバーと「Googled」ソリューションを4時間以上試しましたが、うまくいきませんでした。専門家のVBAプログラマーまたはExcelの第一人者は、解決策を提案したり、サンプルコードを投稿したりできますか?乾杯!!

トレーナースキルマトリックスのスクリーンショット

4

2 に答える 2

0

シート選択変更に以下のコードを入れてください

Me.ScrollBar1.Value = ActiveWindow.ScrollColumn - 4

アクティブなウィンドウに合わせてスクロールする列を調整してから、scrollbar1の最大スクロール値を調整してください。

于 2012-12-26T18:17:49.953 に答える
0

ActiveXスクロールバーの場合:

'in the sheet code module
Private Sub ScrollBar1_Change()
    ActiveWindow.ScrollColumn = 4 + Me.ScrollBar1.Value
End Sub

Private Sub ScrollBar1_Scroll()
    ActiveWindow.ScrollColumn = 4 + Me.ScrollBar1.Value
End Sub

スクロールバーの最小値を1に設定し、最大値を列の数に設定します...

編集:スクロールバーを列と一緒に移動させたい場合は、イベントで次のようなことを行うことができますChange(ただし、イベントにスクロールバーを追加すると、Scroll奇妙な結果が生成されます:

Private Sub ScrollBar1_Change()
    Dim sc As Long
    sc = 4 + Me.ScrollBar1.Value
    ActiveWindow.ScrollColumn = sc
    Me.ScrollBar1.Left = Me.Cells(1, sc).Left
End Sub

ただし、手動で(矢印キーなどを使用して)シートを移動すると、スクロールバーが表示されなくなり、スクロールバーの再配置に使用するsheet_scrollイベントがなくなります。

于 2012-10-17T20:01:52.027 に答える