2015-05-13 8 views
0
Sub abc() 
    Dim lrow As Long 
    Dim ws As Worksheet 

    Set ws = ActivsheetWorksheets("Completed") 

    Dim strFormulas(1 To 3) As Variant 

    lrow = ws.Cells(Rows.Count, 1).End(xlUp).Row 

    With ws 
     .Range("Y2:Z" & lrow).FillDown 
    End With 

    With ThisWorkbook.Sheets("Completed") 
     strFormulas(1) = "=(N2-A2)+(R2-O2)+(V2-S2)" 
     strFormulas(2) = "=IFERROR(Y2/L2,Y2)" 
     .Range("Y2:Z2").Formula = strFormulas 
    End With 
End Sub 

Sub bcd() 
    Dim lrow As Long 
    Dim ws As Worksheet 

    Set ws = Worksheets("Follow-up") 

    Dim strFormulas(1 To 3) As Variant 

    lrow = ws.Cells(Rows.Count, 1).End(xlUp).Row 

    With ws 
     .Range("Y2:Z" & lrow).FillDown 
    End With 

    With ThisWorkbook.Sheets("Follow-up") 
     strFormulas(1) = "=(N2-A2)+(R2-O2)+(V2-S2)" 
     strFormulas(2) = "=IFERROR(Y2/L2,Y2)" 
     .Range("Y2:Z2").Formula = strFormulas 
    End With 
End Sub 

Может ли вышеуказанный код быть упрощен в одном. Он работает нормально, но дело в том, что мне нужно упростить код, так как я должен его вызвать в UserForm. Заранее спасибо.Коды не могут быть выполнены VBA Excel

+0

Вы просто хотите, чтобы они были в одном суб? – PaulFrancis

+0

Paul, Не похоже, что в код внесены изменения. можете ли вы, пожалуйста, сообщить мне, какие именно изменения произошли. – user2842252

+0

Да, Paul, я хочу, чтобы это было под одним Sub. – user2842252

ответ

0

Если код просто необходимо переместить в один, вы можете просто создать разные переменные. Хотя я не вижу большого преимущества этого.

Sub oneSub() 
    Dim completeRow As Long, followRow As Long 
    Dim wsComplete As Worksheet, wsFollow As Worksheet 

    Set wsComplete = Worksheets("Completed") 
    Set wsFollow = Worksheets("Follow-up") 

    Dim strFormulas(1 To 3) As Variant 

    completeRow = wsComplete.Cells(Rows.Count, 1).End(xlUp).Row 
    followRow = wsFollow.Cells(Rows.Count, 1).End(xlUp).Row 

    wsComplete.Range("Y2:Z" & completeRow).FillDown 
    wsFollow.Range("Y2:Z" & followRow).FillDown 

    strFormulas(1) = "=(N2-A2)+(R2-O2)+(V2-S2)" 
    strFormulas(2) = "=IFERROR(Y2/L2,Y2)" 

    ThisWorkbook.Sheets("Completed").Range("Y2:Z2").Formula = strFormulas 
    ThisWorkbook.Sheets("Follow-up").Range("Y2:Z2").Formula = strFormulas 
End Sub 

IMVHO Вызов Sub ABC затем Sub BCD, такой же, как Sub oneSub. Не большая разница

+0

No Paul Это не работает для меня ... Коды не копировались в следующую ячейку большую часть времени. Спасибо вам за быстрый ответ. – user2842252

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