2013-12-13 20 views
1

我正在嘗試創建一個帶有按鈕的插入行和ActiveX組合框的按鈕的Excel電子表格。該按鈕被選定大小並與單元一起移動。由於按鈕隨着每次點擊而移動(如上面一行所插入的),並且用戶可以在工作表上突出顯示任何單元格,所以我需要創建一個相對於按鈕單元格而不是活動單元格的宏。我通過命名包含按鈕的單元格並記錄我自己的宏(使用「選擇使用相對引用」)在包含按鈕的單元格上方插入一行來完成前半部分。然後,我編輯了包含ActiveCell.Select到宏的宏(「NamedCell」)。選擇這樣,無論用戶突出顯示哪個單元格,都會在按鈕上方插入一行。插入ActiveX控件相對於單元格時遇到的問題

我遇到的問題是如何插入ActiveX組合框。生成的代碼包含左,頂部,寬度和高度以定位ActiveX組合框。由於高度隨着每次連續點擊和插入的行而改變,所有組合框相互重疊。如果這不會發生或需要大量的VBA代碼,請不要擔心。通過閱讀你對別人的迴應,我已經學會了一大堆。這裏是我目前使用的宏,但是它每次都將ActiveX組合框插入到相同的位置,而不是像按我想要的那樣放置在按鈕上方的單元格中。再次感謝。

Sub AddFitting() 
' 
' AddFitting Macro 
' 

' 
    Range("FittingRow").Select 
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 
    Range("FittingCell").Select 
    ActiveCell.Offset(-1, 0).Range("A1").Select 
    ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", Link:=False, _ 
     DisplayAsIcon:=False, Left:=0, Top:=346.5, Width:=120, Height:=15.75) _ 
     .Select 
    With Selection 
     .Placement = xlMoveAndSize 
     .PrintObject = True 
    End With 
    ActiveCell.Offset(0, 2).Range("A1").Select 
    ActiveCell.FormulaR1C1 = "'= K value" 
    ActiveCell.Offset(0, -1).Range("A1").Select 
End Sub 

回答

1

這是你正在嘗試?

Sub AddFitting() 
    Dim ws As Worksheet 
    Dim rng As Range 

    Set ws = ThisWorkbook.Sheets("Sheet1") 

    With ws 
     .Range("FittingRow").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 

     Set rng = .Range("FittingCell").Offset(-1, 0) 

     With .OLEObjects.Add(ClassType:="Forms.ComboBox.1", link:=False, _ 
     DisplayAsIcon:=False, Left:=rng.Left, Top:=rng.Top, _ 
     Width:=rng.Width, Height:=rng.Height) 
      .Placement = xlMoveAndSize 
      .PrintObject = True 
     End With 

     rng.Offset(, 2).FormulaR1C1 = "'= K value" 
    End With 
End Sub 
+0

是的,這是完美的。我試圖找出如何定位它相對於一個單元格。非常感謝您花時間幫助我!不幸的是,我無法對你的評論贊不絕口,因爲我沒有15點聲望點,但我會一旦我做到了。 –

+0

很高興爲你效勞。順便說一句[有趣的閱讀](http://stackoverflow.com/questions/10714251/excel-macro-avoiding-using-select) –

+0

謝謝,這是非常有益的。當你不確定你在找什麼時,有時候很難找到答案,但這肯定是有幫助的。再次感謝。 –