2012-03-19 3 views
2

Я новичок в Excel VBA и надеюсь получить помощь по немного кода. У нас есть книга с четырьмя идентичными рабочими листами, по одному для каждого квартала года. То, что я хотел бы сделать, это запустить код при нажатии кнопки командной строки, которая заменяет идентификационную информацию с помощью общей, последовательной пронумерованной информации (ex: Joe Smith становится Male1). Существует несколько типов участников, представленных в столбцах таблицы, а также в нескольких строках в электронной таблице. Таким образом, данные для мужчин находятся в ячейках C11, C28, C45..C215, J11, J28, J45, X11, X28, X45 ... AE215 на 4 вкладках.Замените содержимое через несмежные ячейки на нескольких листах - Ошибка 1004

У меня есть массив рабочих листов, который идентифицирует четыре ежеквартальные вкладки и код для каждого типа участника, который определяет диапазон ячеек, в которых будут указаны их имена.

Код ниже дает мне Ошибка 1004 Метод «Range» объекта «_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 

ответ

1

Стефани, это то, что вы пытаетесь?

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 
+0

Siddharth - похоже, что он отлично работает. Мне нужно будет добавить дополнительный код для остальных типов людей и дать ему тест. Спасибо вам большое за это. – Stephanie

+0

Woops - хит слишком скоро. Можете ли вы уточнить для меня, что означает «Шаг 17» в коде? – Stephanie

+0

Если вы заметили, что существует последовательность i.e, если каждая ячейка в конкретном столбце находится после 17 ячеек, например C28 - 17 ячеек после C11 и так далее. Я просто поставил их в петлю :) –

Смежные вопросы