2013-01-23 2 views
7

사용자 지정 VBA 함수에 단일 셀 인수 만 허용하려고합니다. 그 일의 rightway 무엇인가Excel/VBA : 단일 셀을 인수로 전달

  • 패스 myCell as Cell

나 : 기본적으로

  • 패스 myRange as Range 얻을 왼쪽 상단 셀 (어떻게?)? 그건 당신이 질문에 무엇을 의미하는 경우 여러 열과 행 범위를 입력합니다 사용자를 가정
+0

당신이 자주 발생하는 경우, 솔루션은 질문 후 오는대로, 실제로 매개 변수 – bonCodigo

+0

로'MYFUNCTION (범위로하는 ByRef myCell) '에 추가 할 수 있습니다 ..뿐만 아니라 기능을 보여줄 수 myRange.Cells (1, 1) .Value' – user776686

+0

은 다음과 같은 답변의 유효성 검사입니다. – bonCodigo

답변

14

당신은 하나의 셀 이상을 선택하면 기능이 종료됩니다 :

Function AcceptOneCell(rng As Range) 

If (rng.Cells.Count > 1) Then 
    AcceptOneCell = "Only allow 1 cell" 
    Exit Function 
End If 

    ' your code here 

End Function 
+0

+ 1에게 물었습니다. –

+0

처럼이 함수를 호출 할 수 있습니다 ----> AcceptOneCell (Cells (1,1)) (작동합니까?) – BKSpurgeon

+0

예 셀 (범위)이 나오는 시트를 정의하는 것도 좋습니다 : Sheet1.Cells (1,1) 예를 들면. – InContext

7

, 당신은 ... 기능을 종료하려면 다음 검사를 수행 할 수

Function myFunction(ByRef myCell as Range) as SomeDataType_of_your_choice 
Dim numRow as Long, numCol as Long 

numRow = myCell.Columns.Count 
numCol = myCell.Rows.Count 

If numRow > 1 or numCol > 1 Then 
    MsgBox "Only one cell is accepted" 
    Exit Function  
Else 
    '-- do other stuff you want to do here 
End If 
End Function 
+0

+1은 OP가 무엇을 주는지에 대해 –

4
topLeftValue = myRange.Cells(1, 1).Value 
0
numRow = myCell.Columns.Count 

numCol = myCell.Rows.Count 

될해야 `topLeftValue =

numColum = myCell.Columns.Count 

numRow = myCell.Rows.Count