[[20191121095023]] 『消去したい』(おじさん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『消去したい』(おじさん)

おたずねします。
×がついているセルを見て左の値を消去するコードを作成したいのですが最初の行の×だけ消えて残りはスルーします。
間違いの箇所を教えてください。
Sub KESIKOMI()

         If Range("D4") = "×" Then
            Range("C4").Value = ""
     ElseIf Range("D5") = "×" Then
            Range("C5").Value = ""
     ElseIf Range("D6") = "×" Then
            Range("C6").Value = ""
     ElseIf Range("D7") = "×" Then
            Range("C7").Value = ""
     ElseIf Range("D8") = "×" Then
            Range("C8").Value = ""
     ElseIf Range("D9") = "×" Then
            Range("C9").Value = ""
     ElseIf Range("D10") = "×" Then
            Range("C10").Value = ""
     ElseIf Range("D11") = "×" Then
            Range("C11").Value = ""
     ElseIf Range("D12") = "×" Then
            Range("C12").Value = ""
     ElseIf Range("D13") = "×" Then
            Range("C13").Value = ""
     End If
End Sub

< 使用 Excel:Excel2013、使用 OS:Windows7 >


 ElseIf を使っているからです

 それぞれ独立したIF文にしましょう

(渡辺ひかる) 2019/11/21(木) 10:07


 For〜Nextを使う方法もあります。

 Sub KESIKOMI()

     Dim i As Long

     For i = 4 To 13
         If Range("D" & i).Value = "×" Then Range("C" & i).Value = ""
     Next

 End Sub
(bi) 2019/11/21(木) 10:14

 渡辺ひかる様
ありがとうございます、やっと理解できました。
以下のように書きましたら動きました。
     If Range("D4") = "×" Then
         Range("C4").Value = ""
      End If
      If Range("D5") = "×" Then
         Range("C5").Value = ""
      End If
      If Range("D6") = "×" Then
         Range("C6").Value = ""
      End If
      If Range("D7") = "×" Then
         Range("C7").Value = ""
      End If
      If Range("D8") = "×" Then
         Range("C8").Value = ""
      End If
      If Range("D9") = "×" Then
         Range("C9").Value = ""
      End If
      If Range("D10") = "×" Then
         Range("C10").Value = ""
      End If
      If Range("D11") = "×" Then
         Range("C11").Value = ""
      End If
      If Range("D12") = "×" Then
         Range("C12").Value = ""
      End If
      If Range("D13") = "×" Then
         Range("C13").Value = ""
      End If
bi様
短いコードに感激です。
採用させていただきます。ありがとうございました。

(おじさん) 2019/11/21(木) 14:02


 もう解決済みですが、下記の方法でも可能です。

 Sub KESIKOMI()

     If Range("D4") = "×" Then Range("C4").Value = ""
     If Range("D5") = "×" Then Range("C5").Value = ""
     If Range("D6") = "×" Then Range("C6").Value = ""
     If Range("D7") = "×" Then Range("C7").Value = ""
     If Range("D8") = "×" Then Range("C8").Value = ""
     If Range("D9") = "×" Then Range("C9").Value = ""
     If Range("D10") = "×" Then Range("C10").Value = ""
     If Range("D11") = "×" Then Range("C11").Value = ""
     If Range("D12") = "×" Then Range("C12").Value = ""
     If Range("D13") = "×" Then Range("C13").Value = ""

 End Sub
(bi) 2019/11/21(木) 14:13

 これが一番短いですかね

 Sub KESIKOMI()

    Range("C4:C13").Value = [if(D4:D13="×","",C4:C13)]

 End Sub

(渡辺ひかる) 2019/11/21(木) 14:39


 渡辺ひかるさんのだとD列が×でなく、C列に何も入力されていない場合、0になってしまわないか?
(ねむねむ) 2019/11/21(木) 14:51

 ねむねむさん

 確かに・・・

 スマートじゃないですけど、こうですかね

 Range("C4:C13").Value = [if(D4:D13="×","",if(len(C4:C13)=0,"",C4:C13))]

 でも質問者さんの元のコードが
 Range("C4").Value = "" じゃなくて  Range("C4").ClearContents だったら
 これも使えませんね

(渡辺ひかる) 2019/11/21(木) 15:06


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.