2017-04-06 6 views
0

私は、データの範囲をコピーして貼り付け、2番目の範囲の書式設定のいくつかの側面を変更するサブを作成しようとしています。セルの値に依存するサブ内のフォントの色を変更

私は数字が奇数か偶数であれば上の色に依存したい - ここで私は、これまでに書いたものです:

sub copy_paste_format() 
Dim c As Variant 
Dim SECONDARY() 
Dim i As Integer 
Dim n As Integer 



ActiveCell.Offset(0, -5).Range("A1:E5").Select 
ActiveWorkbook.Names.Add Name:="PRIMARY", RefersToR1C1:= _ 
    "=Sheet2!R1C1:R5C5" 
Selection.Copy 
ActiveCell.Offset(0, 5).Range("A1").Select 
ActiveSheet.Paste 
ActiveCell.Range("A1:E5").Select 
Application.CutCopyMode = False 
ActiveWorkbook.Names.Add Name:="SECONDARY", RefersToR1C1:= _ 
    "=Sheet2!R1C6:R5C10" 
Selection.Font.Bold = True 
With Selection.Font 
    .Name = "Calibri" 
    .Size = 14 
End With 
n = SECONDARY.Count 

For i = 1 To n 
If Cells.Value Mod 2 = 0 Then 
Cells.Font.Color = vbRed 
Else: Cells.Font.Color = vblue 
End If 
Next i 

End Sub 

私はとのトラブルを抱えている部分は、カラーフォーマットです。現時点では、「無効な修飾子」のコンパイルエラーが発生しています。しかし、forループでSECONDARY.countを使用しても、より良い結果は得られません。

誰にも提案はありますか?

答えて

1

のようなものを使用、その名前を使用してRangeを参照するには:

Dim rng As Range 
For Each rng In Range("SECONDARY").Cells 
    If rng.Value Mod 2 = 0 Then 
     rng.Font.Color = vbRed 
    Else 
     rng.Font.Color = vbBlue 
    End If 
Next 

:あなたの範囲内の各セルをループ

n = Range("SECONDARY").Count 

を、あなたはおそらくのようなものをやったほうが良いでしょうあなたのコードの最初の部分で何をしようとしているのか分からないが、あなたがしたいことをやっているとは思わないので、how to avoid Select and Activateを読むことをお勧めします。


ああ - 私はそれが何をしたのか分かっていると思います。アクティブセルが例えばSheet1!G12であったとすると、コードはセルSheet1!B12:F16をコピーしてSheet1!G12:K16に貼り付けています。次に、セルSheet1!G12:K16のフォントを太字、Calibri、サイズ14に変更します。このコードを混ぜて使用すると、Sheet2!A1:E5Sheet2!F1:J5の2つの範囲名が作成されます。

私は、あなたが本当にあなたのコードでやろうとしていることであると推測している:あなたはあなたがに思っていたので、私はあなたが範囲名を割り当てているかどうかわからない、または:

Sub copy_paste_format() 
    Dim c As Range 
    With Worksheets("Sheet2") 
     .Range("A1:E5").Name = "PRIMARY" 
     .Range("F1:J5").Name = "SECONDARY" 
     .Range("PRIMARY").Copy .Range("SECONDARY") 
     With .Range("SECONDARY").Font 
      .Bold = True 
      .Name = "Calibri" 
      .Size = 14 
     End With 
     For Each c In .Range("SECONDARY").Cells 
      If c.Value Mod 2 = 0 Then 
       c.Font.Color = vbRed 
      Else 
       c.Font.Color = vbBlue 
      End If 
     Next 
    End With 
End Sub 

注意あなたが他の目的のためにそれらを必要としているかどうか、私はそれらをコードに残しました。

+0

ヘルプとリンクをありがとう - 役に立つ読書です –

関連する問題