2012-03-01 276 views
0

我有幾個組合框(和列表框)和周圍寫了很多的VBA的工作簿。我在Workbook_Open過程中使用了相同的代碼來格式化它們幾個星期,沒有任何重大的麻煩。Excel的VBA組合框下拉按鈕大小 - 改變自身

昨晚我遠程的-desktopped到我的工作電腦(爲有史以來第二次)編輯代碼的其他一些地方(沒有什麼觸動了框屬性的話)。過了一段時間,所有盒子,列表和組合的格式變得瘋狂。列表框上的右側滾動條變得很大,並且在它們的底部也出現了巨大的滾動條。組合框上的下拉按鈕也變得非常大 - 就像盒子一樣寬。

我關閉並重新打開Excel和所有的箱子回到他們以前的幸福狀態,除了一,仍然有一個下拉按鈕一樣寬的框。我的vba格式代碼不起作用。重新啓動計算機不會有幫助。我比較了應該相同的兩個框的屬性窗口(名稱和左側位置除外),沒有什麼不同。

所以有反正我可以馴服,復位,或以其他方式控制這種叛徒下拉按鈕?我希望我甚至沒有在Excel中處理這種不可預知的行爲,但我被卡住了。

這裏是我的格式VBA:

With ThisWorkbook.Sheets(c_stMatrixSheet).OLEObjects(c_stMatrixTypeBox) 

     .Width = 120 
     .Top = 14 
     .Left = 878 

     Call FormatComboBox(.Object) 

     .Object.AddItem c_stAMatrix 
     .Object.AddItem c_stBMatrix 
     .Object.AddItem c_stCMatrix 

     .Object.Text = c_stAMatrix 

    End With 

...

Private Sub FormatComboBox(bxComboBox As msforms.ComboBox) 

    With bxComboBox 

     .Clear 

     .Height = 19.5 
     .Font.Name = c_stDropBoxFont 
     .Font.Size = 10 
     .AutoSize = False 
     .Enabled = True 
     .Locked = False 

     .Placement = xlFreeFloating 

    End With 

End Sub 
+0

現在我注意到,整個下拉框,當按下按鍵巨大,本身就是巨大的,或者巨大的寬,那是。文本的大小與普通框相同。行高很好。但是盒子超寬,它有一個巨大的右側滾動條。 – RomnieEE2 2012-03-01 14:35:24

+0

這不好,但我想我有一個解決方法。首先,我使用autosize true格式化框。我想是兩次。隨着盒子變寬,按鈕在兩次傳球中變小。 (請注意,沒有任何文本的寬度與原始框的寬度相同。)然後將這些框的格式設置爲所需的寬度,並且autosize爲false。 – RomnieEE2 2012-03-01 14:47:24

+0

同樣,在我的Workbook_Open方法中,我實際上必須運行我的格式組合框例程兩次,b/c列表框不會在第一遍中填充,而是在第2遍中執行。去搞清楚。我是否會詛咒Excel,vba或一般微軟? – RomnieEE2 2012-03-01 14:49:38

回答

2

你碰到的工作表上的ActiveX控件使用的問題,我有同樣的問題,它是間歇性的,隨機做到這一點。

我發現要真正解決的事情,唯一的辦法就是使用窗體控件。除非您選擇顯示隱藏的對象,否則這些在工作表上更穩定,儘管隱藏不了智能感知。他們也很靈活,並提供了很多功能 - 除非你需要事件,因爲他們不會開火。

+0

謝謝。所以我嘗試了一個快速的網絡搜索,但沒有找到它:但是你說有沒有可以通過取消隱藏來訪問VBA中的Forms屬性?我應該能夠嘗試並獲得這個想法 - 除了我該如何開始?作爲例子看一個Form對象?再次感謝。 – RomnieEE2 2012-03-01 16:19:18

+0

工具>對象瀏覽器>右鍵單擊成員>顯示隱藏成員。表單下拉框然後是工作表sheetx.dropdowns(x)等中的一個集合。您不需要實際查看隱藏的成員,代碼就可以正常運行,只是讓事情變得更簡單 – SWa 2012-03-01 17:19:26

1

我有同樣的問題。尚未部署到用戶,但下面的代碼似乎工作。每次選擇工作表時只需重新設置大小。

Private Sub Worksheet_Activate() 
    ActiveSheet.Shapes("ComboBoxSelectAccount").Width = 300 
    ActiveSheet.Shapes("ComboBoxSelectAccount").Height = 20 
End Sub 

HTH 裏克

1

我花了很多時間,但在互聯網上沒有合適的解決方案。

我的筆記本電腦屏幕上出現了這樣的問題(不在擴展塢的擴展桌面顯示器上!)每次單擊下拉按鈕時,工作表中activeX組合框的字體大小都會變小。直到下拉按鈕無法訪問爲止。

手動我可以在開發人員模式改變組合框的大小重置的字體大小。

通過VBA我做以下解決了微軟的問題:

Private Sub MyComboBox_DropButtonClick() 
'MyComboBox.Font.Size = 12 'Has no effect!!! 
Dim CbxWidth = 300 As Single 'How big the combobox should be 
MyComboBox.Width = CbxWidth + 1 
ComboboxUpdate 'or whatever you want to do 
MyComboBox.Width = CbxWidth 
End Sub 

希望它不要打擾,如果我寫一些德語單詞也幫助人們在我的家鄉laguage:

  1. 組合框Schrift wird克萊納UND克萊納

  2. 組合框SchriftändertSICHselbstständig

  3. 組合框Schriftgrösseautomatisch克萊納

  4. 組合框automatische AnpassungSchriftgrößedeaktivieren

1

我有同樣的問題,不知道爲什麼,但如果你調整它,然後重新恢復正常。所以,我插入瞭如下解決:

Private Sub ComboBox1_LOSTFocus() 
Application.ScreenUpdating = False 
ActiveSheet.Shapes.Range(Array("ComboBox1")).Select 
ActiveSheet.Shapes("ComboBox1").ScaleWidth 1.25, msoFalse, _ 
    msoScaleFromTopLeft 
ActiveSheet.Shapes("ComboBox1").ScaleHeight 1.25, msoFalse, _ 
    msoScaleFromTopLeft 
ActiveSheet.Shapes("ComboBox1").ScaleWidth 0.8, msoFalse, _ 
    msoScaleFromTopLeft 
ActiveSheet.Shapes("ComboBox1").ScaleHeight 0.8, msoFalse, _ 
    msoScaleFromTopLeft 
Application.ScreenUpdating = True 
End sub 
0

我做了一些閒逛,發現如果你有PageBreakPreview ON,它會導致調整大小的問題。回到正常視圖,問題就消失了。

0

我只是移動形狀固定

Private Sub MyComboBox_DropButtonClick() 
    ActiveSheet.Shapes("ComboBox1").Top = 1 
    ActiveSheet.Shapes("ComboBox1").Top = 2 
End Sub