ここから本文です

VBAの列挙型を変数で指定するには?

the********さん

2014/12/1200:37:45

VBAの列挙型を変数で指定するには?

VBA初心者です。

下記のように、コード内で使用する固定値の初期値を設定したく、「列挙型」というのを使っています。

/***************************/
enum taro
height = 170
weight = 60
end enum

enum jiro
height = 190
weight = 80
end enum
/***************************/

上記のように設定した初期値を参照するのに、下記のように変数を使って

参照先を変えたいのですが、うまくいきません。

/***************************/
call test (taro)

sub test (ByVal settei As Variant)
dim shincho, taiju as integer

shincho = settei.height
taiju = settei.weight
end sub
/***************************/

このような方法で列挙型を切り替えて参照するためには、どのようにすればよいでしょうか?

そもそも、「固定値の初期値を参照したい」という目的に対して、

列挙型を使うという考え方は適切なのでしょうか?

わかりにくい質問ですいません。

どなかたご存知の方、是非ご教示ください!

閲覧数:
535
回答数:
2
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

ama********さん

2014/12/1201:50:51

人間の身長と体重が初期値で固定なら列挙型でいいと思いますが、複数人いて違う値を持つならユーザー定義型にするのがいいと思います。

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

るたさん

2014/12/1716:35:22

Enum型を使用したことが無かったので、実際に動かしてみてようやく質問の意味を理解しました。

まず、Enum型は引数として使用できません。
引数として使用する場合は、中身の値を渡すようにします。
また、列挙型変数は長整数型の値となることに注意が必要です。

次に「call test (taro)」はプロシージャーの中で動作します。

以上を踏まえて、Enum型で宣言した値を切り替えて使うサンプルを示しておきます。

参考まで

Option Explicit

Enum taro
Height = 170
Weight = 60
End Enum

Enum jiro
Height = 190
Weight = 80
End Enum

'このプロシージャーを実行します
Sub sample()
Call test(taro.Height, taro.Weight)
Call test(jiro.Height, jiro.Weight)
End Sub

'共通処理のサブプロシージャーです
Sub test(shincho, taiju)
MsgBox shincho & "/" & taiju
End Sub

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる