2017-12-01 6 views
0

これは誰かにとって素早いものになると確信しています。私は、私が欲しいことをするいくつかのVBAコードを見つけました、私はちょうど列Aの最後の行ではなく、その時点で何を見ている列を参照するようにします。マクロ内の最後の行の値を変更してください

以下は元のコードです。

Private Sub CopyHeaders() 
Dim header As Range, headers As Range 
Set headers = Worksheets("FPS").Range("A1:BK1") ' 

For Each header In headers 
    If GetHeaderColumn(header.Value) > 0 Then 
     Range(header.Offset(1, 0), header.End(xldown)).Copy Destination:=Worksheets("TempTable").Cells(2, GetHeaderColumn(header.Value)) 
    End If 
Next 
End Sub 

これは私の試みでした。

Private Sub CopyHeaders() 
Dim header As Range, headers As Range 
Dim LastRow As Long 
Set headers = Worksheets("FPS").Range("A1:BK1") ' 

rowlast = Worksheets("FPS").Cells(Rows.Count, "A").End(xlUp).Row 

For Each header In headers 
    If GetHeaderColumn(header.Value) > 0 Then 
     With Worksheets("FPS") 
      .Range(.Cells(header.Row + 1, header.Column), .Cells(rowlast, headercolumn)).Copy Destination:=Worksheets("TempTable").Cells(2, GetHeaderColumn(header.Value)) 
     End With 
    End If 
Next 
End Sub 

Function GetHeaderColumn(header As String) As Integer 
    Dim headers As Range 
    Set headers = Worksheets("TempTable").Range("A1:Y1") 
    GetHeaderColumn = IIf(IsNumeric(Application.Match(header, headers, 0)), Application.Match(header, headers, 0), 0) 
End Function 

私は適切なアイデアを持っていると思っていますが、実装方法はわかりません。私が非常に熱心に勉強しているので、どんな助けや説明も非常に感謝しています。事前

答えて

0

おかげで、すべての変数を宣言します。

ロングを設定しないでください。

すべてのRangeオブジェクトにワークシートを割り当てます。

Private Sub CopyHeaders() 
Dim header As Range, headers As Range 
Dim rowlast As Long 
Set headers = Worksheets("FPS").Range("A1:BK1") ' 

rowlast = Worksheets("FPS").Cells(Rows.Count, "A").End(xlUp).row 

For Each header In headers 
    If GetHeaderColumn(header.Value) > 0 Then 
     With Worksheets("FPS") 
      .Range(.Cells(header.row + 1, header.Column), .Cells(rowlast, headercolumn)).Copy _ 
       Destination:=Worksheets("TempTable").Cells(2, GetHeaderColumn(header.Value)) 
     End With 
    End If 
Next 
End Sub 
+0

こんにちはスコット、迅速な対応に感謝します。しかし、私はまだランタイム行にランタイムエラー424を取得しています。私がやるべきことが他に何かありますか?私はまだ非常にVBAのために何をすべきか分からない。おかげで再び – jufg

+0

編集@jufgを参照してください –

+0

こんにちはスコット、ありがとうが、今私は実行時エラー1004の行の '宛先'行のWith関数内で取得しています。 – jufg

関連する問題