更改后自动更新vba连接列

时间:2016-07-13 19:18:53

标签: excel-vba vba excel

我使用VBA将4个不同的基于公式的列连接成一个(以便在连接时能够更改格式)。连接的VBA代码可以工作,但是当4个单独的列更新并提取新信息时,连接的列不会发生变化。

我的连接代码是这个,它位于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

如果您知道如何添加功能以帮助我解决问题,我将非常感激!

1 个答案:

答案 0 :(得分: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)。