excel考勤表(宏)

时间:2013-07-17 10:17:45

标签: excel vba

Public rctr
Public cctr
Sub Macro1()
'
' Macro1 Macro
'
' Keyboard Shortcut: Ctrl+Shift+A
'
    Call RCount
    Call CCount
    If Range("B" & rctr) = "" Then
    Range("A" & rctr).Select
    ActiveCell.FormulaR1C1 = "=COUNTA(R2C:R[-1]C)"
    Selection.AutoFill Destination:=Range("A" & rctr & ":" & Cells(rctr, cctr - 1).Address), Type:=xlFillDefault
    Range("B" & rctr + 1).Select
    ActiveCell.FormulaR1C1 = "=R[-1]C1-R[-1]C"
    Selection.AutoFill Destination:=Range("B" & rctr + 1 & ":" & Cells(rctr + 1, cctr - 1).Address), Type:=xlFillDefault

    Cells(1, cctr).Select
    ActiveCell.FormulaR1C1 = "TOTAL"
    Cells(2, cctr).Select
    ActiveCell.FormulaR1C1 = "COUNTA(RC2:RC[-1])"
    Selection.AutoFill Destination:=Range(Cells(2, cctr).Address & ":" & Cells(rctr - 1, cctr).Address), Type:=xlFillDefault
    Range("A1").Select
    Else
        Beep
    End If
End Sub
Sub Macro2()
'
' Macro2 Macro
'
' Keyboard Shortcut: Ctrl+Shift+C
'
    Call RCount
    Call CCount
    If Range("B" & rctr) <> "" Then
    Range("A" & rctr - 1 & ":" & Cells(rctr, cctr).Address).Select
    Selection.ClearContents
    Range(Cells(1, cctr - 1).Address & ":" & Cells(rctr, cctr - 1).Address).Select
    Selection.ClearContents
    Range("A1").Select

    Else
        Beep
    End If

End Sub

Sub RCount()
    rctr = 1
    Do
        rctr = rctr + 1
    Loop While (Range("A" & rctr) <> "")
End Sub
Sub CCount()
    cctr = 1
    Do
        cctr = cctr + 1
    **Loop While (Cells("A" & cctr).Address <> "")** 
End Sub

我遇到运行时错误1004应用程序定义或对象定义此循环错误。有人请帮助我。我不知道该怎么办。我在VBA编程中的新手

1 个答案:

答案 0 :(得分:1)

我的CCount程序出现了不同的错误,但它应该是Range,而不是Cells

Sub CCount()
    cctr = 1
    Do
        cctr = cctr + 1
    Loop While (Range("A" & cctr).Address <> "")
End Sub

这会生成您说明的错误,因为它将循环到列中的最后一个单元格并尝试移动到下一个单元格是一个错误 - 没有下一个单元格。范围始终为Address,因此您的条件&lt;&gt; “”总是得到满足。

你的RCount程序有同样的问题。

如果您想要工作表中的总行数,那么它只是Rows.Count