2016-10-06 5 views
-1

VBAを初めて使用しています。列Aに含まれるセルの値に基づいてダイナミックレンジを作成しようとしています。同じシート上に多くの範囲があり、私は範囲の出発点としてセルを特定することはできません。それは変化するためです。私はシート2の列Aに異なる範囲名のリストを持っています。必要に応じて異なる範囲を作成するために使用できます。私はこれを行うための最善の方法はfindを使うことだと思っていますが、もう一度、私はこれを初めて知っています。ここに私がこれまで持っていたことがあります(あまり分かりませんが、私は知っています)。どんな助けでも大歓迎です!ありがとう!セル値に基づいてダイナミックレンジを作成する

Sub NameRange() 

Dim rngselect As Range, FinalRange As Range, cell As Range 
Dim ws As Worksheet 

Set ws = Worksheets("OOE") 
Set rngselect = ws.Range("$A:Z") 

ws.Columns(i, 1).Find(California).Select 
.Name = "Cali" 

End Sub 
+0

を使用する名前が含まれていますか?つまり、どの範囲にしたいのかをどのように示していますか? – Kyle

+0

これらは、中西部のカリフォルニアのような名前です。残りの行のデータのカテゴリを示します。それはあなたの質問に答えますか? – Ashley

+0

カリフォルニアが変数ではなく文字列であれば、それは '' '' California "' – YowE3K

答えて

1

私は以前これをやったことがありますが、それは聞こえるほどシンプルではありません。名前付き範囲はワークブック全体のプロパティであるため、一意でなければなりません。 VBAは、名前の範囲を変更したり(あなたに通知することはありません)、エラーを生成しません。

と言われると、 - 必要がない範囲を選択しないでください。 - あなたが列Aに制限されているので、検索値がに注意してください列Bに

' Worksheet with names 
Dim name_ws as Worksheet 
' Assuming you're worksheet with the names is in the same workbook and named "Names" 
Set name_ws = ThisWorkbook.Worksheets("Names") 

' Find might be better but I haven't had my coffee so you'll get the double loop 
for j = 1 to name_ws.Cells.SpecialCells(xlCellTypeLastCell).Row 
    for i = 1 to ws.Cells.SpecialCells(xlCellTypeLastCell).Row 
     if ws.Cell(i, 1) = name_ws.Cells(j, 2) then _ 
     Range(ws.Cell(i,1), ws.Cell(i, 26)).Name = name_ws.Cells(j, 1) 
    next i 
next j 

である場合にはループを使用します。WSはあなたの変数であり、あなたがあなたの開始と終了のセルを指定しません質問に名前がついた範囲があったので、私はちょうど26のセルを上にしました。

ご注意:私は名前のワークシートの列Bを想定していますが、検索変数が含まれており、列Aを使用すると、列Aには何の値

+0

ありがとうJリード。次のエラーが表示されます。「コンパイルエラー:データメンバーのメソッドが見つかりません」。このコードをコピーして各範囲の名前を変更する代わりに、その名前で範囲を作成するように、各名前を含む他のワークシートにコードをポイントする方法もありますか? – Ashley

+0

こんにちはアシュリー、私はコードを編集しました。私はそれが「コンパイルエラー」に興味があるので、新しいものを追加してください。 Set ws = Worksheets( "OOE")を保持しましたか? –

+0

実際、私は最後の行まで毎回その名前を置き換えるように思っています。したがって、マクロが終了すると、指定された行だけが最後の行になります。なぜこれが起こっているのかについてのアイデアはありますか? – Ashley

関連する問題