2016-04-04 32 views
1

VBAのnoobのビットので、私のコードであまりにもくすまないでください。私は、常に変化するデータの行を持つ文書を持っています。残りのマクロを完成させる前に、前の項目をクリアする小さな関数を書いています。私の目標は、列Hのすべてのエントリをクリアすることです。私は列全体をクリアしたくない、ちょうど6行以下をクリアしたい。これは正常に動作します:Excel VBA - データの相対的な範囲を見つける

Range("H6", Range("H1048576").End(xlUp).Offset(1, 0)).Select 
Selection.ClearContents 

は、私はその後、私はまた、終わったときに、私は式の上に値を貼り付ける列Aに同じ行のデータを持つ行ごとH6に配置された私の式を入力します。私はこれを次のようにします:

If Range("A7").Value <> "" Then 
     Range("H6").Select 
     Selection.AutoFill Destination:=Range("H6:H" & Range("A" & Rows.Count).End(xlUp).Row) 
     Range("H6", Range("H1048576").End(xlUp)).Select 
     Selection.Copy 
     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
    End If 

上記はすべて正常です。しかし、私の問題は、絶対参照によってブレークする正面に向かって列を挿入する場合です。

Dim MyRng As Range 
Set MyRng = Range("5:5").Find("Column Title", LookIn:=xlValues, LookAt:=xlWhole) 

しかし、その後、私はMyRng値で自分のコードの残りの部分を行う方法について途方に暮れてよ:ここでは、サイトの周りに検索することは、次のように私は5行目で私のタイトルの値を見つけることができることを私に示しました。 。私はシートの一番下に行き、データ範囲を見つけるために最後の値まで飛び跳ねる私の背後の方法を推測しています。

これで、行5のタイトルの列が見つかると、データの下にあるすべてのセルに範囲を設定するにはどうすればよいですか?

ありがとうございました!このような

+0

あなたが見つけることしたくないの/範囲を設定します。列番号を見つけて、 'range'の代わりに' cells'を使います。 – findwindow

答えて

1

何か:

Dim MyRng As Range 
Dim lastRow As Long 

With ActiveSheet 

    lastRow = .Cells(.Rows.count, "A").End(xlUp).Row 
    Set MyRng = .Range("5:5").Find("Column Title", LookIn:=xlValues, LookAt:=xlWhole) 
    c = MyRng.Column 
    Debug.Print c 

    If .Range("A7").Value <> "" Then 
     .Range("H6").Select 
     Selection.AutoFill Destination:=.Range(.Cells(6, c), .Cells(lastRow, c)) 

     .Range("H6", .Range("H1048576").End(xlUp)).Select 
     Selection.Copy 
     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
    End If 

End With 
+0

ありがとうございます。これは作業を開始できるように見えますが、MyRngに関連して取得したいColumn Hの参照はまだあります。私は私がオートフィルをすることができると思うが、コピー貼り付けの値の部分は、私は相対的な参照のみを行う方法をよく分かりません。 –

+0

Sigh。あなたが努力を示してくれたので私はあなたを支持したが、明らかにあなたは私の答えを研究するのに気にしなかった:/ – findwindow

+0

なぜそれについて納得いかない?あなたは私の問題の半分を解決しました、私は私自身でそれを解決しようとしている間、私は残りの半分に指導を求めました。私はそれ以来、それの残りの部分を解決し、それは絶対に参照することなく動作するようにしていますが、まったく新しいメンバーに対応するたわごとの方法、ない? 私のためのポイントは完全な答え(または少なくともそこに向かう方向)ではなく、半分の答えですか?他の誰かが私の質問を見つけて、あなたが何をしているのか、彼らはやっていません。 –