
VBA において、ユーザー定義関数を用いてセル A1 に直接
=test(B1)
のように書き込むとします。
この時に
Function test (a as double) as double
Range("B2").value = 3
Range("C1:C10") = range("A1:A10")
test = 2 * a
End Function
のようにして、A1 以外のセルに書き込みをしたいのですが、
そもそも規則として function は、当該セル以外への書き込みが禁止されているのか、
あるいは私が方法を知らないだけなのか、分かりませんでした。
教えて頂けないでしょうか。
No.3ベストアンサー
- 回答日時:
>ユーザー定義関数を用いて
>そもそも規則として function は、当該セル以外への書き込みが禁止されているのか
そもそも論から言われると、私には、禁止されているのかどうかは分かりません。
あくまでも、VBAの範囲内でという制限の中だけなら、正しいとは思いますが、Excelの関数で、戻り値を他に出すものはみたことがありません。
話を元の質問のコード自体に戻すと、それは、コードの書き方が、まったく違います。
それは、単にイベント・ドリブン型マクロというもので、
Private Sub Worksheet_Change(ByVal Target As Range)
End Sub
とWorksheet_Change イベントにすればよいと思います。
#2様の方法は、一部の人たちには知られた方法で、名前をイベント・レイズ(EventRaise)と言うかと思いますか、かなり難しく、私の環境では、Excel自体も不安定でした。
No.2
- 回答日時:
見かけ上それを実現するとすれば、ユーザー関数はグローバル変数をセットするだけにとどめ、重くならない程度に例えば毎秒一度くらい、その変数をチェックするようにして、変化があった場合のみ、処理したかった実体を実行して、変数をクリアするなども考えられます。
No.1
- 回答日時:
以下のようなことは禁止されているようです。
・スプレッドシートでのセルの挿入、削除、または書式の設定。
・別のセルの値の変更。
・ブックでのシートの移動、名前の変更、削除、または追加。
・計算方法や画面表示など、環境オプションの変更。
・ブックへの名前の追加。
・プロパティの設定およびほとんどのメソッドの実行。
https://support.microsoft.com/ja-jp/help/170787/ …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) excel2013 色付きセルの値合計 3 2023/02/28 11:48
- Excel(エクセル) エクセルVBAでセルに表示されているとおりの数値を取得したい(時間の計算結果) 1 2022/03/30 17:52
- Visual Basic(VBA) Excle VBA Findメソッドについて 3 2022/07/15 13:56
- Excel(エクセル) ユーザー関数の自動計算(excel2003) 1 2023/02/06 06:46
- Visual Basic(VBA) Excel のユーザー定義関数でソルバーが動作しない 1 2022/09/05 19:51
- Excel(エクセル) エクセルで書式設定とフィルタの組み合わせでうまく行かないのですが 4 2022/10/07 10:02
- Excel(エクセル) VBA オリジナル関数で選択セルの合計を作成したい 3 2023/03/19 19:45
- Excel(エクセル) 並べ替え、ソートの構文がわからない。 お世話になります。VBA超初心者です。 エクセルでワークシート 2 2023/06/28 21:00
- Excel(エクセル) Excleマクロ セル値の代入と文字列の結合について 3 2022/10/05 16:47
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マクロのデータ削除
-
Excel VBA で色付きのセルの値...
-
エクセルでセルをクリックする...
-
セルをクリックしたら色を変え...
-
CutCopyMode範囲の取得方法につ...
-
Excelマクロ セルを行頭に移動
-
IF関数で違う値もTRUEになる
-
Excel VBA:フォーム←→セルのア...
-
結合されたセルの移動 VBA
-
ExcelVBA コンボボックスに入力...
-
エクセルマクロで「セルのサイ...
-
(エクセルVBA)セルを左クリッ...
-
vbaで指定したセルより下の行を...
-
Excel UserForm の表示位置
-
Excelのフィルター後の一番上の...
-
マクロ1があります。 A1のセル...
-
VBA 別ブックからコピペしたい...
-
VBA シートをコピーする際に Co...
-
エクセルで複数のシートのクリ...
-
VBAマクロ実行時エラーの修正に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vbaで指定したセルより下の行を...
-
エクセルでセルをクリックする...
-
Excel VBA:フォーム←→セルのア...
-
Excelマクロ セルを行頭に移動
-
VBAでの SendKeysの変数指定方法
-
Excelでプルダウンからフィルタ...
-
【マクロ】1つのセルから結合...
-
エクセルマクロで「セルのサイ...
-
セルをクリックしたら色を変え...
-
(エクセルVBA)セルを左クリッ...
-
Excel VBA で色付きのセルの値...
-
ファイルサーバー上のexcelファ...
-
ダブルクリックでセルに色をつ...
-
エクセル:セルの色のコード番...
-
【EXCEL-VBA】特定の値の入った...
-
マクロのデータ削除
-
結合されたセルの移動 VBA
-
VBA Rangeの足し算
-
IF関数で違う値もTRUEになる
-
VBA ボタンをセルの右側に合わ...
おすすめ情報