2016-07-13 24 views
0

我使用VBA將4個不同的基於公式的列連接成一個(爲了能夠在仍然連接時更改格式)。串聯的VBA代碼有效,但當4個單獨的列更新並提取新信息時,連接列不會更改。更改後自動更新vba連接列

我的級聯碼是這樣的,它位於列d或4:

Sub joint1() 

ActiveSheet.Range("a2", ActiveSheet.Range("a2").End(xlDown)).Select 
Row = 2 
Col = 4 
For Each Cell In Selection 
AE = Cells(Row, Col + 15) 
Name = Cells(Row, Col + 9) 
SC = Cells(Row, Col + 16) 
PM = Cells(Row, Col + 10) 

Cells(Row, Col) = Name & Chr(10) & "(" & AE & " - " & SC & ")" & Chr(10) & PM & " - PM" 

With Cells(Row, Col) 
    .ClearFormats 
    .Characters(1, Len(Name)).Font.Bold = True 

End With 
Row = Row + 1 
Next 
End Sub 

如果你知道如何添加一個功能,幫助我的問題,我將非常感激!

+0

嘗試在模塊的開頭添加Option Option。這不會直接解決你的問題,但它會告訴你事情可能出錯的地方。我試過你的代碼,它根本不起作用,所有的變量都是類型變體,並且事情可能不會像你期望的那樣被複制。 –

回答

0

嘗試這種情況:

Option Explicit 

Sub joint1() 
Dim iRow As Long 
Dim iCol As Long 
Dim rng As Range 
Dim rngSelect As Range 
Dim Name As String 

Set rngSelect = ActiveSheet.Range("a2", ActiveSheet.Range("a2").End(xlDown)) 
iRow = 2 
iCol = 4 

For Each rng In rngSelect 
    Name = Cells(iRow, iCol + 9) 
    Cells(iRow, Col) = "=M" & iRow & Chr(10) & " & ""("" & S" & iRow & " & "" - "" & T" & iRow & " & "")"" &" & Chr(10) & "N" & iRow & " & ""-PM""" 
    With Cells(iRow, iCol) 
     .ClearFormats 
     .Characters(1, Len(Name)).Font.Bold = True 
    End With 
    iRow = iRow + 1 
Next 

End Sub 

該代碼在每個小區中創建了一個公式,而不是僅僅複製值。

這個工作也可以用excel公式來完成。格式不適用於我的版本的Excel(2007)。

+0

謝謝,這工作,並把它變成一個公式。儘管如此,我使用VBA的要點是能夠爲每個連接成一個的列創建不同的格式。我原來是用這樣的普通公式做的,但發現它需要在VBA中完成才能獲得我需要的結果。例如,我只想將名稱列加粗,而不是整個單元格。如果你知道如何解決這將是一個極大的幫助!謝謝。 –