はじめまして。ExcelVBAで「一番大きな値を持つ変数名を返す」として質問致します。
タイトルは「…値を返す」としましたが、実は「…値を持つ変数名を返す」なのです。以下に要点を記します。
例えば…
Sub mySub()
Dim my1,my2,my3,myMax '全てInteger型です。
my1=1
my2=2
my3=3
myMax=Application.WorksheetFunction.Max(my1,my2,my3)
MsgBox=myMax
End Sub
上の記述ですと、MsgBox に渡される値は my3 に格納されている 3 となりますが、Max値である 3 の値が格納されている変数名my3 を
MsgBox に表示させるためには、どのような考え方があるでしょうか?
If や Select Case などでコツコツと条件分岐をさせて導き出すしか方法はありませんか?
コードが短くなるように何らかの関数を用いる手法があれば嬉しいのですが…ご教示の程、よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
ユーザにとって「変数名」は意味を持たないはずなので、コードで変数名を取得するようなことは、しないと思いますが…
同種のデータを大量に扱う場合、通常は、配列に入れておいて、変数名の
代わりにインデックス番号を扱うと思います。
>If や Select Case などでコツコツと条件分岐をさせて導き出すしか方法はありませんか?
前出の配列という概念が、ご質問の回答ではないかと思いますが。
例えばaという配列に数値が入っていて、その最大値とインデックスを取るなら
For i = LBound(a) To UBound(a)
If a(i) > aMax Then aMax = a(i): aIndex = i
Next i
MsgBox (aIndex & " , " & aMax)
みたいな感じ。
どうしても、同質の変数名ではなく、個別の名称にしたければ(実態は変わってしまいますが)、連想配列で変数名(もどき)を代入しておくという方法もあるけど、その名前は計算上まったく必要ないはずなので、わざわざやることもないですね。
質問の意味を取り違えていましたら、無視してください。
fujillinさん、早速のご教示をありがとうございました。
>質問の意味を取り違えていましたら、無視してください。
否、全くご回答頂いた通りの意味なのです。
実は…実際に必要性に迫られた問題では無く、ふと、思いついた疑問だったのですが…
頂いた「インデックス番号を利用する」という考え方で、疑問は終止いたしたいと思いました。感謝いたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルで同じ数字同士を自動で線で結ぶVBAを教えてください 6 2022/04/26 23:13
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- 英語 所有格+単数名詞で必ず「唯一の」という意味が含まれるのかについて 2 2023/04/18 14:26
- Excel(エクセル) エクセルの数式で教えてください。 1 2022/10/25 09:26
- PHP PHP ページング データベース 1 2022/06/16 10:30
- 英語 a lot of my homeworkはありか? 5 2022/10/13 16:50
- 英語 「this is the/my first time~」の文法上の制約について 1 2023/04/06 09:48
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Perl perlの構文でカンマの意味が分からない 2 2022/10/30 01:53
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelのセルの色指定をVBAから...
-
ExcelのINDEXとMATCH関数でスピ...
-
【VBA】配列に数式を仕込む方法...
-
VBA listBoxについて
-
VBAでの100万行以上のデータの...
-
SUMPRODUCT関数を用いた最小値
-
エクセル 条件を指定した標準...
-
[エクセル]連続する指定範囲か...
-
配列の受け渡しについて
-
[VBA]改行入りのセルの値を配列...
-
読み込みで一行おきに配列に格納
-
ノーツのデータをVBScriptで取...
-
DataSetから、DataTableを取得...
-
Excel オートフィルタのリスト...
-
VBS 複数ファイル複数行を配列...
-
エクセルVBAで変数をセルに一行...
-
array関数で格納した配列の型を...
-
vba:一覧表から自動転記をしたい
-
.NET - 配列変数を省略可能の引...
-
スプレットシートのGetTextにつ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelのセルの色指定をVBAから...
-
ExcelのINDEXとMATCH関数でスピ...
-
array関数で格納した配列の型を...
-
[エクセル]連続する指定範囲か...
-
表にフィルターをかけ、絞った...
-
VBA listBoxについて
-
エクセルで、絶対値の平均を算...
-
配列がとびとびである場合の書き方
-
DataSetから、DataTableを取得...
-
[VBA]改行入りのセルの値を配列...
-
VBA 配列に格納した値の平均の...
-
配列のSession格納、及び取得方...
-
【VBA】ユーザーフォーム リス...
-
エクセルでエラーを無視して一...
-
SUMPRODUCT関数を用いた最小値
-
Excel VBA 配列の分割について
-
Excelのオートフィルタで抽出し...
-
VB6.0 ファイルの一括読込み
-
Excel オートフィルタのリスト...
-
VBAで指定期間の範囲を抽出し、...
おすすめ情報