excel - 跨多个工作表替换非连续单元格中的内容 - 错误 1004

标签 excel vba

我是 Excel VBA 新手,希望能获得一些代码方面的帮助。我们有一个包含四个相同工作表的工作簿,每个季度一个。我想做的是在命令按钮单击上运行代码,用通用的顺序编号信息替换识别名称信息( 例如:Joe Smith 变成 Male1) .有多种参与者类型,在工作表列中以及电子表格中的多行中表示。因此,男性数据位于单元格 C11、C28、C45..C215、J11、J28、J45、X11、X28、X45...AE215 的 4 个选项卡中。

我有一个工作表数组,用于标识四个季度选项卡,以及每个参与者类型的代码,用于定义将列出其姓名的单元格范围。

下面的代码给了我错误 1004 对象“_Worksheet”的方法“范围”失败 For Each MaleCare线...任何洞察我做错了什么?

Sub DelConfSAVE()
    Dim sh As Worksheet

    For Each sh In Worksheets(Array("Oct-Dec Attendance", "Jan-Mar Attendance", _
    "Apr-Jun Attendance", "Jul-Sep Attendance"))

        'Replace Male Caregiver (X)
        Dim MaleCare As Range
        Dim X As Integer

        X = 0

        For Each MaleCare In sh.Range("C11, C28, C45, C62, C79, C96, C113, C130, C147, C164, C181, C198, C215, J11, J28, J45, J62, J79, J96, J113, J130,J147, J164, J181, J198, J215, Q11, Q28, Q45, Q62, Q79, Q96, Q113, Q130,  Q147, Q164, Q181, Q198, Q215, X11, X28, X45, X62, X79, X96, X113, X130, X147, X164, X181, X198, X215, AE11, AE28, AE45, AE62, AE79, AE96, AE113, AE130, AE147, AE164, AE181, AE198, AE215")
            If MaleCare.Value <> "" Then
               X = X + 1
               MaleCare.Value = "MaleCare" & X
            End If
        Next MaleCare

        Exit For

        'Replace Female Caregiver (Y)
        Dim FemCare As Range
        Dim Y As Integer

        Y = 0

        For Each FemCare In sh.Range("D11, D28, D45, D62, D79, D96, D113, D130, D147, D164, D181, D198, D215, K11, K28, K45, K62, K79, K96, K113, K130, K147, K164, K181, K198, K215, R11, R28, R45, R62, R79, R96, R113, R130, R147, R164, R181, R198, R215, Y11, Y28, Y45, Y62, Y79, Y96, Y113, Y130, Y147, Y164, Y181, Y198, Y215,AF11, AF28, AF45, AF62, AF79, AF96, AF113, AF130, AF147, AF164, AF181, AF198, AF215")
            If FemCare.Value <> "" Then
                Y = Y + 1
                FemCare.Value = "FemCare" & Y
            End If
        Next FemCare

        Exit For

        'And additional code for Youth1 Youth2 Youth3 OtherAdult cut for posting brevity

    Next sh
End Sub

最佳答案

斯蒂芬妮,这是你正在尝试的吗?

Sub DelConfSAVE()
    Dim sh As Worksheet
    Dim X As Long, Y As Long, i As Long

    For Each sh In Worksheets(Array("Oct-Dec Attendance", "Jan-Mar Attendance", _
    "Apr-Jun Attendance", "Jul-Sep Attendance"))

        X = 0

        For i = 11 To 215 Step 17
            With sh
                '~~> Male
                If Not Len(Trim(.Range("C" & i).Value)) = 0 _
                Then .Range("C" & i).Value = "MaleCare" & X

                If Not Len(Trim(.Range("J" & i).Value)) = 0 _
                Then .Range("J" & i).Value = "MaleCare" & X

                If Not Len(Trim(.Range("Q" & i).Value)) = 0 _
                Then .Range("Q" & i).Value = "MaleCare" & X

                If Not Len(Trim(.Range("X" & i).Value)) = 0 _
                Then .Range("X" & i).Value = "MaleCare" & X

                If Not Len(Trim(.Range("AE" & i).Value)) = 0 _
                Then .Range("AE" & i).Value = "MaleCare" & X

                '~~> Female
                If Not Len(Trim(.Range("D" & i).Value)) = 0 _
                Then .Range("D" & i).Value = "FemCare" & Y

                If Not Len(Trim(.Range("K" & i).Value)) = 0 _
                Then .Range("K" & i).Value = "FemCare" & Y

                If Not Len(Trim(.Range("R" & i).Value)) = 0 _
                Then .Range("R" & i).Value = "FemCare" & Y

                If Not Len(Trim(.Range("Y" & i).Value)) = 0 _
                Then .Range("Y" & i).Value = "FemCare" & Y

                If Not Len(Trim(.Range("AF" & i).Value)) = 0 _
                Then .Range("AF" & i).Value = "FemCare" & Y

                X = X + 1: Y = Y + 1
            End With
        Next i

        'And additional code for Youth1 Youth2 Youth3 OtherAdult cut for posting brevity
    Next sh
End Sub

关于excel - 跨多个工作表替换非连续单元格中的内容 - 错误 1004,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9776591/

相关文章:

excel - 等待查询完成后再继续

Excel VBA 非英文字符支持读取文件

ms-access - 从控制的开始开始,而不是中间

excel - 是否可以使用 VBA 代码对形状进行寻址?

Excel - 查看 IP 地址是否包含在子网列表中的公式

python - Openpyxl 公式填充整列的唯一行值

excel - 构建 Do Until 循环以循环列直到空单元格

Excel Min 函数返回 0

Excel 2007 - 条件格式 - 根据单元格区域中的值设置单元格格式

vba - Excel VBA 在宏运行时突然进入设计模式