Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
条件式について教えてください
投稿日時: 17/12/07 13:14:50
投稿者: どすこい

下記の様にエクセルのF列のN行目(←その時々より文字列が入った行が変わります。)までテキスト文字が入っていて、I列にも同様にN行目までテキスト文字が入っているエクセルブックがあります。
この時、I列のセルで「/bad」を含みかつ、F列が空白(null)の場合に、
I列の「/bad」のセルを空白にしたいのですがどのようなコードを処理を書けば実現できるのか
わからずに悩んでいます。
 
--------------------------------
    F列  I列
1行目 空白  aaa/bad     ←この場合、「aaa/bad」のテキスト文字を消す
2行目 空白 空白
3行目 あああ cc/bad   
4行目 空白  AAAA
5行目 空白 12/bad      ←この場合、「aaa/bad」のテキスト文字を消す
6行目 ねね  AAAA
7行目 空白 kk/bad
 ・
 ・
 ・
--------------------------------
もしどなたかご存知でしたらおしえてください。

回答
投稿日時: 17/12/07 13:28:27
投稿者: もこな2

Select Caseで分岐処理すればできるようです。
 
Select Case True
    Case Tureになる条件
        '処理内容
    Case Tureになる条件
        '処理内容
    Case Tureになる条件
        '処理内容
    Case Else '上記のいずれにも合致しない
        '処理内容
End Select

回答
投稿日時: 17/12/07 13:35:14
投稿者: bi

Sub test()

    Dim LastRow As Long
    Dim MyRange As Range

    LastRow = Cells(Rows.Count, 9).End(xlUp).Row
    For Each MyRange In Range("I1:I" & LastRow)
        If MyRange.Offset(, -3) = "" And MyRange Like "*/bad*" Then MyRange.ClearContents
    Next

End Sub

I7セルも削除の対象になると思うのですが、記入漏れですか?

回答
投稿日時: 17/12/07 13:41:05
投稿者: WinArrow
投稿者のウェブサイトに移動

>←この場合、「aaa/bad」のテキスト文字を消す
が2ヵ所同じだけど・・・・いいのかな?
 
 
ヒント
 
For myRow = 先頭行 To 最終行
    If Cells(myRow,"I").Value Like "*/bad" AND cells(myRow,"F").value = "" Then
       '何かする
    End If
Next
 
※先頭行、最終行は、自分で求めるコードを考えてください。
※「なにかする」は、自分でやりたいことを考えてください。

投稿日時: 17/12/07 14:15:58
投稿者: どすこい

もこな2 さんの引用:
Select Caseで分岐処理すればできるようです。
 
Select Case True
    Case Tureになる条件
        '処理内容
    Case Tureになる条件
        '処理内容
    Case Tureになる条件
        '処理内容
    Case Else '上記のいずれにも合致しない
        '処理内容
End Select

 
Select Caseという書き方ができるのですね。知らなかったのですごく勉強になりました。
ありがとうございます。

投稿日時: 17/12/07 14:17:28
投稿者: どすこい

皆様
 
早速お返事くださり、ありがとうございました!すごくうれしいです。
皆様からいただいたヒントをもとに調べてコードを書きなおした結果、
想定通りに動きました。本当に助かりました。
 
ありがとうございます。