2013-12-18 3 views
1

모든 포럼 게시물에서도이 문제를 해결할 수 없습니다. "Locked"라는 단어가 열 중 하나에 나타나면 테이블 (Table1)의 전체 행을 잠그기 만하면됩니다.VBA를 사용하여 열의 단어를 기반으로 전체 행을 잠급니다.

Sub Accounts_Row_Fixed() 
' 
' Accounts_Row_Fixed Macro 
' 

Dim rng As Range 
Set rng = Sheet2.Range("Table1[Accounts Row Fixed]") 
ActiveSheet.Unprotect "JP" 
rng.Select 
ActiveCell.FormulaR1C1 = "=IF([@Claim]=""Settled"",""Locked"","""")" 

Dim cel As Range, drng As Range 
Set drng = Range("Table1[Accounts Row Fixed]") 

For Each cel In drng 

    If cel.Value = Settled Then 

     cel.EntireRow.Locked = True 

    End If 

Next cel 

Range("C6").Select 
ActiveSheet.Protect "JP" 

End Sub 

코드의 첫 번째 부분은 열에 단어를 가져 오지만 발생하지 않는 부분은 작동합니다. 어떤 아이디어? 선 색상을 변경하면 보너스가됩니다 !!

답변

1

변경 If cel.Value = Settled Then 당신이 " 다음이 변수처럼 취급됩니다 포함하지 않는 경우

If cel.Value = "Settled" Then합니다.

: 항상 Option Explicit을 사용하십시오. 변수를 선언하도록 강요하고 그러한 오류를 찾아 낼 수 있습니다.

+0

사과 Siddharth, 내 실수. 그것은 완벽하게 작동합니다. 위의 코드가 실제로 "잠김"이라는 단어를 설정하면 내 오류가 "정착 됨"이라는 단어를 사용하고있었습니다. 단어를 바꿔 잘 작동합니다. 감사합니다 – JimQ

0

루프가 종료 되었습니까? 행을 잠근 후에이 행을 추가합니다 (Exit For). 그런 식으로 당신이 당신이있는 세포를 발견하자마자 루프에서 빠져 나옵니다.

다음은 전체 행의 배경색을 변경하는 방법입니다 (cel.EntireRow.Interior.Color = vbRed).

+0

세, 위의 내 코멘트를 참조하십시오. 내가 쓰던 단어로 실수를했다. 이제 색상 코드를 추가했는데 너무 화려하게 작동합니다. 감사합니다 – JimQ

+0

다행 당신이 그것을 알아 냈어! 나는 'Exit For'를 추가하기 만했다. 찾은이 : http://msdn.microsoft.com/en-us/library/38cb0hb2%28v=vs.90%29.aspx. 상수는 VBA에서 동일해야합니다. – Seth

+0

세스, 변경 사항을 적용하고 링크도 감사합니다. – JimQ

관련 문제