2016-07-13 13 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 Explicit'を追加してみてください。これはあなたの問題を直接解決することはありませんが、状況が間違っている可能性がある場所を示します。私はあなたのコードを試してみましたが、それはまったく動作しませんでした。すべての変数は型のバリアントになります。 –

答えて

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(2007)バージョンではフォーマットが機能しません。

+0

ありがとう、それは動作し、数式に変わります。 VBAを使用している私の主張は、私が1つに連結しているそれぞれの列ごとに異なるフォーマットを持つことができるということでした。もともと私はこれのような普通の式でそれをしましたが、必要な結果を得るためにはVBAで行う必要があることが分かりました。たとえば、セル全体ではなく、名前列だけを太字にしたいとします。あなたがそれを修正する方法を知っているなら、それは極端な助けになるでしょう!ありがとう。 –

関連する問題