VBA范围选择/清除错误

时间:2013-12-16 23:03:31

标签: excel vba

我正在尝试使用vba清除表格A:H和K中的某一行。 在K列中,不仅有值,还有复选框。 我想留下列I和J,因为这些行中有一个公式。

现在我尝试了很多在互联网上破碎的不同选项,但似乎无法解决问题。

我的代码如下:

Sub ClearSelected()

Sheets("overview").Unprotect
Sheets("Database").Unprotect

Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim rng As Range
Dim counter As Integer
Dim vert As Integer
Dim r As Range
Dim chkbx As CheckBox

Set ws1 = Worksheets("Overview")
Set ws2 = Worksheets("Database")
Set rng = ws1.Range("P2")

vert = rng.Value + 1
counter = 2

'do Loop
Worksheets("Database").Activate
Do While counter < vert

    'if "True", remove row
    If ws2.Range(ws2.Range("K" & counter)) = True Then
        ws2.Range("A" & counter & ":H" & counter).Select
        Selection.Clear

        ws2.Range("K" & counter).Select
        Selection.Clear


        'Remove checkbox in selectie
        Set r = Selection
        For Each chkbx In ActiveSheet.CheckBoxes
            If Not Intersect(r, chkbx.TopLeftCell) Is Nothing Then chkbx.Delete
        Next chkbx


        rng.Value = rng.Value - 1
    'remove checkbox
    End If
 counter = counter + 1

 Loop
 Sheets("overview").Protect AllowUsingPivotGraphs:=True
Sheets("Database").Protect

End Sub

由于某种原因,它在范围选择/清除方面失败了。 我收到了错误消息1004。

希望你对我有好的建议。

1 个答案:

答案 0 :(得分:0)

我不完全确定这是否有效,但您是否尝试将select.clear行改为

 ws2.Range("K" & counter).ClearContents

这会清除单元格而不会影响格式化,这可能会导致问题。有时1004也会失去对象的焦点,或者你正在尝试操作的范围的大小。

顺便说一句,你可能也不需要过多担心删除公式。您可以自动重新插入它们。

类似的东西:

 ws2.Range("K" & counter).FormulaR1C1="=(R+1*C+1)"
'R and C refer to row and column, so equations remain relatively referenced

最简单的方法是开始录制宏,将所需的公式输入到单元格中,然后查看代码以了解如何在VBA中构建公式。

不确定是否有任何帮助,但希望如此。