Excel VBA質問箱 IV

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

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


28838 / 76738 ←次へ | 前へ→

【53190】Re:Largeについて
発言  n  - 07/12/19(水) 13:16 -

引用なし
パスワード
   Sub 確認()
  Dim LastRow As Integer
  Dim sPhere As Variant
  Dim i    As Long
  Dim x    As Variant 'String型ではErrorを受けきれない。
  Dim rNbroW(1 To 10) As Long 'String '行数なのでLongが素直かな?

  LastRow = Cells(Rows.Count, 5).End(xlUp).Row 'ActiveSheet.は不要
  'If LastRow < 5 Then Exit Sub
  sPhere = Range("X4:X" & LastRow)
  With Application
    For i = 1 To 10
      x = .Match(.Max(sPhere), sPhere, 0)
      If Not IsError(x) Then
        rNbroW(i) = x + 3
        Cells(x + 3, 24).Select
        MsgBox x + 3 & "が" & i & "番目に大きい行です"
        sPhere(x, 1) = Empty  'Range("X4:X" & LastRow)から消しちゃう?
      End If
    Next i
  End With
End Sub

Rows.CountはApplicationのRows.Countで、BookやSheetによって変わるわけではありませんから、
ActiveSheet.は不要ですね。

>Range("X4:X" & LastRow)から消しちゃう?
の?については、
Range("X4:X" & LastRow)の値を格納した配列sPhereから消します。
『消す』というか、元の値をEmptyにしちゃうわけです。
Max(sPhere)で既に使った値だから次のMax(sPhere)で邪魔になりますね?

VBAの理解にとても役立つツールとして、[ローカルウィンドウ]があります。
://excelvba.pc-users.net/fol8/8_2.html
ワンステップずつ実行しながら、変数の 値 や 型 を確認すると理解が深まりますよ。
0 hits

【53180】Largeについて あゆたろう 07/12/18(火) 18:20 質問
【53183】Re:Largeについて n 07/12/18(火) 19:14 発言
【53184】Re:Largeについて あゆたろう 07/12/18(火) 19:39 お礼
【53186】Re:Largeについて あゆたろう 07/12/19(水) 1:18 お礼
【53190】Re:Largeについて n 07/12/19(水) 13:16 発言
【53191】Re:Largeについて あゆたろう 07/12/19(水) 13:58 お礼

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