- ベストアンサー
ExcelVBAで一番大きな値を持つ変数名を返す方法
- ExcelVBAで一番大きな値を持つ変数名を返す方法について質問です。
- 具体的な例として、複数の変数の値を比較して最大値を取得し、その最大値を格納している変数名を表示する方法について知りたいです。
- If文やSelect Case文などを使用せず、できるだけ簡潔なコードで実現する方法があれば教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
関連するQ&A
- iと言う変数の値が1から10の間にないならば
「iと言う変数の値が1から10の間にないならば」、としたいのですが どのようなコードを書けばいいのでしょうか? Sub test1() Dim i As Integer i = 11 If 1 < i < 10 Then MsgBox i & "は1から10の間にはありません" End If End Sub だと、メッセージが表示されてしまいます。
- ベストアンサー
- オフィス系ソフト
- 変数の中に指定した値が何回登場するかを取得したい
変数の中に指定した値が何回登場するかを取得したいのですが どうやら、WorksheetFunction.CountIfは使えないようです。 Sub tset() Dim mystr As String Dim i As Integer mystr = "abcabc" i = WorksheetFunction.CountIf(mystr, "*a*") End Sub とすると、 コンパイルエラーが発生します。 ヘルプを見ると「セルの個数を求めるセル範囲を指定します。」と書いてあることから、変数は指定できないのだと思いますが では、変数の中に指定した値が何回登場するかを取得する場合は、どのようなコードを作成すればいいのでしょうか? 上記の例であれば、 2が返ってきてほしいです。
- ベストアンサー
- Excel(エクセル)
- SQLのmaxで求めた値を変数に代入する
ex) select max(id) from table でかえってくる値を変数に代入するにはどのようにコーディングすればよいのでしょうか? ExcelVBAを使っています。
- 締切済み
- Visual Basic
- VBA エラー
Sub 上下カット1() Dim MyR As Range, MyMax As Integer, MyMin As Integer Dim MX As Range, MN As Range With ActiveSheet MyMax = WorksheetFunction.Max(.Range("D15:P15")) MyMin = WorksheetFunction.Min(.Range("D15:P15")) For Each MyR In .Range("D15:P15") If MyR.Value = MyMax Then Set MX = MyR If MyR.Value = MyMin Then Set MN = MyR Next MX.Borders(xlDiagonalUp).LineStyle = xlContinuous MN.Borders(xlDiagonalUp).LineStyle = xlContinuous End With With ActiveSheet MyMax = WorksheetFunction.Max(.Range("D16:P16")) MyMin = WorksheetFunction.Min(.Range("D16:P16")) For Each MyR In .Range("D16:P16") If MyR.Value = MyMax Then Set MX = MyR If MyR.Value = MyMin Then Set MN = MyR Next MX.Borders(xlDiagonalUp).LineStyle = xlContinuous MN.Borders(xlDiagonalUp).LineStyle = xlContinuous End With End Sub を実行すると”オブジェクト変数またはWithブロック変数が設定されていません。”と出ます。 どうしたらいいですか?
- ベストアンサー
- Excel(エクセル)
- LIST型に格納されている値を1つずつ取り出して処理をしたい
LIST型に格納されている値を1つずつ取り出して処理を行う方法を探しています。 Dim a As List(Of Integer) 具体的には、1・2・3・4・5という数字が格納されているaという変数から格納された値を一つずつ取り出して、足し合わせていくループ処理を書きたいと思っています。15という結果が出せればOKです。 どなたかご助言いただけると助かります。
- ベストアンサー
- Microsoft ASP
- 【Excel+MySQL】select文で返ってきた値を変数に入れたい。
ExcelVBAの中に 変数A = "select max(id) from data" と記述しselect文で返ってきた値(例えば100)を変数Bに代入したいと思います。 どのようにコーディングすれば可能でしょうか? いくら調べてもわからなかったので教えてください。 よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- 〔EXCEL:VBA〕切捨ての関数は?
初歩的な質問で申しわけありません。 例えば、ある計算結果を「変数:x」に格納して、この「x」の値を切り捨てるにはどのような記述になりますでしょうか?簡単なプロシージャで教えてください。 ------------------------ Sub 切捨て計算() x = 100 / 3 〔変数:xの切捨て〕 MsgBox "変数xは:" & x End Sub ------------------------- 〔 〕内を教えてください。
- ベストアンサー
- オフィス系ソフト
- なぜiは変数の値が保持されるのに、wは保持されない
なぜiは変数の値が保持されるのに、wは保持されないのでしょうか? Sub test() Dim w As Worksheet Dim i As Long i = 1 For Each w In Worksheets i = i + 1 Next MsgBox i MsgBox w.Name End Sub -------------------------------------- を行うと、 MsgBox i は表示されるのに、 MsgBox w.Name は、 「オブジェクト変数または With ブロック変数が設定されていません。」になります。 wはオブジェクト変数だから、 For Each ステートメントを抜けると値が破棄されてしまうのでしょうか? でもvbaのヘルプの 「For Each...Next ステートメントの使い方」 を見ても 「ステートメントを抜けるとオブジェクト変数なら値が破棄されます」 と記載されていません。
- ベストアンサー
- オフィス系ソフト
- VBSの関数で複数の値を返したい
関数から2つの値を返したいと思っています。 ByRefで以下のようにすれば変数STRの内容を書き換えられると思ったのですが、エラーにはならないものの値は変わらないようです。 このような使い方はできないのでしょうか? STR = "STR" TEST(STR) Msgbox STR Sub TEST(ByRef STR) STR = "TEST" End Sub
- ベストアンサー
- その他(プログラミング・開発)
- 「戻り値」ですか?「返り値」ですか?
例えば Sub test1() MsgBox WorksheetFunction.Sum(Range("a1:a3")) End Sub でMsgBoxに表示される値の事は、「戻り値」ですか?「返り値」ですか? いまいちプログラミング用語がわからないので教えて下さい。 よろしくお願い致します。
- ベストアンサー
- Visual Basic
お礼
fujillinさん、早速のご教示をありがとうございました。 >質問の意味を取り違えていましたら、無視してください。 否、全くご回答頂いた通りの意味なのです。 実は…実際に必要性に迫られた問題では無く、ふと、思いついた疑問だったのですが… 頂いた「インデックス番号を利用する」という考え方で、疑問は終止いたしたいと思いました。感謝いたします。