2012-11-08 2 views
2

인접 셀의 값으로 셀의 이름 상자를 채우고 싶습니다. 이 매크로는 작동합니다. 셀 매크로 이름 상자를 할당하는 Excel 매크로 루프

Sub NameBox() 
    ' populates name box w/ value from adjacent cell 
    ActiveCell.Name = ActiveCell.Offset(0, -1).Value 
    ' steps down to next cell 
    ActiveCell.Offset(1, 0).Select 
End Sub 

는 내가 키 스트로크를 할당하고 꽤 쉽게 열의 각 셀을 반복하지만 난 그것을 루프로 개선 될 수 있다고 생각합니다.

나는 이것을 시도했다.

Sub NameBoxLoop() 
    Dim cel As Range 
    For Each cel In Range("C:C").Cells 
     If cel.Value <> "" Then 
     cel.Name = cel.Offset(0, -1).Value 
     End If 
    Next cel 
End Sub 

는하지만 다음 디버그 오류를 얻을

cel.Name = 응용 프로그램 정의 또는 개체 정의 오류

루프 논리가 바로 보이는 나는 변수 CEL을 대체하는 경우 .Name을 cel.Value로 설정하면 루프가 완료됩니다.

검색에서 cel.Name 오류에 대한 답변을 제공하지 않았습니다. 이 오류를 해결하는 데 도움이됩니다.

답변

2

수식이 작동합니다. 하지만 오류 수정이 없기 때문에 환경이 최적이 아니며 이름에 제한이 있습니다.

그래서 나는 B 열에 값이 없거나 B 열에 다른 셀의 이름으로 이미 사용 된 값이 있다고 추측하고 있습니다.

두 경우 모두 루프가 중단됩니다.

어쨌든 루프이 시도하지만, 오류가 증명 코드를 고려하십시오

Sub NameBoxLoop() 
    On Error Resume Next 
    Dim cel As Range 
    For Each cel In Range("C:C").Cells 
     If cel.Value <> "" Then 
     cel.Name = cel.Offset(0, -1).Value 
     End If 
    Next cel 
end sub 

편집 : 제안으로

, 당신은 Names 목록을 사용하여 고려할 수 있습니다. 여기

ActiveWorkbook.Names.Add Name:="test", RefersTo:="=sheet1!$a$1:$c$20" 

그리고 objectmembers의 일부 : 여기

은 엑셀 - 도움의 예입니다

  • 추가
  • 항목
  • 카운트 당신은 나를 이길
+1

내 대답에 - 나는 당신의 루프가 동일한/빈 이름을 셀에 입력하십시오. –

+0

그랬습니다. 도와 주셔서 감사합니다. 나는 아직도이 물건에 대한 해킹이다. 올바른 올바른 오류 사례를보다 잘 처리 할 필요가있는 것처럼 보인다. 또한 정확한 오류가 무엇인지 파악하려고 시간을 할애 할 것입니다. 비록 2 차 답장 에서처럼 빈 이름을 셀에 할당하기 만하면 될 수 있습니다. –

+0

@PeterPerreault는 Debugger, BreakPoints 및'Debug.Print' 또는 Variable-Viewer를 사용하여 현재 상황을 파악합니다. – Jook