programing

Excel/VBA: 단일 셀을 인수로 전달

muds 2023. 10. 18. 23:07
반응형

Excel/VBA: 단일 셀을 인수로 전달

사용자 지정 VBA 함수에서 단일 셀 인수만 허용하도록 하고 싶습니다.올바른 방법은 무엇입니까?

  • 통과하다myCell as Cell

또는:

  • 통과하다myRange as Range기본적으로 왼쪽 상단 셀을 얻습니까?

셀을 두 개 이상 선택하면 기능이 종료됩니다.

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

사용자가 여러 열과 행으로 구성된 범위를 입력한다고 가정할 때, 질문에서 의미한 것이라면 다음 검사를 수행하여 함수를 종료할 수 있습니다.

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
topLeftValue = myRange.Cells(1, 1).Value

1셀 이상의 범위를 통과하더라도 진행하기 위해 아래의 범위 확인을 자체 기능/서브 내에 추가하였습니다.이렇게 하면 여러 셀이 있는 범위가 함수로 전달되는 경우 맨 위 왼쪽에 있는 셀을 강제로 선택할 수 있습니다.이것은 현재 기능을 대신 종료하는 다른 답변의 대체 경로입니다.

Sub DoSomethingWithCells(StartCell As Range)
'Ensure that only the first cell of range is selected

If (StartCell.Cells.Count > 1) Then
    'Select only the first cell
    StartCell = StartCell.Cells(1, 1).Address
End If

'Do whatever you need to do here

End Sub
numRow = myCell.Columns.Count 

numCol = myCell.Rows.Count 

그래야 한다

numColum = myCell.Columns.Count 

numRow = myCell.Rows.Count  

언급URL : https://stackoverflow.com/questions/14479627/excel-vba-passing-a-single-cell-as-argument

반응형