8

実行時にアドイン (double huzzah) の条件付き書式 (huzzah) を作成しようとしていますが、明らかに、一部の関数が通常のワークシートのように使用できないことがわかりました。(ワークブックではなくアドインにあるにもかかわらず、セルで呼び出すことができる VBA 関数を参照する CF を作成しようとすると、無効なプロシージャ コール エラー 5 が発生します。これについて私が見つけた最も明確な確認はhere ですが、問題が何であるかを実際に説明していません。それは難解な部分です。これで何が期待できるかについてもっと知りたいです。

ラバー ミーツ ロードの部分は次のとおりです。VBA を完全に回避し、一連のExcel 専用の組み込み関数を使用して、特定のセルに定数 (つまり、ユーザーが入力した値)、数式 (つまり、ある種の計算、論理演算などです。ほとんどの場合、=) またはリンク (つまり、別のワークシートまたは別のワークブックのセルへの参照) で始まりますか? 私は、Excel がこの決定をすぐに行えることを知っています。GoTo/Special の使用方法と速度をご覧ください。どうすればそれを手入れることができますか?

よろしくお願いします。

4

3 に答える 3

0

これがあなたが望むものかどうかはわかりませんが、少なくともその一部は、あなたが求めていることをしているようです。

http://www.ozgrid.com/VBA/special-cells.htm

そのrange.specialcells方法です。

定数のみ、または数式のみなどを含む範囲を返します。

このコードの使用例を以下に示します。

Sub CheckForConstants()
    Dim x As Range
    Set x = Selection.SpecialCells(xlCellTypeConstants, xlNumbers)
    MsgBox "address of cells that contain numbers only is " & x.Address
    Set x = Selection.SpecialCells(xlCellTypeConstants)
    MsgBox "address of cells that contain constant of any type is " & x.Address
End Sub

範囲を選択してからこのマクロを実行すると、要件を満たすセルのアドレスが返されます。

最初の x は、数値のみを含むセルを探します。2 番目の x は、定数を含むセルを探します

この場合の範囲は選択でしたが、range("a1:b5") など、必要なものに設定できます。

ワークシートに戻り、goto 特殊メソッドを使用しました。

どうやら range.special メソッドも使用しているようです。

レコード マクロ オプションを使用したところ、これが得られました。

Selection.SpecialCells(xlCellTypeConstants, 23).Select
    Range("M7").Select
    Selection.SpecialCells(xlCellTypeFormulas, 23).Select
    Range("I6:J16").Select
    Selection.SpecialCells(xlCellTypeConstants, 1).Select
    Range("L9").Select
    ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
    Sheets("CP").Select
    Application.CutCopyMode = False
    Range("I21").Select
    ActiveSheet.DrawingObjects.Select
    Application.Goto Reference:="GoToSpecialRoutine"

ワークシートの goto 特殊機能は、その機能の一部に特殊なセル メソッドを使用します。

また、他のものも使用します。コードの最後の 5 行で、ワークシートを変更し、オブジェクトに移動するように要求しました。

それは本当に彼らには行きません。それらを選択するだけです。

ワークシート CP にはオブジェクトが含まれており、最後の 3 行のコードを使用して、ワークシート上のすべてのオブジェクトを選択しました。

goto special の背後にあるコードを確認する最善の方法は、マクロを記録してから、ワークシートで goto / special 機能を使用することです。

終了したら、記録を停止し、記録したマクロを表示します。

細胞の種類によって選択する他の機能については知りませんが、私は初心者なので、非常に簡単にそこにある可能性があり、私にはわかりません.

于 2010-10-20T08:14:24.913 に答える
0

VBA を完全に避けることはできないと思いますが、単純な UDF を作成して Excel 内で使用することはできます。

例えば

Function IsFormula(Check_Cell As Range)
  IsFormula = Check_Cell.HasFormula
End Function

Function IsLink(Check_Cell As Range)

  If InStr(1, Check_Cell.Formula, "!", vbTextCompare) Then
   IsLink = Check_Cell.HasFormula
  End If
End Function

=IsFormula(A1) は、A1 に数式がある場合に TRUE を返し、それ以外の場合、A1 に「!」を含む数式がある場合に FALSE を返します。それ以外の場合は FALSE

これらを組み合わせて、文字列出力 "Formula","Link","Value" を作成できます。

于 2011-04-17T10:18:22.470 に答える