質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

関数型プログラミング

関数型プログラミングとは、関数を用いて演算子を構築し、算出し、コンピュータプログラムを構成する枠組みです。

Q&A

解決済

2回答

10756閲覧

VBA:Excelで塗りつぶした色付きセルの個数を合計をする関数設定しても、「#NAME?」エラーが出て計算できない。

yarukkyanai

総合スコア10

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

関数型プログラミング

関数型プログラミングとは、関数を用いて演算子を構築し、算出し、コンピュータプログラムを構成する枠組みです。

0グッド

0クリップ

投稿2020/08/24 02:48

編集2020/08/24 04:19

前提・実現したいこと

Excelの一般的な関数では塗りつぶしたセルの個数や数値の合計をすることができないようなので、
VBAで関数を作成して塗りつぶしたセルの個数を計算できるようにしたいです。
しかし、「#NAME?」エラーが表示され、解決ができずにおります。

発生している問題・エラーメッセージ

A3セルに塗りつぶし色(黄色)を表示
表はテーブル化している(テーブル1)
合計値を出したいセルに、「=ColorCount(テーブル1[[#データ],[第1回]],A3)」と入力しエンターキーを押すと、

#NAME?

が表示される。

該当のソースコード

Option Explicit ---(水平線が自動入力されている) Function ColorCount(R1 As Range, C As Range) Dim r As Range Application.Volatile ColorCount = 0 For Each r In R1 If r.Interior.Color = C.Interior.Color Then ColorCount = ColorCount + 1 End If Next r End Function

イメージ説明

試したこと

1.OptionExplicitという記述をしていなかったので入力してみたが、エラー解決されませんでした。
2.マクロのセキュリティ(マクロの設定)は、「警告を表示してすべてのマクロを無効にする(D)」を選択しています。他の選択肢へ設定してみましたが、エラー解決されませんでした。
3.Excelファイルは、拡張子(xlsm)で保存しています。

補足情報(FW/ツールのバージョンなど)

Excelバージョン:Excel for MicrosoftOffice365 ProPlus(バージョン2002ビルド12527.209820988クイック実行)

以上、他に試すべきことございましたらアドバイスいただければ幸いです。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2020/08/24 03:09

引数にセル範囲(=ColorCount(A1,A3)等)を入力した場合は正常に動作しますか?
yarukkyanai

2020/08/24 03:29

ありがとうございます。 テーブルでなくセル範囲を入力してみました(=ColorCount(F10:F15,A3))が、同じ#NAME?エラーが表示されます。
guest

回答2

0

ベストアンサー

#NAME?

は、そんな関数はないよ?
ということなので、
該当のブックの標準モジュール、または個人用マクロブックの標準モジュールにちゃんと書いてあるか
確認しましょう。

例えば、マクロを記入したが、普通のエクセルブックとして保存すると、
マクロが抜け落ちて保存されますし、
最初開いたときに、「マクロを有効化しますか?」と聞かれたときにいいえを押してもそうなると思います。
その辺をチェックしてみてはいかがでしょうか?

投稿2020/08/24 03:53

mattuwan

総合スコア2136

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yarukkyanai

2020/08/24 04:25

ありがとうございます! 最初開いたときに「マクロを有効化しますか?」という表示を見落としていました! 再度開きなおし、聞かれたので有効化したところ、関数の戻り値がうまく表示されました!
guest

0

標準モジュールに Public Function として定義してあげれば、セルのシートから呼び出せると思います

投稿2020/08/24 03:30

token

総合スコア8

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yarukkyanai

2020/08/24 03:49

ありがとうございます。 Public Function ColorCount(R1 As Range, C As Range) と記載変更してみましたが、やはり#NAME?エラーが出てしまいます。 他に確認すべきことございますでしょうか?
token

2020/08/24 03:59

私の環境では、お作りのソースで下の通り正しく動作しています(EXCEL2016です) 1. セルE4からE8までの5か所とセルF4を黄色く塗る 2. セルF9に =colorcount(E4:E8,F4) と入力する 3. セルF9に "5" と表示される 念のための確認なのですが、このコードは Sheet1とかに書いても動かないので、 「挿入」-「標準モジュール」で挿入した Module1 とかに書いてあるのですよね?
yarukkyanai

2020/08/24 04:13

早速のご確認ありがとうございます。 はい、「挿入」-「標準モジュール」で挿入したModule1に書いております。 「Micorosoft Excel Objects」を右クリックし、「挿入」ー「標準モジュール」で挿入をし直したりしましたが、なぜか関数を認識してくれません。Microsoft365のExcelだからでしょうか?
token

2020/08/24 04:18

つまらないことを書いてすいません モジュールに記述しただけでは多分、EXCELは自動で認識をしてくれませんので、 一度セルに戻って "=ColorCount...(略)"以下を入力し直す or 入力状態にしてEnter とかしてあげると、関数が書き換わったことを認識してくれるようです 外してたらすいません
yarukkyanai

2020/08/24 04:28

ありがとうございます! 再度開きなおして、「マクロを有効化」したところ、うまく戻り値が表示されました! 「マクロを有効化」をきく表示を、今まで気づかなかったことが原因でした。。。 1人でしたら、焦るばかりで、一生気づかなかったかもしれません。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問