2015-05-22 55 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

聽起來就像你手動粘貼值。

子TSA_Template_Creation_Macro()

LASTROW =細胞(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

+0

你,先生,是冠軍!非常感謝!!!就像我說的,我有點新手在實習,你救了我的屁股。這是世界上最好的網站! – chris7626

相關問題