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

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

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

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

マクロ

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

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Q&A

解決済

1回答

1064閲覧

VBA全般:プロシージャと変数の整序方法

r_o_234

総合スコア15

VBA

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

マクロ

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

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

0グッド

1クリップ

投稿2020/04/16 06:40

前提・実現したいこと

VBA全般で質問なのですが、例えばあるVBAのプロシージャとプロシージャを統合させる時、複数あるDimの変数のコードの統一方法について規定やコツはありますでしょうか。
当方VBAが独学なもので、商用にもっと綺麗でスマートなマクロツールを開発したく思っております。
下記に示す通り、Dim Alpha,Dim Beta...という風にアルファベット順にコードを整序して統一すればスマートなのかなと考えております。
おわかりになればよろしくお願いします。

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

---

該当のソースコード

sub A procedure() Dim Alpha End Sub sub B procedure() Dim Beta End Sub

Sub AB procedure() Dim Alpha Dim Beta End Sub

試したこと

検索して調べたところ、プロシージャは呼び出し順に書くとの指摘を見つけました。それ以外の実際的なプロシージャ統一の際のルールがわからないので、ご教授願えませんか。

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

Excel2016

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

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

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

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

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

guest

回答1

0

ベストアンサー

これは趣味的であり個人的な問題なので、一概にこれと言った回答はありません。
業務プログラミングであれば、コーディング規約に則って行えばよいのですが、変数名の順序まで規約していることはまずないでしょう。
以下は個人的な意見なので参考程度に見てください。

個人的にはまず名前の順はありません
あえて並べるなら使用する順(コードの上から登場する順)でしょうか。
また処理ブロックごとに分けるのがわかりやすいと思います。
それでいて同じ種類はまとめるとよいです。
その場合でも、関数のはじめにまとめて宣言するか、使う直前で宣言するか、どちらかになりますが、私は前者の方がコードが見やすくなるので好んで使います。
以下サンプルになります。

VBA

1' 関数のはじめに宣言するパターン 2Sub pattern1() 3 4 ' 共通処理用変数 5 Dim c As Long 6 7 ' 処理ブロックA用変数 8 Dim a1 As Long 9 Dim a2 As Long 10 Dim objA As Object 11 12 ' 処理ブロックB用変数 13 Dim b1 As Long 14 Dim b2 As Long 15 Dim objB As Object 16 17 c = 0 18 19 ' 処理ブロックA 20 For a1 = 1 To 10 21 Set objA = CreateObject("なんか") 22 For a2 = 1 To 10 23 Debug.Print a1, a2, c 24 c = c + 1 25 Next 26 Next 27 28 ' 処理ブロックB 29 For b1 = 1 To 10 30 Set objB = CreateObject("なんか") 31 For b2 = 1 To 10 32 Debug.Print b1, b2, c 33 c = c + 1 34 Next 35 Next 36 37End Sub 38 39' 使う直前に宣言するパターン 40Sub pattern2() 41 42 ' 共通処理用変数 43 Dim c As Long 44 45 c = 0 46 47 ' 処理ブロックA 48 Dim a1 As Long 49 Dim a2 As Long 50 Dim objA As Object 51 For a1 = 1 To 10 52 Set objA = CreateObject("なんか") 53 For a2 = 1 To 10 54 Debug.Print a1, a2, c 55 c = c + 1 56 Next 57 Next 58 59 ' 処理ブロックB 60 Dim b1 As Long 61 Dim b2 As Long 62 Dim objB As Object 63 For b1 = 1 To 10 64 Set objB = CreateObject("なんか") 65 For b2 = 1 To 10 66 Debug.Print b1, b2, c 67 c = c + 1 68 Next 69 Next 70 71End Sub

投稿2020/04/16 07:16

ttyp03

総合スコア16998

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

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

r_o_234

2020/04/16 07:44

ttyp03さん 回答ありがとうございます! 特に名前の順はないとの事で納得しました。 私も関数のはじめにまとめて宣言する方式を採用します。 助かりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問