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

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

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

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

VBA

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

コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

関数

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

Q&A

解決済

1回答

10168閲覧

【VBA:Controls】コンパイルエラー:SubまたはFunctionが定義されていません

ppss

総合スコア40

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

VBA

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

コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

関数

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

0グッド

0クリップ

投稿2021/07/14 00:00

編集2021/07/14 00:01

VBAにてコンパイルすると
【コンパイルエラー:SubまたはFunctionが定義されていません】
というエラーが**【Controls】**の箇所で発生しています。
対処のしかたがわからず困惑しています。
ご教示お願い致します。

やりたい内容は以下の通りです。

求めた平均値をユーザーフォームのラベルに書き込むという
プログラムをVBAで書いています。

UserForm1には複数のLabelがあり
Label1
Label2
Label3
.
.
.
のように連番でラベルが配置されています。
ラベルの番号だけを指定して平均値を書き込む(例 Call TOUKU(1) )
といった関数を以下のように作成したのですが上記エラーが発生しています。

VBA

1Public Function TOUKOU(LABEL_No As Long) As Boolean 2 3TOUKOU = False 4 5 6Dim RNG As Range '平均値を求める範囲【RNG】 7Set RNG = Worksheets("Sheet1").Range(Cells(3, 1), Cells(1000, 1)) 8 9 10Dim LABEL1 As Object '平均を記入するラベル【LABEL1】 11Set LABEL1 = Controls("Label" & LABEL_No) 12 13 14 15'平均値をユーザーフォームのラベルに書き込む 16 17Dim AVE1 As Long '平均値【AVE】 18 19 With Application.WorksheetFunction 20 AVE1 = .Average(RNG) 21 UserForm1.LABEL1.Caption = AVE1 22 End With 23 24TOUKOU = True 25 26End Function 27

イメージ説明

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

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

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

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

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

guest

回答1

0

ベストアンサー

こうですかね。

VBA

1Public Function TOUKOU(LABEL_No As Long) As Boolean 2 3TOUKOU = False 4 5 6Dim RNG As Range '平均値を求める範囲【RNG】 7Set RNG = Worksheets("Sheet1").Range(Cells(3, 1), Cells(1000, 1)) 8 9 10Dim LABEL1 As Object '平均を記入するラベル【LABEL1】 11Set LABEL1 = UserForm1.Controls("Label" & LABEL_No) 12 13 14 15'平均値をユーザーフォームのラベルに書き込む 16 17Dim AVE1 As Long '平均値【AVE】 18 19 With Application.WorksheetFunction 20 AVE1 = .Average(RNG) 21 LABEL1.Caption = AVE1 22 End With 23 24TOUKOU = True 25 26End Function

投稿2021/07/14 00:05

jinoji

総合スコア4585

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

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

ppss

2021/07/14 00:14

ご回答ありがとうございます。 実際に使用させて頂いたところうまくいきました。 素早い正確な回答ありがとうございます。 大変勉強になりました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問