2016-10-06 3 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

캘리포니아가 변수가 아닌 문자열 인 경우 '캘리포니아' '로 작성되어야합니다 – 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

관련 문제