2013-01-23 17 views
7

私のカスタムVBA関数では、単一セルの引数だけを受け入れるようにします。パスmyRange as RangeExcel/VBA:引数として単一のセルを渡す

  • と、デフォルトでは(どうやって?)左上のセルを取得:

    • パスmyCell as Cell

    か:それは何をやってのrightwayているのですか?ユーザーが複数の列と行との範囲を入力します、あなたはそれはあなたが質問に何を意味するかだ場合、関数を終了するには、次のチェックを行うことができますと仮定

+0

しばしば起こるかのようにパラメータ – bonCodigo

+0

は実際に、解決策は、質問をした後に来るとあなたが同様の機能を表示することができます..あなたは '' MyFunctionの(範囲としてByRefのmyCell)に追加することができます: 'topLeftValue = 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

はいセル(Range)がどのシートから来ているかを定義することもできます: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 

である必要があります

numColum = myCell.Columns.Count 

numRow = myCell.Rows.Count 
関連する問題