12

カスタムVBA関数が単一セルの引数のみを受け入れるようにしたい。それを行う正しい方法は何ですか:

  • パスmyCell as Cell

また:

  • myRange as Rangeデフォルトで左上のセルを渡して(どのように?)取得しますか?
4

5 に答える 5

22

複数のセルを選択すると、関数は終了します。

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
于 2013-01-23T12:51:39.690 に答える
10

ユーザーが複数の列と行を持つ範囲を入力すると仮定すると、次のチェックを実行して、質問で意図したとおりに関数を終了できます...

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
于 2013-01-23T12:28:53.870 に答える
4
topLeftValue = myRange.Cells(1, 1).Value
于 2013-01-23T12:36:37.990 に答える
1

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
于 2018-10-24T18:51:44.267 に答える
0
numRow = myCell.Columns.Count 

numCol = myCell.Rows.Count 

する必要があります

numColum = myCell.Columns.Count 

numRow = myCell.Rows.Count  
于 2015-03-12T09:11:47.677 に答える