Excel VBA質問箱 IV

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

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


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

【54142】Deleを使うと・・式も消えるので VBA初心者 08/2/26(火) 16:39 質問[未読]
【54143】Re:Deleを使うと・・式も消えるので Jaka 08/2/26(火) 17:06 発言[未読]
【54144】Re:Deleを使うと・・式も消えるので VBA初心者 08/2/26(火) 17:17 発言[未読]
【54145】Re:Deleを使うと・・式も消えるので Blue 08/2/26(火) 17:26 回答[未読]
【54146】Re:Deleを使うと・・式も消えるので VBA初心者 08/2/26(火) 18:14 発言[未読]
【54147】Re:Deleを使うと・・式も消えるので Blue 08/2/26(火) 18:33 回答[未読]
【54148】Re:Deleを使うと・・式も消えるので VBA初心者 08/2/26(火) 19:09 発言[未読]
【54152】Re:Deleを使うと・・式も消えるので Blue 08/2/26(火) 20:34 質問[未読]
【54153】Re:Deleを使うと・・式も消えるので 本見ても 08/2/26(火) 21:04 発言[未読]
【54160】Re:Deleを使うと・・式も消えるので Blue 08/2/27(水) 0:36 質問[未読]

【54142】Deleを使うと・・式も消えるので
質問  VBA初心者  - 08/2/26(火) 16:39 -

引用なし
パスワード
   任意の範囲をマウスで指定して、Deleキーで押すと、セル内全部きえてしまいます。
それを、マウスで任意範囲を指定して、マクロボタンに範囲内のセルの値だけを消して、式を残す と言うvbaを作りたいのですけど可能なんでしょうか。
まだまだ勉強中で、本を見ていても解りません
教えてくださいお願いします

【54143】Re:Deleを使うと・・式も消えるので
発言  Jaka  - 08/2/26(火) 17:06 -

引用なし
パスワード
   編集 → ジャンプ → セル選択 → 定数 → OK
の事でしょうか?
因みに数式以外が書かれているセル選択。

【54144】Re:Deleを使うと・・式も消えるので
発言  VBA初心者  - 08/2/26(火) 17:17 -

引用なし
パスワード
   ▼Jaka さん:
>編集 → ジャンプ → セル選択 → 定数 → OK
>の事でしょうか?
>因みに数式以外が書かれているセル選択。
早速すみません
ちなみに、仮に A3セルに =A2*A1との式を入れていますEnd(xlDown)を使用して1行とびに下まで
計算式もセルではなく、VBAで構文を作った方が良いのでしょうか?

【54145】Re:Deleを使うと・・式も消えるので
回答  Blue  - 08/2/26(火) 17:26 -

引用なし
パスワード
   よくわかりませんが、消したい範囲を指定して、Jakaさんのおっしゃったことを
「マクロの記録」である程度コードが出来上がるはずなんですが。


たとえばA1:C10が消したい範囲なら

  Range("A1:C10").Select
  Selection.SpecialCells(xlCellTypeConstants, 23).Select
  Selection.ClearContents

ってなこーどになるのでこれをまとめて

Range("A1:C10").SpecialCells(xlCellTypeConstants).ClearContents

となります。

【54146】Re:Deleを使うと・・式も消えるので
発言  VBA初心者  - 08/2/26(火) 18:14 -

引用なし
パスワード
   ▼Blue さん:
>よくわかりませんが、消したい範囲を指定して、Jakaさんのおっしゃったことを
>「マクロの記録」である程度コードが出来上がるはずなんですが。
>
>
>たとえばA1:C10が消したい範囲なら
>
>  Range("A1:C10").Select
>  Selection.SpecialCells(xlCellTypeConstants, 23).Select
>  Selection.ClearContents
>
>ってなこーどになるのでこれをまとめて
>
>Range("A1:C10").SpecialCells(xlCellTypeConstants).ClearContents
>
>となります。
はい!固定の範囲なら良いのですが、大きいシートの中で色々な範囲で間違えが有るとしたら、その都度アドレスが違いますので
ボタンにその都度アドレスが変わる範囲に対して、値だけを消して、数式は残す
とマクロ登録したいのですけど、無理でしょうか?

【54147】Re:Deleを使うと・・式も消えるので
回答  Blue  - 08/2/26(火) 18:33 -

引用なし
パスワード
   ▼VBA初心者 さん:
>はい!固定の範囲なら良いのですが、大きいシートの中で色々な範囲で間違えが有るとしたら、その都度アドレスが違いますので
>ボタンにその都度アドレスが変わる範囲に対して、値だけを消して、数式は残す
>とマクロ登録したいのですけど、無理でしょうか?
Selectionにたいしてやるだけなのでは?

' セルを選択中か
If TypeOf Selection Is Range Then
  On Error Resume Next ' 対象が何もないときのエラー回避
  Selection.SpecialCells(xlCellTypeConstants).ClearContents
  On Error GoTo 0
End If

