0

ワークシートのテーブル列から個別の結果を実行する方法があります。

メソッドの結果は、セルのデータ検証リストボックスに入ります。現在、メソッドに渡される列の数を 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
4

1 に答える 1

1

Application.Caller関数を呼び出したセルを返します。このMSDN定義を参照してください。

于 2012-09-24T16:25:06.027 に答える