• ベストアンサー

エクセルVBAで、自作関数作れますか?

エクセルのVBAをはじめて使うのですが、たとえば既存の関数なら、 =Abs(a1) でa1のセルが絶対値になりますが、 a列すべてを自作関数で変換させる方法が知りたいです。自作関数は作れるのでしょうか? =jisaku_fun(a1)など

質問者が選んだベストアンサー

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

一つの関数で複数のセルの内容を変えるユーザー関数はありません。 一つのセルでいいならVisualBasicEditorを立ち上げて標準モジュールを挿入し Function jisaku_fun(ATAI) 処理の内容 jisaku_fun = 結果 End Function のようにすれば作れます。 あなたのPC上で常に動かしたいなら、個人用マクロブックに保存するか アドインファイル化して登録ですね。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

質問者の誤解は、既回答などでご指摘の通りですが、1セル用に作った関数を同列の他セルへ複写することで、A列のA1:A100(例えば)に同じ処理をすることが可能です。 =FN(A1)とB1に入れて、B1の式をB2,B3,・・・に複写すると B2部はA2について、B3にはA3について処理した結果が得られます。 セルを表す引数は複写で(ユーザー関数においても)順次変化してくれますから。 こういう点で、何かもやもやしてませんか。 そういうことは判っているということなら、(私の誤解だったら)すみません。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.3

自作関数では「他のセルを参照する」事ができません。 したがって、VBAで実行するしか方法はありません。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

関数から、セルの内容を変更することはできません。 手続きとして Sub jisaku_fun() End Sub として手続きから処理するようにします。 メニューからマクロや コマンドボタンに割り付けて実行するようにすればいいです。

関連するQ&A