人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VBAで最小値をみつけるコードを書きたいので教えてください。

1列目で5個ずつの固まりの中で最小値をみつけ、
2列目の先頭(5個の固まりの先頭)にその最小値を使った数式を入れる、
次の5行に行き、同じ事をする、という風に繰り返すコードを書きたいのですが、
うまくいきません。

For i = 0 To 5
Dim val
Dim min
val = A.Cells(i * 5 + 1, 1).Resize(, 4).Value
'A1セルから5個下までの内容を要素とする配列
min = WorksheetFunction.min(val)
’その中で一番小さい値をminとする
A.Cells(i * 5 + 1, 2).Formula = "= 100-G" & CLng(min)
’2列目の1番上に、"=100-min"という数式を入れる
Erase val ’配列をリセット
min = Nothing '最小値をリセット
Next i 'その次の5セルの固まりへ…(6-10行)

最初、なんとかデバックなしで完了したのですが、数式が思惑通りでなかったので、
配列や変数が蓄積されていくためかと思い、リセットするコードを追加しました。
今度はmin = Nothingがデバックに引っ掛かります。

どうすればうまく行くか教えてください。


●質問者: 匿名質問者
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● 匿名回答1号
ベストアンサー

Nothing するときは Setしないとダメです。

Set min = Nothing


匿名質問者さんのコメント
ありがとうございます!デバックはでなくなりましたv ただ、やはり、2列目に入る最小値を使用した数式に見当違いのものが入るのです…

匿名回答1号さんのコメント
For i = 0 To 5 min = WorksheetFunction.min(Range(Cells(i * 5 + 1, 1), Cells(i * 5 + 4, 1))) 'その中で一番小さい値をminとする Cells(i * 5 + 1, 2).Formula = "= 100-G" & CLng(min) Next i 'その次の5セルの固まりへ…(6-10行) これでよし

匿名質問者さんのコメント
ありがとうございます。配列でなくてもよかったんですね! これにします。 さらに、私のミスで、数式がに"G"という余計なものがついてて、 ずっと見当違いの数式が入っていましたが、 そこを取り除いて解決しました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