Excel VBA質問箱 IV

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

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


8003 / 13644 ツリー ←次へ | 前へ→

【35592】数式セルを残し数値セルだけクリアー 下働き 06/3/8(水) 11:50 質問[未読]
【35595】Re:数式セルを残し数値セルだけクリアー inoue 06/3/8(水) 12:55 発言[未読]
【35600】Re:数式セルを残し数値セルだけクリアー 下働き 06/3/8(水) 13:31 発言[未読]
【35602】Re:数式セルを残し数値セルだけクリアー Jaka 06/3/8(水) 13:40 発言[未読]
【35606】Re:数式セルを残し数値セルだけクリアー 下働き 06/3/8(水) 14:20 お礼[未読]

【35592】数式セルを残し数値セルだけクリアー
質問  下働き  - 06/3/8(水) 11:50 -

引用なし
パスワード
   度々質問させて頂きます下働きです。

ある範囲(E8:AS62)中の数値入力セルの数値だけを消去したいのですが、どうすればよろしいでしょうか?
範囲内には、数式セルが散在しています。これを消さないように数値入力セルだけを選択して消去するマクロを以下のように作成しましたが、動作がもっさりとしています。頻繁に行う操作ではないので我慢できなくもないのですが、もっと巧いやり方がありましたらお教えください。よろしくお願い致します。

Sub 全面クリアー()
'
  With Range("E8:AS62")
    .Borders(xlEdgeLeft).LineStyle = xlNone
    .Borders(xlEdgeTop).LineStyle = xlNone
    .Borders(xlEdgeBottom).LineStyle = xlNone
    .Borders(xlEdgeRight).LineStyle = xlNone
    .Borders(xlInsideVertical).LineStyle = xlNone
    .Borders(xlInsideHorizontal).LineStyle = xlNone
    .UnMerge
  End With
  Dim i, j As Integer
      i = 0
  While i < 7
      j = 0
    While j < 11
      Range("F11").Offset(j * 5, i * 6).Range("A1:D2").ClearContents
      j = j + 1
    Wend
      i = i + 1
  Wend
End Sub

【35595】Re:数式セルを残し数値セルだけクリアー
発言  inoue E-MAILWEB  - 06/3/8(水) 12:55 -

引用なし
パスワード
   >これを消さないように数値入力セルだけを選択して消去するマクロを
>以下のように作成しましたが
見る限り、論理的には数式はないのかも知れませんが、
マクロ中で「数式があるか」を確認するロジックではないですね。
ここにHasFormulaプロパティなどでのチェックを入れたら、
もっと遅くなってしまうでしょう。

>動作がもっさりとしています。
Application.ScreenUpdating
とか
Application.Calculation
などを調整して処理させるだけで速くなるのではないでしょうか。

【35600】Re:数式セルを残し数値セルだけクリアー
発言  下働き  - 06/3/8(水) 13:31 -

引用なし
パスワード
   inoue さん ご助言ありがとうございます。

>マクロ中で「数式があるか」を確認するロジックではないですね。
>ここにHasFormulaプロパティなどでのチェックを入れたら、
>もっと遅くなってしまうでしょう。
についてですが、前述したマクロは、数式と数値の選択が出来なかったので、数値の入るセルのみをWhile文で選択しています。理想は1度だけ範囲指定をして後は数値の入力されたセルだけ数値がクリアされるというものなのですが、可能でしょうか?

>>これを消さないように数値入力セルだけを選択して消去するマクロを
>>以下のように作成しましたが
>見る限り、論理的には数式はないのかも知れませんが、
>マクロ中で「数式があるか」を確認するロジックではないですね。
>ここにHasFormulaプロパティなどでのチェックを入れたら、
>もっと遅くなってしまうでしょう。
>
>>動作がもっさりとしています。
>Application.ScreenUpdating
>とか
>Application.Calculation
>などを調整して処理させるだけで速くなるのではないでしょうか。

【35602】Re:数式セルを残し数値セルだけクリアー
発言  Jaka  - 06/3/8(水) 13:40 -

引用なし
パスワード
   編集 → ジャンプ → セル選択
定数 → 数値以外のチェックを外す
選択されたセルをDeleteキーで消す。

【35606】Re:数式セルを残し数値セルだけクリアー
お礼  下働き  - 06/3/8(水) 14:20 -

引用なし
パスワード
   ▼Jaka さん:
ありがとうございました。
おかげさまで、下記マクロを作成できました。
以前のものに比べ、格段に軽くなりました。
本当にありがとうございました。

Sub 全面クリアー2()
  With Range("E8:AS62")
    .Borders(xlEdgeLeft).LineStyle = xlNone
    .Borders(xlEdgeTop).LineStyle = xlNone
    .Borders(xlEdgeBottom).LineStyle = xlNone
    .Borders(xlEdgeRight).LineStyle = xlNone
    .Borders(xlInsideVertical).LineStyle = xlNone
    .Borders(xlInsideHorizontal).LineStyle = xlNone
    .UnMerge
  End With
  Range("F11:AS62").SpecialCells(xlCellTypeConstants, 23).ClearContents
End Sub

>編集 → ジャンプ → セル選択
>定数 → 数値以外のチェックを外す
>選択されたセルをDeleteキーで消す。

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