几个星期前我问了一个(similar question) 我尝试使用它来导航我的新问题的答案,但是我无法做到。基本上我想要做的就是这个:我从一个工作簿中复制数据并粘贴到模板工作簿的A列中。之后,我想根据粘贴它时单元格中的内容更改刚刚粘贴的单元格的内容。例如,一个单元格将被粘贴,它会说" ALBY Total"我想自动(使用VBA)更改单元格以说“" ALBY。”#34;我试着自己编写代码但是无法让它发挥作用。我没有得到错误,但没有任何反应。这是我的代码的一个例子(有很多阵列,所以我不会给你们所有人):
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世界相当新,所以它很可能是一个简单的解决方案。我已经摆弄它,但我不知道如何使它工作。
答案 0 :(得分:1)
这听起来像是手动粘贴值。如果是这种情况,则从包含值的模板工作簿运行时,以下内容应该起作用:
Sub TSA_Template_Creation_Macro()
lastRow = Cells(Rows.Count,1).End(xlUp).Row
对于x = 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"
结束如果
下一个x
End Sub