短い話ですが、私は自分のカスタム関数が関数の一部として数式項目(それを引き起こしたもの!)を補うようにしようとしています。ユーザーは公式にそれを追加していない場合は基本的にそのextraBit
は、ユーザーフォームのListBoxで定義されExcel:それ自体を修正するカスタム関数?
Private Function heythere(blah As String)
extraBit = "title"
ActiveCell.Formula = Replace(ActiveCell.Formula, ")", "," & """" & extraBit & """" & ")")
End Function
:ここでは、蒸留例です。多くのオプションがあり、エントリの最初の引数に基づいてListBoxに動的に読み込まれます。説明するのはちょっと難しいですが、extraBit
が数式で提供されている場合は、ユーザーフォームが表示されず、結果が直接表示されることを意味します。だから私は、extraBit
が定義された後でエントリを "修理"したいと思う。基本的に、上記の例では=heythere(a1)
は=heythere(a1,"title")
になります。
これは可能ですか?私はエントリを上書きするために別のプライベートサブを作成しようとしましたが、無駄です。任意の提案を事前に感謝...
編集:
Private Function heythere2(blah As String, Optional extraBit As String)
If extraBit = "" Then
extraBit = "title"
ActiveCell.Formula = Replace(ActiveCell.Formula, ")", "," & """" & extraBit & """" & ")")
End If
End Function
私はユースケースを理解していません。ちょうどheythereのオプションの2番目のパラメータを持たないのはなぜですか? – Comintern
申し訳ありませんが、私は2番目のパラメータを削除しました...それを元に戻して、それがどのように働くかを少し詳しく説明してください... – David
何か:もしあなたの数式を文字列として保存してください。そして、あなたの 'extraBit'でその文字列を更新する方法は何でも使用してください。次に、 'Cells(1,1).Formula = myString'を実行できますか?あなたの例では、それは動作していますか?それともエラーが出ていますか? – BruceWayne