Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


12900 / 13644 ツリー ←次へ | 前へ→

【8061】6つの数値から最大のものを探すには アホレンジャー 03/9/29(月) 9:22 質問
【8063】Re:6つの数値から最大のものを探すには INA 03/9/29(月) 10:05 回答
【8065】Re:6つの数値から最大のものを探すには Asaki 03/9/29(月) 10:08 発言
【8066】Re:6つの数値から最大のものを探すには INA 03/9/29(月) 10:13 回答
【8067】Re:6つの数値から最大のものを探すには Asaki 03/9/29(月) 11:16 回答
【8068】Re:6つの数値から最大のものを探すには INA 03/9/29(月) 11:24 回答
【8064】Re:6つの数値から最大のものを探すには Asaki 03/9/29(月) 10:07 回答
【8080】Re:6つの数値から最大のものを探すには アホレンジャー 03/9/29(月) 17:20 お礼

【8061】6つの数値から最大のものを探すには
質問  アホレンジャー  - 03/9/29(月) 9:22 -

引用なし
パスワード
   6つの変数に符号なしの数値を代入します。
この6つの変数の中から一番大きい数値を取り出したいのですが、なにか良い方法はありませんでしょうか?。
よろしくお願い致します。

【8063】Re:6つの数値から最大のものを探すには
回答  INA  - 03/9/29(月) 10:05 -

引用なし
パスワード
   MAX関数を使ってはいかがでしょうか?

Sub sample()
  A = 1
  B = 2
  C = 3
  D = 4
  E = 5
  F = 6
  MsgBox Application.WorksheetFunction.Max(A, B, C, D, E, F)
End Sub

【8064】Re:6つの数値から最大のものを探すには
回答  Asaki  - 03/9/29(月) 10:07 -

引用なし
パスワード
   こんにちは。

ワークシート関数の Max をお使いになっては如何でしょうか?

例えば、こんな感じになるでしょうか。
Sub getMax()
  
  Dim a As Long
  Dim b As Long
  Dim c As Long
  Dim d As Long
  Dim e As Long
  Dim f As Long

  a = 1
  b = 8
  c = 2
  d = 9
  e = 2
  f = 5

  MsgBox Application.Max(a, b, c, d, e, f)

End Sub

【8065】Re:6つの数値から最大のものを探すには
発言  Asaki  - 03/9/29(月) 10:08 -

引用なし
パスワード
   ▼INA さん:

かぶりました。m(_ _)m

【8066】Re:6つの数値から最大のものを探すには
回答  INA  - 03/9/29(月) 10:13 -

引用なし
パスワード
   ▼Asaki さん:
>かぶりました。m(_ _)m

そんなことないです。いつも参考にさせて頂いております。

WorksheetFunction が無くても使えるのですね!
これは、WorksheetFunction が、省略可能ということなのでしょうか?

【8067】Re:6つの数値から最大のものを探すには
回答  Asaki  - 03/9/29(月) 11:16 -

引用なし
パスワード
   ▼INA さん:

>WorksheetFunction が無くても使えるのですね!
> これは、WorksheetFunction が、省略可能ということなのでしょうか?

例えば、A1:B3 のセルに以下のようなデータがあるとして、VlookupをVBAから使用します。
  A  B
1 A あ
2 B い
3 C う

検索する値をD1セルに入力して、次の2つのSubの動作を確認してみてください。
Sub samp1()
  Dim ret     As Variant
  ret = Application.VLookup(Range("D1").Value, Range("A1:B3"), 2, 0)
  MsgBox TypeName(ret)
End Sub

Sub samp2()
  Dim ret     As Variant
  ret = Application.WorksheetFunction.VLookup(Range("D1").Value, Range("A1:B3"), 2, 0)
  MsgBox TypeName(ret)
End Sub

表内に合致するデータがないときに動作に差があります。
要するに、WorksheetFunction をわざと省略することにより、エラーがハンドリングできる
ということのようです。
VLookupだけでなく、他にもいくつか動作の違う関数があるそうです。

また、WorksheetFunction を書かないほうが、実行速度が速い、という噂も聞いたことがあります。
(ガセ、または、条件(バージョンなど)によるのかもしれません)

以上、いささか怪しいところもありますが、私が知っている限り、
VBAからワークシート関数を利用する際に、WorksheetFunction の有無で、
上記のような違いがあるようです。

#因みに、私は多くの場合、WorksheetFunction を書かないことが多いです。
(今回も、単にその習慣で略してました)

【8068】Re:6つの数値から最大のものを探すには
回答  INA  - 03/9/29(月) 11:24 -

引用なし
パスワード
   ▼Asaki さん:

丁寧なご説明有難う御座いました。
これからは、比較しながら使ってみようと思います。m(_ _)m

【8080】Re:6つの数値から最大のものを探すには
お礼  アホレンジャー  - 03/9/29(月) 17:20 -

引用なし
パスワード
   みなさん。ありがとうございました。
ワークシート関数 Max を使ってみようと思います。
こういう関数を見つけられずにいましたので、大変助かりました。
これからもよろしくお願い致します。

12900 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free