2017-06-06 79 views
1

我試圖插入一個下拉列表,其中有一個「通過/失敗」標準的用戶填充細胞的權利。細胞將按順序從上到下填充。這是我到目前爲止:通過代碼插入組合框

Sub ComboBoxPassFail()  
    Dim i As Integer 
    Dim rng As Range 

    i = 4 

    For Each c In Worksheets("Inspection Report").Range("A4", Range("A4").End(xlDown)).Cells 
     If c.Value <> "" Then 

     Set rng = c.Offset(0, 14) 

     Top = rng.Top 
     Left = rng.Left 

     ActiveSheet.OLEObjects.Add(classtype:="forms.combobox.1", Left:=Left, Top:=Top, Width:=8, Height:=15).Insert 

     i = i + 1 

     End If 
    Next c 

    i = 4 

End Sub 

我的主要問題來自處理組合框。

回答

0

幾件事情

  1. topleft在VBA保留字。您不能將它們用作變量
  2. 由於您正在使用Excel行,因此將行聲明爲Long而不是Integer。順便說一句,我沒有看到在代碼中使用i
  3. .Insert無效聲明。

這是你正在嘗試?

Sub ComboBoxPassFail() 
    Dim rng As Range, c As Range 
    Dim rngTop As Double, rngLeft As Double 

    For Each c In Worksheets("Inspection Report").Range("A4", Range("A4").End(xlDown)).Cells 
     If c.Value <> "" Then 
      Set rng = c.Offset(0, 14) 
      rngTop = rng.Top 
      rngLeft = rng.Left 

      '~~> You may want to decide on a more appropriate width value? :) 
      ActiveSheet.OLEObjects.Add classtype:="forms.combobox.1", _ 
             Left:=rngLeft, Top:=rngTop, _ 
             Width:=8, Height:=15 
     End If 
    Next c 
End Sub 
+0

關於寬度,我認爲它是由點,而不是像素。我只是檢查了列寬並拿到了分值。它被糾正了。至於左邊和上邊,我在這裏提交問題後糾正了這些問題。我本來是想以不同的方式去做,而我忘了帶走它。無論哪種方式,我現在都設法添加它們。將工作插入「通過」,「失敗」標準。謝謝! –