2015-05-22 2 views
1

Я попросил (similar question)) несколько недель назад, и я попытался перейти к своему новому вопросу, используя его, но я не смог. В основном, что я хочу сделать, так это: у меня есть данные, которые копируются из одной и вставить в столбец A учебника шаблонов. После этого я хочу изменить содержимое тех ячеек, которые я только что вставил, в зависимости от того, что находится в ячейке, когда я их вставляю. Например, одна ячейка будет вставлена, и она будет скажем, «ALBY Total», и я хочу автоматически (используя VBA) изменить ячейку, чтобы сказать «ALBY». Я попытался сам ее закодировать, но не смог заставить ее работать. У меня нет ошибки, но ничего не происходит. Вот пример моего кода (есть тонна массивов, так что я не дам вам все из них):Использование функции массива для изменения значений ячеек на основе их текущих значений?

Sub TSA_Template_Creation_Macro() 

Workbooks("TSA Template.xlsm").Activate 

Set wb = ThisWorkbook 
Set ws = wb.Sheets(1) 

alby = Array("ALBY Total") 
anch = Array("ANCH Total") 
atlc = Array("ATLC Total") 

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

For x = 1 To lastRow 

    If stringIsInArray(ws.Cells(x, 1), alby) Then 
     ws.Cells(x, 1) = "ALBY" 
    ElseIf stringIsInArray(ws.Cells(x, 1), anch) Then 
     ws.Cells(x, 1) = "ANCH (+office)" 
    ElseIf stringIsInArray(ws.Cells(x, 1), atlc) Then 
     ws.Cells(x, 1) = "ATLC" 

End If 

Next x 

End Sub 

Function stringIsInArray(stringToBeFound As String, arr As Variant) As Boolean 
stringIsInArray = (UBound(Filter(arr, stringToBeFound)) > 0) 
End Function 

Я довольно новичок в мире VBA, поэтому вполне может быть простым решением. Я возился с ним, но я понятия не имею, как заставить его работать.

ответ

1

Звучит так, как будто вы вручную вставляете значения. Если это так должно работать при запуске из шаблона книги, содержащий значения:

Sub TSA_Template_Creation_Macro()

lastRow = Cells (Rows.Count, 1) .END (xlUp) .Row

При х = 1 Для lastRow

If InStr(1, Cells(x, 1), "ALBY") Then 
    Cells(x, 1) = "ALBY" 
ElseIf InStr(1, Cells(x, 1), "ANCH") Then 
    Cells(x, 1) = "ANCH (+office)" 
ElseIf InStr(1, Cells(x, 1), "ATLC") Then 
    Cells(x, 1) = "ATLC" 

End If

Следующая х

Конец Sub

+0

Вы, сэр, чемпион! Огромное спасибо!!! Как я уже сказал, я немного неофит, работающий на стажировке, и ты спас мою задницу. Это лучший сайт в мире! – chris7626

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