[[20120304214334]] 『空白で削除』(ポム) ページの最後に飛ぶ

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

 

『空白で削除』(ポム)
B3からB115のセルが対象です。B3が空白ならG3を削除 B4が空白でない時はG4のセルを削除しないマクロを教えてもらえませんか?よろしくお願いします。

 削除じゃなくクリアだとして。

 Sub Sample1()
    Dim c As Range
    For Each c In Range("B3:B115")
        If Len(c.Value) = 0 Then c.Offset(, 5).ClearContents
    Next
 End Sub

 Sub Sample2()
    Dim r As Range
    On Error Resume Next
    Set r = Range("B3:B115").SpecialCells(xlCellTypeBlanks)
    On Error GoTo 0
    If Not r Is Nothing Then r.Offset(, 5).ClearContents
 End Sub

 (ぶらっと)

 もし、入力のタイミングでリアルタイムで実行するのなら、シートモジュールに。

 Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r As Range
    Dim c As Range

    Set r = Intersect(Target, Range("B3:B115"))
    If r Is Nothing Then Exit Sub
    Application.EnableEvents = False
    For Each c In r
        If Len(c.Value) = 0 Then c.Offset(, 5).ClearContents
    Next
    Application.EnableEvents = True
 End Sub

 (ぶらっと)


回答ありがとうございます。ごめんなさい・・・・空白ではなく参照している0(ゼロ)でした。
このような時だとできませんでした。ゼロの時の方法はないのでしょうか?(ポム)

 Sample2の方法ではしんどいけど Sample1 や、Worksheet_Change なら

 If Len(c.Value) = 0 Then c.Offset(, 5).ClearContents これを

 If c.Value = 0 Then c.Offset(, 5).ClearContents に。

 (ぶらっと)

 G列に数式が無ければ

 Sub test()
    [G3:G115] = [if(B3:B115<>"",if(B3:B115=0,"",G3:G115),"")]
End Sub
(seiya)


 To seiya さん

 眼福です! 自分はエクセルに疎いので、このような、とくに関数で配列を作り出すということに
なかなか思い当たりません。精進します。

 (ぶらっと)


 ぶらっとさん

 > 眼福です!
 ちょっと大袈裟ですよ...

 この方法(Evaluate method)は
 1) 使用が限定される。
 2) 可読性が悪い。
 3) 複雑な処理ができない。
 等があるので、あまり深くは追及しないようにしています。
 参考までに
[[20070212134849]]
(seiya)

コメント返信:

[ 一覧(最新更新順) ]


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