2015-06-18 5 views
0

Я хотел бы использовать код ниже в нескольких областях в пределах моего excel VBA, однако для изменения его значений в коде должны быть внесены некоторые изменения, чтобы сделать его конкретным для этой области. Например,Call excel Модуль VBA с переменным изменением

Dim XXXcountcurrent As Long 

' Delete the items containing the word XXX in Material current 
    Sheets("Materials Current").Select 
    Range("A2:C" & Cells(Rows.count, "A").End(xlUp).Row).SpecialCells(xlCellTypeVisible).Select 
    If XXXcountcurrent <> 0 Then 
    Selection.Rows.Delete 
    End If 
    ActiveSheet.Range("$A:$C").AutoFilter Field:=2 

'Paste XXX total in workings sheet 
    Sheets("Workings").Select 
    rcell.Offset(?) = XXXcountcurrent 

Код выше представляет собой небольшой разрез, сделанный из VBA. Указанный XXX относится к различным сценариям, например, он может относиться к "knife", "handle" и т. Д. Кроме того, я хотел бы, чтобы ячейка смещения была скорректирована в коде, обозначенном? (Я слишком скромный, это тоже должно быть переменным).

Я не хочу повторять код, когда есть только небольшие изменения. Может ли кто-нибудь помочь?

+0

Убедитесь, что вы вводите 4 пробела перед каждой строкой кода, это будет содержать отформатированное и легко читаемое здесь. Самый простой способ сделать это - выделить весь код в VBE, а затем нажать TAB, а затем скопировать и вставить прямо здесь. –

ответ

0

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

Вот пример того, как сделать это в очень простом формате:

Sub TestCallingSubs() 
    CallingSubs "Hello" 
    CallingSubs "World" 
    CallingSubs "!!!!!" 
End Sub 

Sub CallingSubs(MyString As String) 
    MsgBox MyString 
End Sub 
0

Поместить свой код в подпрограмме, таких как:

Sub DoSomething(ByVal xxx As String, ByVal myOffset As Long) 
    'here's your code 
End Sub 

Затем вызовите его таким образом:

Sub Whatever 
    DoSomething "John Doe", 0 
End Sub 
+0

В случае, если я хочу отфильтровать XXX (содержит), как я буду заниматься кодированием. В настоящее время у меня есть «rngcurrent.AutoFilter Field: = FilterField, Criteria1: = Array (_ = * xxx *), Operator: = xlFilterValues». Спасибо –

+0

Извините, я не понимаю вас ... –

+0

Благодарим за быстрый ответ, –

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