2012-10-17 317 views
1

請求:用於使用VBA或ActiveX滾動條向左或向右移動表單的迷你滾動條的VBA代碼?Excel VBA滾動條向左或向右移動表格

我已經創建了一個訓練師技能矩陣,其中列出了側邊(在單元格'B7'到'B86')和頂部列出的技能學科(單元格E6到'AJ6')的教練員姓名。訓練師姓名和技能相交的地方,我有一個下拉列表,表示有技能的'Y','N'沒有技能和'n \ a'。如果該技能不適合該教練。我已經凍結了標題行(單元格E6到'AJ6')和教練名稱(單元格'B7'到'B86'),以便於交叉引用

我想添加一個'mini'水平滾動條(位於單元格A4:B4),其行爲與主Excel表單滾動條完全相同(即向左或向右移動表單)。我已經嘗試了超過4小時沒有運氣的ActiveX滾動條和'谷歌搜索'的解決方案。一位專家VBA程序員或Excel大師是否可以提供解決方案或設置一些示例代碼?乾杯!!

Screenshot of my Trainer Skills Matrix

+0

窗口會在你的情況下分裂工作嗎?這將給你完全相同的滾動條(我認爲這是你要找的東西,但對不起,如果不是:))。 – RocketDonkey

回答

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事件可用於重新定位滾動條。

+0

這個效果非常好,非常感謝!有什麼辦法可以讓它浮起來,因爲儘管列滾動,我滾動左側和右側它保持在同一個地方,即它漂浮在列上,但是從編輯鎖定。如果這有道理? – moshjosh

+0

查看我的編輯可能的方法。 –

0

請戴上表選擇更改下面的代碼

Me.ScrollBar1.Value = ActiveWindow.ScrollColumn - 4 

請調整要作爲FITT滾動到活動窗口,然後調整scrollbar1最大滾動值的列。