2017-04-12 8 views
0

私はVBAにはまったく新しく、私の日常業務の一部を自動化しようとしています。私が自動化したい作業の1つは、指定されたヘッダーを「検索」し、そのデータ列全体を選択する必要があります。その範囲を別のスプレッドシートに貼り付けます。行ヘッダーを検索し、そのヘッダーの下の範囲全体を選択するVBAコード

Tamcolumn = Cells.Find(what:="plan_tamaward", after:="a1", searchdirection:=xlPrevious, searchorder:=xlBycolumn, lookat:=xlPart).Column

私は全体の列を定義していたときに、コードのこの少しは役に立つことが判明しましたが、問題は、私は下の「選択」することなく、列のヘッダーを定義し、範囲を定義することはできませんです私が知っているデータは大きなノーである。

これは意味があると思います。

ありがとうございます。 。

+0

'application.worksheetfunction.match( "plan_tamarard"、ワークシート( "名前")の範囲( "A1:Z1")、偽) 'を取得し、' resize'を使用してデータの長さを設定します。 –

答えて

1

あなたはあなたのコードに次のようなアプローチを取り入れることができます...

Dim Col As Long, LastRow As Long 
Dim Rng As Range 
If Application.CountIf(Rows(1), "plan_tamaward*") > 0 Then 
    Col = Application.Match("plan_tamaward*", Rows(1), 0) 
    LastRow = Cells(Rows.Count, Col).End(xlUp).Row 
    Set Rng = Range(Cells(2, Col), Cells(LastRow, Col)) 
End If 
If Not Rng Is Nothing Then 
    MsgBox Rng.Address 
    'do whatever you want to do with this range here 
Else 
    MsgBox "The column named like plan_tamaward* was not found in Row1.", vbExclamation, "Column Not Found!" 
    Exit Sub 
End If 
+0

これは素晴らしいことです。 Application.countifからワークシート( "x")のようなものにコードを変更できる方法がいくつかありますか?countif?私は別のワークブックからマクロを実行し、このワークブックのrngを他のワークブックにコピーします。 – VBArookie

+0

Plan_tamaward *という文字列を検索するシートでCountIf内の範囲を修飾するだけで済みます。したがって、この場合、Application.CountIf(Worksheets( "X")。Rows(1)、 "plan_tamaward *")> 0の場合と同様に、Match関数のルックアップ範囲を変更する必要があります。 – sktneer

+0

固定していただきありがとうございます!今私はコピーしている範囲の値を設定する最後のステップを持っています=私が設定した範囲に これは私が持っているコードですが、私はそれを実行すると、作業シートからデータをコピーします。 wbmodel.Sheets( "Copyto")。範囲( "F4")。Resize(Rngm.Rows.Count).Value = Rngm.Value wbmodel.Sheets( "Copyto")。範囲( "E4")。 Range( "C4")。Resize(RngPO.Rows.Count).Value = RngPO.Value End Sub – VBArookie

関連する問題