Excel VBA質問箱 IV

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

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


1720 / 13645 ツリー ←次へ | 前へ→

【72371】select case で 基準値以上の最小値を表示させたい リリィ 12/7/25(水) 16:18 質問[未読]
【72372】Re:select case で 基準値以上の最小値を... ドカ 12/7/25(水) 17:53 発言[未読]
【72378】Re:select case で 基準値以上の最小値を... ドカ 12/7/26(木) 7:56 回答[未読]
【72379】Re:select case で 基準値以上の最小値を... ドカ 12/7/26(木) 8:36 回答[未読]
【72380】Re:select case で 基準値以上の最小値を... リリィ 12/7/26(木) 9:25 お礼[未読]

【72371】select case で 基準値以上の最小値を表...
質問  リリィ  - 12/7/25(水) 16:18 -

引用なし
パスワード
   以下のようなマクロを組みました。
現状で、無効(予定価格超過)"と"無効(最低制限価格未満)"
はちゃんと表示されるますが、
「最低制限価格未満」以上の最小値に
"落札"の文字を表示させたいのですが
式がわかりません。

ためしに、「一つ上のセルが空白で、一つ下のセルが"無効(最低制限価格未満)"
のとき、"落札"の文字を表示させる」設定を試してみましたが、
表示されません。

今回のコードの訂正とともに、
他にも"落札"の文字を表示させる方法がありましたら、
ご教示いただければ有難いです。

よろしくお願いいたします。

===========================
Sub Sample3()


  Dim i As Long
  For i = 17 To 116
  
  If Cells(i, 3) > 0 Then
  
    Select Case Cells(i, 3).Value
    
    Case Is > Cells(4, 2).Value
    Cells(i, 4).Value = "無効(予定価格超過)"
    
      
    Case Range("B9") To Range("B14")
    Cells(i, 4).Value = "無効(最低制限価格未満)"
    
 
    Case Cells(i - 1, 4) = "" And Cells(i + 1, 4) = "無効(最低制限価格未満)"
   
    Cells(i, 4).Value = "落札"
  
  
   End Select
  
  End If
     
  Next i

End Sub

=====================

【72372】Re:select case で 基準値以上の最小値...
発言  ドカ  - 12/7/25(水) 17:53 -

引用なし
パスワード
   ▼リリィ さん こんにちは

>    Case Cells(i - 1, 4) = "" And Cells(i + 1, 4) = "無効(最低制限価格未満)"

今、iがたとえば20について処理しているとすると、
i+1は21になりますが、Cells(21,4)はまだ処理されていないので、"無効(最低制限価格未満)"となっていることがありえず、期待の動作をしてないのではないでしょうか?

【72378】Re:select case で 基準値以上の最小値...
回答  ドカ  - 12/7/26(木) 7:56 -

引用なし
パスワード
   こういうことで良いのでしょうか?

Sub Sample3()
  Dim i As Long
  
For i = 17 To 25
 
  If Cells(i, 3) > 0 Then
 
    Select Case Cells(i, 3).Value
  
     Case Is > Cells(4, 2).Value
     Cells(i, 4).Value = "無効(予定価格超過)"
  
   
     Case Range("B9") To Range("B14")
     Cells(i, 4).Value = "無効(最低制限価格未満)"
  
   End Select
 
  End If
  
Next i
 
For i = 17 To 25
 
  If Cells(i - 1, 4) = "" And Cells(i + 1, 4) = "無効(最低制限価格未満)" Then
    Cells(i, 4).Value = "落札"
  End If
  
Next i
End Sub

【72379】Re:select case で 基準値以上の最小値...
回答  ドカ  - 12/7/26(木) 8:36 -

引用なし
パスワード
   もしかして、全てcaseで処理したかったのでしょうか?
こんな方法でも出来ましたよ。

Sub Sample5()

  Dim i As Long
  For i = 17 To 20
 
  If Cells(i, 3) > 0 Then
 
    Select Case Cells(i, 3).Value
  
    Case Is > Cells(4, 2).Value
    Cells(i, 4).Value = "無効(予定価格超過)"
  
   
    Case Range("B9") To Range("B14")
    Cells(i, 4).Value = "無効(最低制限価格未満)"
  
 
   End Select
 
   Select Case True
    Case Cells(i - 2, 4) = "" And Cells(i, 4) = "無効(最低制限価格未満)"
    Cells(i - 1, 4).Value = "落札"
   End Select
 
 
  End If
  
  Next i

End Sub

【72380】Re:select case で 基準値以上の最小値...
お礼  リリィ  - 12/7/26(木) 9:25 -

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

早速にご教示いただいてありがとうございました。

最初に指摘いただいた点は、このような式で解決できるんですね。
目からうろこでした。

if式だけでなく、case式でも示していただいて、勉強になりました。
本当にありがとうございました。

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