【54148】Re:Deleを使うと・・式も消えるので
発言  VBA初心者  - 08/2/26(火) 19:09 -

引用なし
パスワード
   ▼Blue さん:
>▼VBA初心者 さん:
>>はい!固定の範囲なら良いのですが、大きいシートの中で色々な範囲で間違えが有るとしたら、その都度アドレスが違いますので
>>ボタンにその都度アドレスが変わる範囲に対して、値だけを消して、数式は残す
>>とマクロ登録したいのですけど、無理でしょうか?
>Selectionにたいしてやるだけなのでは?
>
>' セルを選択中か
>If TypeOf Selection Is Range Then
>  On Error Resume Next ' 対象が何もないときのエラー回避
>  Selection.SpecialCells(xlCellTypeConstants).ClearContents
>  On Error GoTo 0
>End If
早速有難うございます
数値は消えました、式は残っています
 Sub test()
'セルを選択中か
If TypeOf Selection Is Range Then
  On Error Resume Next ' 対象が何もないときのエラー回避
   Selection.SpecialCells(xlCellTypeConstants).ClearContents
  On Error GoTo 0
End If
End Sub
ただ、数式が入っているセルが全部消えてしまいます!
範囲を指定しましたが消えました?

【54152】Re:Deleを使うと・・式も消えるので
質問  Blue  - 08/2/26(火) 20:34 -

引用なし
パスワード
   ▼VBA初心者 さん:
>ただ、数式が入っているセルが全部消えてしまいます!
意味不明。

数式は消えて式は消えない??
(数式⊂式だよな?(数式は式の部分集合)式が消えなければ数式は消えないはずだけど。)
もともとどんな値が入っていて消えたのか詳しく説明してください。
(A3 に 「A1+A2」 みたいな文字列が入っていたとしてもそれは数式ではない。)


それとも

計算結果は残したいってこと?
そしたら式を残すのは不可能です。

式が入っているセルを覚えておいて、そのセルだけ値のコピー。
その他のセルはクリア

のようなことをしないと無理です。
また、式が消えるのでもう計算はできません。


>範囲を指定しましたが消えました?
最後の?の意図が良くわからない。こちらに質問されているのですか?

【54153】Re:Deleを使うと・・式も消えるので
発言  本見ても  - 08/2/26(火) 21:04 -

引用なし
パスワード
   ▼Blue さん:
>▼VBA初心者 さん:
>>ただ、数式が入っているセルが全部消えてしまいます!
>意味不明。
>
>数式は消えて式は消えない??
>(数式⊂式だよな?(数式は式の部分集合)式が消えなければ数式は消えないはずだけど。)
>もともとどんな値が入っていて消えたのか詳しく説明してください。
>(A3 に 「A1+A2」 みたいな文字列が入っていたとしてもそれは数式ではない。)
>
>
>それとも
>
>計算結果は残したいってこと?
>そしたら式を残すのは不可能です。
>
>式が入っているセルを覚えておいて、そのセルだけ値のコピー。
>その他のセルはクリア
>
>のようなことをしないと無理です。
>また、式が消えるのでもう計算はできません。
>
>
>>範囲を指定しましたが消えました?
>最後の?の意図が良くわからない。こちらに質問されているのですか?
シート1にA3:A10までA1*A2=A3と言う式をコピーしましたモジュールに
Sub test()
'セルを選択中か
If TypeOf Selection Is Range Then
  On Error Resume Next ' 対象が何もないときのエラー回避
   Selection.SpecialCells(xlCellTypeConstants).ClearContents
  On Error GoTo 0
End If
End Sub
を書き込みシート1にボタンを登録して、call test()にしました。
A3:A5の範囲をマウスで指定して、マクロを開始するとA3:A10は0になり、A3にはA1*A2の計算式が残ってました。
なぜ、A3:A5の範囲をマウスで指定してしたのに、全部消えるのか不思議でした

【54160】Re:Deleを使うと・・式も消えるので
質問  Blue  - 08/2/27(水) 0:36 -

引用なし
パスワード
   再現しません。

ただ、単一セルのみ選択の場合、
>Selection.SpecialCells(xlCellTypeConstants)
の挙動が変わっているようです。(そのシートのすべてのセルが対象になる。)

>A3:A5の範囲をマウスで指定してしたのに
ということでそれが原因ではないでしょうけど。


一応回避バージョン

'セルを選択中か
If TypeOf Selection Is Range Then
  ' 単一選択
  If Selection.Count = 1 Then
    ' 数式を持っているか
    If Not Selection.HasFormula Then
      Selection.ClearContents
    End If
  ' 複数選択
  Else
    On Error Resume Next ' 対象が何もないときのエラー回避
    Selection.SpecialCells(xlCellTypeConstants).ClearContents
    On Error GoTo 0
  End If
End If


ところで、最初の質問者とハンドルが違いますが同じ人ですか?
質問ごとにハンドルをころころ変えないほうが良いです。

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