2013-05-02 1 views
2

내가 워크 시트에 주어진 범위의 다른 모든 행을 음영 간단한 기능이 작동하기로 범위 이름을 사용하면 :VBA는 : 워크 시트 이름 및/또는 입력이

Public Function ShadeEveryOtherRow() 
Sheets("mySheet").Select 
ShadedRows = Range("myRange").Rows.Count 
' determines the number of rows to shade in the range 

' Code that loops through and shades rows here 

End Function 

나는 호출 할 수 싶습니다 이 함수는 주어진 워크 시트 이름과 범위를 입력으로 사용합니다. 아래에 표시된 함수를 작성하고 test() 하위를 사용하여 실행하려고하면 "컴파일 오류 : 형식 불일치"오류가 발생합니다. 어떤 도움을 주시면 감사하겠습니다. 감사.

Public Function ShadeEveryOtherRow(targetSheet As Worksheet, targetRange As Range) 

Dim targetSheet As Worksheet 
Dim targetRange As Range 

Sheets(targetSheet).Select 
shadeRows = Range(targetRange).Rows.Count 

'Code that shades rows here 

End Function 


Sub test() 
ShadeEveryOtherRow "mySheet", "myRange" 

End Sub 

답변

1

targetRangetargetSheet 대신 개체로 함수에 전달되는 입력 문자열이어야한다.

Public Function ShadeEveryOtherRow(targetSheet As string, targetRange As string) 

Dim targetSheet As Worksheet 
Dim targetRange As Range 

Sheets(targetSheet).Select 
shadeRows = Range(targetRange).Rows.Count 

'Code that shades rows here 

End Function 


Sub test() 
ShadeEveryOtherRow "mySheet", "myRange" 

End Sub 
+0

감사합니다. 그게 문제를 해결했습니다 –

1

Dim 변수를 두 번 사용하지 마십시오. 함수 서명에서 선언하는 것으로 충분합니다. 또한 .Select을 사용하지 마십시오. 당신이 명시 적으로하고 싶은 일을하십시오.

Public Function ShadeEveryOtherRow(targetSheet As string, targetRange As string) 

shadeRows = Sheets(targetSheet).Range(targetRange).Rows.Count 

'Code that shades rows here 

End Function 

편집 : 당신이 당신의 변수에 문자열을 사용한다 아래 처럼시길는 지적한다. 다른 옵션은 범위를 명시 적으로 전달하는 것입니다.

Public Function ShadeEveryOtherRow(targetRange As Range) 

    shadeRows = targetRange.Rows.Count 

    'Code that shades rows here 
End Function 


Sub test() 
    ShadeEveryOtherRow Sheets("mySheet").Range("myRange") 
End Sub 

기억해! 모든 코드 상단에 항상 Option Explicit을 사용하십시오.

+0

Brad에게 감사드립니다. 귀하의 제안은이 문제를 해결했으며 진정한 VBA 신인 선수로서 귀하의 추가 안내에 감사드립니다. –

+0

무의식적으로 "다른 옵션"을 문맥에서 완전히 뜯어내는 것은 왜 삽입> 테이블 테이블이 아닌지 궁금합니다. – pnuts

+0

@pnuts 그래, 테이블이 확실히 더 빠르고 쉽게 할거야. 네 말이 맞아. 그것은 훨씬 더 역동적입니다. OP의 워크 플로가 무엇인지 누가 알 수 있습니까? – Brad