Excel VBA質問箱 IV

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

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


13307 / 76732 ←次へ | 前へ→

【68931】Re:worksheetfunctionについて
発言  momo  - 11/4/28(木) 18:56 -

引用なし
パスワード
   ▼tomr25 さん:
2007で少し検証してみました。

65537以上の要素数の配列    → NG
65537以上のセルのValue     → NG
65537以上のRangeオブジェクト → OK

という結果でした。
コードで言うと

Sub test()
Dim Ans As Double
Dim tbl(1 To 65537, 1 To 1) As Single
Dim i As Long
Randomize
For i = 1 To UBound(tbl)
 tbl(i, 1) = Rnd * 100
Next i
On Error Resume Next
 '### 単純に配列で処理
 Ans = WorksheetFunction.Max(tbl)
 If Err.Number > 0 Then
  MsgBox "エラーです"
  Err.Clear
 Else
  MsgBox Ans
 End If
 '### セルに書きだして処理
 With Worksheets("Sheet1").Range("A1").Resize(UBound(tbl))
  .Value = tbl
  Ans = WorksheetFunction.Max(.Cells)
 End With
 If Err.Number > 0 Then
  MsgBox "エラーです"
  Err.Clear
 Else
  MsgBox Ans
 End If
On Error GoTo 0
End Sub

こんな感じ。
一旦セルに書きだしてRangeオブジェクトを範囲としてあげればOKですね。

関数自作なら、MAXは単純にループで作れると思いますし
MODEもDictionaryなんか使えば簡単に作れると思います。
場合によっては最初に変数に入れる段階で答えを作れちゃいますね?

5 hits

【68903】worksheetfunctionについて tomr25 11/4/26(火) 10:07 質問
【68904】Re:worksheetfunctionについて neptune 11/4/26(火) 12:18 発言
【68908】Re:worksheetfunctionについて tomr25 11/4/26(火) 17:01 お礼
【68911】Re:worksheetfunctionについて neptune 11/4/26(火) 17:55 回答
【68905】Re:worksheetfunctionについて UO3 11/4/26(火) 12:45 発言
【68907】Re:worksheetfunctionについて tomr25 11/4/26(火) 17:00 お礼
【68906】Re:worksheetfunctionについて SK63 11/4/26(火) 12:55 発言
【68909】Re:worksheetfunctionについて tomr25 11/4/26(火) 17:02 回答
【68910】Re:worksheetfunctionについて SK63 11/4/26(火) 17:43 発言
【68912】Re:worksheetfunctionについて tomr25 11/4/26(火) 18:08 回答
【68925】Re:worksheetfunctionについて SK63 11/4/28(木) 1:38 発言
【68927】Re:worksheetfunctionについて tomr25 11/4/28(木) 8:34 お礼
【68928】Re:worksheetfunctionについて SK63 11/4/28(木) 10:04 お礼
【68931】Re:worksheetfunctionについて momo 11/4/28(木) 18:56 発言
【69010】Re:worksheetfunctionについて tomr25 11/5/9(月) 15:47 お礼

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