プロが教える店舗&オフィスのセキュリティ対策術

セルの折り返し表示と縮小して表示の組み合わせを行いたく、ユーザー関数を作成しました。
関数の概要は
「表示する文字列の文字数がある値以下なら、折り返し表示、
 ある値以上なら、折り返し表示をしつつ、フォントサイズを小さくする」
というものです。
ですが、Functionでフォントサイズを変更しても、反映されません。
同じことをマクロ(Sub)で行うと処理されます。
今回はユーザー関数を利用したいのですが、どうすればよいのでしょうか

よろしくお願い致します。

以下のサンプルは今回目的の関数とは異なりますが、これが、上手くいきません。
<サンプル1:上手くいかない>
以下の関数を実行しても、A11セルのフォントサイズは64にならない
Function fun(c As Range)
Range("A11").Font.Size = 64
fun = c.Value
End Function

<サンプル2:同じことをSubを利用すると、上手くいく>
以下のマクロを実行すると、A10セルのフォントサイズは64になる
Sub sub_1()
Range("A10").Font.Size = 64
End Sub

質問者からの補足コメント

  • つらい・・・

    関数 fun をマクロ経由で呼び出すと、上手くいきます。
    セルに直接 =fun(C1)  
    と記述し、C1の内容を書き換えてfunを実行させると上手くいかないということです。

      補足日時:2018/06/07 16:31

A 回答 (2件)

こんにちは



ユーザ定義関数は、他の組み込み関数と同じように、『値』(場合によっては配列)を返すものです。

VBAを用いてはいますが、「ユーザ定義関数」としての制限がありますので、他のセルの値の変更(参照は可能)や当該セルのプロパティ等の環境を変えることはできないようです。
(通常のVBAのFunctionからの処理であれば、可能なはずです。)

https://support.microsoft.com/ja-jp/help/170787/ …
    • good
    • 0
この回答へのお礼

ありがとうございました。別の方法を考えます。

お礼日時:2018/06/07 17:38

エクセルの仕様です。


ワークシート関数でシートの状態を変更することはできません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!