初めて質問させていただきます
宜しくお願い致します
セルから呼び出したプロシージャ内からセルの塗りつぶしを
実行しても塗りつぶしが有効になりません
たとえば
A1のセルに10を入力
B1のセルに=TEST(A1) と入力
マクロのモジュール内に
Public Function TEST(tmp_No As Integer) As Integer
TEST = tmp_No * 25
'(1)ここから
If TEST = 250 Then
'Msgbox "チェック用MSG"
Cells(1, 1).Interior.ColorIndex = 38
End If
'(2)ここまで
End Function
というファンクションプロシージャがあるとします
引数で10を持って行ってるので10×25で
TESTが250になりB1には計算結果として
250と問題なく表示されています
しかし
(1)~(2)のセルの塗りつぶしは実行されません
仮にチェック用のメッセージボックスのコメント
を外すとキチンとメッセージボックスは
表示されます
また、塗りつぶしダケのマクロを作成し
Public Sub cell_paint()
Cells(1, 1).Interior.ColorIndex = 38
End Sub
実行すると、これも問題なく動作しますので
EXCELの設定ではないと判断しています
セルから呼び出したプロシージャの時
だけ、動作しないようなのですが
なぜでしょうか?
他の方法で回避可能でしょうか?
※実際には塗りつぶしの判定方法が
20個あり、条件付書式では対応出来ないので
マクロで処理を試みてます
宜しくお願い致します
No.1ベストアンサー
- 回答日時:
動かないことは確認しましたが、Functionは関数を作成するためのものなので値を返す以外の処理ができないのではないかと推測します。
対処方法としてはSubで塗りつぶし処理を記述してボタンのクリックイベントなどで実行させるか、条件付き書式を使われた方が良いと思います。塗りつぶしの判定方法が20通りあり条件付き書式を使えないとのことですが、20通りの判定を行い真偽を返すスクリプトをFunctionで作成すれば対応できるのではないでしょうか。> Functionは関数を作成するためのものなので値を返す以外の処理ができないのではないかと推測します
なるほど、ありがとうございます
他のイベントで値をなめるような処理を
実行したほうがよさそうですね
ありがとうございます
No.2
- 回答日時:
こんにちは。
>セルから呼び出したプロシージャ内からセルの塗りつぶしを実行しても塗りつぶしが有効になりません
関数プロシージャは、プロシージャから呼び出さないと、いくら、Public ステートメントをつけても、セルのプロパティは変更できません。セルを変更したり、入力したりした時に発生するイベントで作動させるしか、通常の方法では解決できません。
しかし、そのような関数プロシージャを用いるなら、イベントに直接統合してしまったほうが早いです。頻繁に出る質問です。
参考まで
http://oshiete1.goo.ne.jp/qa4475523.html
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access VBAで行ラベルが定義さ...
-
VBA プロシージャの名前の取得
-
【Excel VBA】 WorksheetやRa...
-
Accessのマクロでモジュールを...
-
callで順に実行されるプロシー...
-
エクセルVBAでUserFormを起動し...
-
VBA 「文字が入っていたら、...
-
ACCESS2007インポート時の空白...
-
ブックオープン時にテキストボ...
-
Excel VBAで「プログラム実行」...
-
DBMS_OUTPUT.PUT_LINEを実行し...
-
連番欠番アルゴリズム
-
Oracle : BLOB型フィールドへの...
-
VB2008でe.valueとはどういう意...
-
或るプロシージャの呼び出し元判定
-
DB2でのストアドプロシージャの...
-
エクセルVBAでOn Error Resume ...
-
ストアドプロシジャからストア...
-
Statement ignored というエラー
-
PL/SQLでSPOOLさせたいのですが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessのマクロでモジュールを...
-
Access VBAで行ラベルが定義さ...
-
エクセルVBAでUserFormを起動し...
-
VBA プロシージャの名前の取得
-
callで順に実行されるプロシー...
-
【Excel VBA】 WorksheetやRa...
-
或るプロシージャの呼び出し元判定
-
OutlookVBAで作成したマクロに...
-
Excel VBAで「プログラム実行」...
-
DBMS_OUTPUT.PUT_LINEを実行し...
-
excel/vba/public変数
-
ACCESS2007インポート時の空白...
-
Accessでグローバル変数を宣言...
-
ACCESS マクロをモジュールに変...
-
エクセルVBAが対応できるプログ...
-
Access2016 VBA ボタンのイベン...
-
アクセス 意図せずサブプロシー...
-
Oracle : BLOB型フィールドへの...
-
DB2でのストアドプロシージャの...
-
Accessのプロシージャ名が勝手...
おすすめ情報