2015-02-05 101 views
0

我試圖運行一個腳本,根據特定列的單元格值在現有行之間插入空行。運行時錯誤13類型不匹配

到目前爲止,我有這樣的:

Set currentcell = Sheets("L1f").Range("I2:I131") 

Do While Not IsEmpty(currentcell) 

    Set nextcell = ActiveCell.Offset(1, 0) 

    ** If currentcell.Value = 1 Then 
     nextcell.EntireRow.Insert 

    ElseIf currentcell.Value = 2 Then 
     nextcell.EntireRow.Insert 
     nextcell.EntireRow.Insert 

    ElseIf currentcell.Value = 3 Then 
     nextcell.EntireRow.Insert 
     nextcell.EntireRow.Insert 
     nextcell.EntireRow.Insert 

    End If 
    Set currentcell = nextcell 
Loop 

而且我越來越突出顯示的線路運行時錯誤13類型不匹配。我已經通過這個網站搜索,並沒有找到一個修復,但我是新的,所以任何幫助/方向將是非常感謝!

+0

哪種語言? – 2015-02-05 17:14:10

回答

0

我猜這個代碼來自其他地方,你試圖編輯Set currentcell行,所以它將被限制在L1f!I2:I131,而不是隻是選擇的地方?

問題是,當您將currentcell設置爲多個單元格時,它的.Value將成爲一個數組而不是單個值。所以,你需要設置currentcell只是在L1f!I2:I131開始細胞,並引入另一個測試,看看當它落在該範圍之外:

Dim currentcell as Range 
Dim endcell as Range 
Set currentcell = [L1f!I2] 
Set endcell = [L1f!I131] 

Do While currentcell.Row <= endcell.Row 

    Set nextcell = currentcell.Offset(1, 0) 

    If IsNumeric(currentcell) Then 

     If currentcell.Value = 1 Then 
      nextcell.EntireRow.Insert 

     ElseIf currentcell.Value = 2 Then 
      nextcell.EntireRow.Insert 
      nextcell.EntireRow.Insert 

     ElseIf currentcell.Value = 3 Then 
      nextcell.EntireRow.Insert 
      nextcell.EntireRow.Insert 
      nextcell.EntireRow.Insert 

     End If 

    End If 

    Set currentcell = nextcell 
Loop 
+0

另一個問題(您似乎已經修復但沒有提及)是'Set nextcell = ActiveCell.Offset(1,0)',其中'ActiveCell'與該過程的其餘部分無關。 – Brad 2015-02-05 17:26:44

+0

感謝您的快速回復!試過這個,它成功了! – shhhhh 2015-02-05 17:29:54