ワークシートのテーブル列から個別の結果を実行する方法があります。
メソッドの結果は、セルのデータ検証リストボックスに入ります。現在、メソッドに渡される列の数を 1 つに制限することによって、メソッドの使用を「ダミーで軽減」する必要がある 2 つのニーズがあります。私がやりたいことは、Rangeに複数の列がある場合、ユーザーに「吐く」ようにして、「ワークシート」から不正な関数呼び出しが行われたことを示すことです。 Cell」を呼び出し、IT サポートに問題を解決するよう警告します。
ワークシートを入手するのは素晴らしく、簡単な部分です。IT サポートがセルを値としてメソッドに渡すことを明示的に強制せずに、呼び出しセルへの参照を取得することのほうが多いです。
呼び出しセルを抽出する方法についてのアイデアはありますか?
最終的に、このメソッドは複数のワークシートで使用され、異なる範囲が渡されて同じロジックを実行します。
2012-09-24 10:30am CST 編集済み
これまでの私の実装は、Application.Caller
メソッドを使用していません。
Function UniqueValues(ws As Worksheet, col As String) As Variant
Dim rng As Range: Set rng = ws.Range(col)
Dim dict As New Scripting.Dictionary
If Not (rng Is Nothing) Then
Dim cell As Range, val As String
For Each cell In rng.Cells
val = CStr(cell.Value)
If Not dict.Exists(val) Then
dict.Add val, val
End If
Next cell
End If
'Return value
UniqueValues = dict.Items
End Function
このメソッドは、コード ビハインド ロジックで既に使用されています。このロジックをコピーして、Application.Volatile
作業中の Excel ワークブックのセグメントから切り離します。似ていますが、同じではありません。
これが現在のデザインです。あまり多くはありませんが、私が atm で作業しているものです。
Function DistinctValues(rng As Range)
Application.Volatile True
If rng.Columns.Count > 1 Then
Err.Raise -1542376, rng.Worksheet.name, "An invalid function call was made!"
End If
End Function