Excel VBA質問箱 IV

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

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


8859 / 13646 ツリー ←次へ | 前へ→

【30679】10以上の検索 V(ビクトリー) 05/11/2(水) 18:07 質問[未読]
【30680】Re:10以上の検索 OBO 05/11/2(水) 18:23 発言[未読]
【30682】Re:10以上の検索 Kein 05/11/2(水) 20:25 回答[未読]
【30686】Re:10以上の検索 YN62 05/11/2(水) 21:36 回答[未読]
【30687】Re:10以上の検索 ichinose 05/11/2(水) 21:56 発言[未読]
【30688】Re:10以上の検索 V(ビクトリー) 05/11/2(水) 22:11 お礼[未読]
【30689】Re:10以上の検索 YN62 05/11/2(水) 22:18 回答[未読]

【30679】10以上の検索
質問  V(ビクトリー)  - 05/11/2(水) 18:07 -

引用なし
パスワード
   エクセルのF列のセルの中に
数字だけの時ですと、
Option Explicit

Sub 最低値検索()


Range("F2").Activate
Do Until ActiveCell.Value > 10

ActiveCell.Offset(1, 0).Activate

If ActiveCell.Value > 10 Then
MsgBox "10以上があったよ♪"
End If

Loop
End Sub

とすれば、とりあえず10以上の値
がみつかったところでとまります。
しかし"-"の値がセルにあった場合は検索が最初にあれば最初で
とまってしまいます。"-"の文字列があっても"-"を無視して
同じように検索するにはどのように書き換えたらよいのでしょうか?
どなたかおしえていただきませんか?

【30680】Re:10以上の検索
発言  OBO  - 05/11/2(水) 18:23 -

引用なし
パスワード
   質問ですが
なぜLOOPしているのですか?

【30682】Re:10以上の検索
回答  Kein  - 05/11/2(水) 20:25 -

引用なし
パスワード
   F1 に項目を入力してあれば、フィルターをかける↓

Range("F:F").AutoFilter 1, ">10"
If ActiveSheet.AutoFilter.Range.SpecialCells(12).Count > 1 Then
  MsgBox "10 を超える値がありました", 64
Else
  MsgBox "10 を超える値はありません", 48
End If
ActiveSheet.AutoFilterMode = False

なければ作業列(仮に AF列)に、数式を入れて判定する↓

With Range("F2", Range("F65536").End(xlUp)).Offset(, 26)
  .Formula = "=IF($F2>10,1,"""")"
  If IsError(Application.Match(1, .Cells, 0)) Then
   MsgBox "10 を超える値はありません", 48
  Else
   MsgBox "10 を超える値がありました", 64
  End If
  .ClearContents
End With

【30686】Re:10以上の検索
回答  YN62  - 05/11/2(水) 21:36 -

引用なし
パスワード
   ▼V(ビクトリー) さん:
今晩は、セルの移動が見えないといけないのですね。
ちょっとした工夫?を付け加えました。

>Sub 最低値検索()
>
> Range("F2").Activate
>Do Until ActiveCell.Value > 10
>
>ActiveCell.Offset(1, 0).Activate
>
>If ActiveCell.Value > 10 Then
>MsgBox "10以上があったよ♪"
>End If
>
>Loop
>End Sub

もし
If Activecell.Value="-" Then
ActiveCellOffset(1,0).activate
End If
を入れると出来ますよ。↓
これをこのまま貼り付けて試して見てください。

Sub 最低値検索()

Range("A5").Activate
Do Until ActiveCell.Value = "" '←ここは「>」では無く「""」では無いでしょうか
                 '~~~~~~~~~~~65536まで行っちゃうよ~~~~~~~~
ActiveCell.Offset(1, 0).Activate
If ActiveCell.Value = "-" Then
ActiveCell.Offset(1, 0).Activate
End If

If ActiveCell.Value > 10 Then
MsgBox "10以上があったよ♪"
End If
Loop
End Sub

【30687】Re:10以上の検索
発言  ichinose  - 05/11/2(水) 21:56 -

引用なし
パスワード
   ▼V(ビクトリー) さん、皆さん、こんばんは。


>エクセルのF列のセルの中に
>数字だけの時ですと、
>Option Explicit
>
>Sub 最低値検索()
>
>
>  Range("F2").Activate
  Do Until val(ActiveCell.Value) > 10
>
>   ActiveCell.Offset(1, 0).Activate
>
    If val(ActiveCell.Value) > 10 Then
>     MsgBox "10以上があったよ♪"
>     End If
>
>   Loop
>End Sub
>

というようにVal関数を使用すると、文字は 0と解釈されます。
尚、上記のコードは10より大きい値が見つからないと
エラーになってしまいますから、どうすればよいかは
考えてみて下さい。

【30688】Re:10以上の検索
お礼  V(ビクトリー)  - 05/11/2(水) 22:11 -

引用なし
パスワード
   みなさんご親切にご回答ありがとうございます。
みなさんの指摘を参考にやってみたいと思います。
わざわざありがとうございました♪

【30689】Re:10以上の検索
回答  YN62  - 05/11/2(水) 22:18 -

引用なし
パスワード
   ▼V(ビクトリー) さん:
このようなのは如何ですか?
横棒「−」は色々なサイズがありシートとコードの横棒が
同じで無いと10以上となってしまいますのでご注意をしてください。

Sub test()
Dim i As Integer
i = 5
Do Until ActiveSheet.Cells(i, 1) = ""

If Cells(i, 1).Value = "-" Then
i = i + 1
End If
If Cells(i, 1).Value > 10 Then
MsgBox "10以上が" & i & "列目にあったよ♪"
End If
i = i + 1
Loop
End Sub

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