Excel VBA質問箱 IV

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

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


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

【73828】クリアコンテンツについて shouw 13/2/18(月) 15:30 質問[未読]
【73829】Re:クリアコンテンツについて UO3 13/2/18(月) 15:40 発言[未読]
【73830】Re:クリアコンテンツについて UO3 13/2/18(月) 15:45 発言[未読]
【73831】Re:クリアコンテンツについて shouw 13/2/18(月) 16:44 質問[未読]
【73832】Re:クリアコンテンツについて UO3 13/2/18(月) 17:20 発言[未読]
【73833】Re:クリアコンテンツについて kanabun 13/2/18(月) 17:34 発言[未読]
【73840】Re:クリアコンテンツについて shouw 13/2/19(火) 17:50 お礼[未読]
【73839】Re:クリアコンテンツについて shouw 13/2/19(火) 17:49 お礼[未読]

【73828】クリアコンテンツについて
質問  shouw  - 13/2/18(月) 15:30 -

引用なし
パスワード
   いつもお世話になっております。

クリアボタンを下記のコードにて作成しました。

Private Sub CommandButton_Click()
  If MsgBox("消去しますか?", vbYesNo) = vbYes Then
  MsgBox "消去しました。"
  Range("M6:M34").Select
  Selection.ClearContents
 End If
End Sub

そこで、他のシートの選択した部分(仮にシート2 A1:A10とする)もクリアしたのですが、どのように改良すればよろしいでしょうか??

どなたかご教授願います。

【73829】Re:クリアコンテンツについて
発言  UO3  - 13/2/18(月) 15:40 -

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

まず
>  Range("M6:M34").Select
>  Selection.ClearContents

これは

 Range("M6:M34").ClearContents

の、一行でOKですが、


>そこで、他のシートの選択した部分(仮にシート2 A1:A10とする)もクリアしたのですが、どのように改良すればよろしいでしょうか??

この意味は、
・Sheet2を表示して、どこか、適宜セル範囲を選択しておいて
・Sheet1を選択して、そこのコマンドボタンクリックで、このシートの M6:M34をクリアするとともに
・先ほど選択しておいた Sheet2 のどこかの領域もクリアするということですか?

【ひねくりまわせば】できないことはないでしょうが、なぜ、このようなことが必要なのかな?
と思いますねぇ。操作する人にとっても、わかりにくいのでは?
たとえば、その他にも Sheet3 や Sheet4 も、どこかが選択されているとしましょう。
(必ずどこかのセルが選択されているはずです)
そういったものもクリアされてしまう?
クリアしようとして選択したのは Sheet2 のセル領域だけなんだ、他のシートは
クリア対象じゃないんだと
どのように判断しましょうか?

【73830】Re:クリアコンテンツについて
発言  UO3  - 13/2/18(月) 15:45 -

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

もしSHeet2側もクリアす領域が固定されているなら、たとえば以下のようになりますが?

Private Sub CommandButton1_Click()
  If MsgBox("消去しますか?", vbYesNo) = vbYes Then
    Range("M6:M34").ClearContents
    Sheets("Sheet2").Range("A1:A10").ClearContents
    MsgBox "消去しました。"
  End If
End Sub

【73831】Re:クリアコンテンツについて
質問  shouw  - 13/2/18(月) 16:44 -

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

ご考察ありがとうございます。

説明が足りなくて申し訳ないです。

クリアする対象セルには結合してあるところもあり、ClearContentsではうまく動作しなかったため、現在のコードを使用しています。

各種の入力を項目ごとにシート何枚かに渡って行っており、その後別データベースに保存したのを確認後にクリアを行いたいので、すでに何度か確認したものを再度確認しながら1シートずつクリアするのは手間となるため同時消去を行いたいのです。

お力を貸して頂けると幸いです。
よろしくお願い致します。

【73832】Re:クリアコンテンツについて
発言  UO3  - 13/2/18(月) 17:20 -

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

>クリアする対象セルには結合してあるところもあり、ClearContentsではうまく動作しなかったため、現在のコードを使用しています。

指定の M6:M34 の中に結合セルがあっても、その中におさまっていればエラーにはならないように思います。
ただし、これは2010 の話で 2003 は、だめだったかもしれませんね。

それと、これも記憶があいまいですが、

Range("M6:M34").ClearContents

これでエラーなら

Range("M6:M34").Select
Selection.ClearContents

でもエラーになりませんか?

いずれにしても、仮に、指定領域に結合セルがあった場合も

Range("M6:M34").Value = "" としてやるとエラーにはならないと思います。

で、別シートの領域クリアは、アップしましたように

シート.領域 と記述して処理します。

【73833】Re:クリアコンテンツについて
発言  kanabun  - 13/2/18(月) 17:34 -

引用なし
パスワード
   ▼UO3 さん:
>▼shouw さん:
よこみち、スミマセン m(_ _)m


>それと、これも記憶があいまいですが、
>
>Range("M6:M34").ClearContents
>
>これでエラーなら
>
>Range("M6:M34").Select
>Selection.ClearContents
>
>でもエラーになりませんか?

ひまなので、2003 でやってみたら、
.Select Selection を使えば、エラーにはなりませんでした。

>いずれにしても、仮に、指定領域に結合セルがあった場合も
>
>Range("M6:M34").Value = "" としてやるとエラーにはならないと思います。

ですね、

  Range("M6:M34").Value = Empty

って方法ですね。

【73839】Re:クリアコンテンツについて
お礼  shouw  - 13/2/19(火) 17:49 -

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

U03さんのおっしゃる通りにValueを使用したら、できました!!

本当にありがとうございます。

【73840】Re:クリアコンテンツについて
お礼  shouw  - 13/2/19(火) 17:50 -

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

アドバイスのあった通りにやったらできました!!

本当にありがとうございます。

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