エクセル2010です。
プログラムの関係上、セルを削除されないよう、ロックした上でシート保護をし、
非表示として処理を
しております。
ドラッグにて範囲指定をしてDEL(消去)をすると、ロックしたセルも含まれて
消去できないため、ワンクリックで消去できるよう、マクロを組んで、コマンドボタンを
当てております。
シート保護解除
選択範囲の可視セルを選択
消去
シート保護
-------------------------------
Sub Macro1()
ActiveSheet.Unprotect
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.ClearContents
ActiveSheet.Protect
End Sub
-------------------------------
この場合、クリック前に選択範囲があると問題なく消去できるのですが、選択範囲がなく、
一つのセルが選択された状態であると、シート内全て消去になっていまいます。
範囲が選択されていない場合、マクロを無効(中断)させることは可能でしょうか?
または、別法で可能であれば、そちらでも構いません。
言葉足らずのところがありましたら、ご指摘ください。
よろしくお願いします。
No.1
- 回答日時:
求めている回答とは異なると思うが、一応アドバイス。
非表示にしているセルを別のシートに移し、そのシートを非表示にしてはどうか。
これなら都度マクロを作る必要もなくなる。
No.2ベストアンサー
- 回答日時:
こんにちは。
>Selection.SpecialCells(xlCellTypeVisible).Select
>クリック前に選択範囲があると問題なく消去できるのですが
状況が分からないままでの反応ですから、この辺りは曖昧ですが、Excelでは、ふつうは、このような書き方はしません。
>ドラッグにて範囲指定をしてDEL(消去)をすると、
シートプロテクトまでしてあるのに、任意の範囲でというよりも、規定の範囲のほうが良いような気がします。たいてい、Excelではデータ範囲が決まっていますから、Selection ではなく、Endプロパティを使い、その範囲を指定します。場合によっては、CurrentRegion, UsedRangeを用います。
>範囲が選択されていない場合、マクロを無効(中断)させることは可能でしょうか?
これ自体は、以下のように書けばよいのです。
'//
Sub Macro1()
Dim Rng As Range
ActiveSheet.Unprotect
If TypeName(Selection) = "Range" Then 'セルを選択しているか?
If Selection.Cells.Count = 1 Then Exit Sub '選択されているセルの数は1個以上か?
Else
Exit Sub 'マウスカーソルがセルにない場合は、マクロは終了
End If
Set Rng = Selection.SpecialCells(xlCellTypeVisible) '可視セルを変数に入れて、
Rng.ClearContents '値の消去(変数に入れずに直接でも良い)
ActiveSheet.Protect
End Sub
'///
回答ありがとうございました。
マクロの記録をそのまま登録したものを改変していたので、中断の条件が思い浮かばず、ご提示いただいた内容で解説があったため、大変参考となりました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Excel(エクセル) エクセルVBA 複数行にまたがっている選択を判定するには 2 2023/05/21 21:54
- その他(Microsoft Office) エクセル VBAについて 2 2022/09/21 22:21
- Excel(エクセル) ワードのマクロについて教えてください。 1 2023/03/11 13:50
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/02/07 09:58
- Excel(エクセル) エクセル 関数参照範囲のセルの表示 1 2023/03/16 14:55
- Visual Basic(VBA) シート間で同じ値があったら指定範囲をコピーして貼り付け 1 2022/11/07 08:01
- その他(Microsoft Office) 選択行の列範囲に二重線を引く 3 2022/06/08 12:21
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/03/02 08:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの画面で十字マークが...
-
エクセルで連続データから、数...
-
excelで、スクロールをすると限...
-
エクセルでカーソルが四方に矢...
-
Shift押しながら、矢印ボタンで...
-
セルをクリックすると付箋のよ...
-
エクセル 画面上の行数を調節...
-
EXCEL アルファベットと数字の...
-
Excel選択を繰り返すとセルの色...
-
excelで1行ごとに一気に削除す...
-
エクセル 数値を全て「1」にす...
-
エクセルで0を除いて昇順に並...
-
EXCEL オートフィルタの結果に...
-
フィルタを解除した後の表示位置
-
Excelで表のデータを並び替えた...
-
VB2005 DataGridViewでセルデー...
-
Excelで急に動かなくなる
-
ピポットテーブルエラー解決方法
-
EXCELで不規則的に行の高さを変...
-
エクセル エンターキーを押す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excelで、スクロールをすると限...
-
エクセルの画面で十字マークが...
-
エクセルで連続データから、数...
-
複数のセルの入力内容を一度に...
-
セルをクリックすると付箋のよ...
-
エクセルでハイパーリンクのU...
-
EXCEL アルファベットと数字の...
-
エクセル 数値を全て「1」にす...
-
Excel選択を繰り返すとセルの色...
-
Excelで表のデータを並び替えた...
-
エクセル 画面上の行数を調節...
-
エクセルでカーソルが四方に矢...
-
エクセルで0を除いて昇順に並...
-
ピポットテーブルエラー解決方法
-
Shift押しながら、矢印ボタンで...
-
excelで1行ごとに一気に削除す...
-
エクセルVBAでセル範囲のデータ...
-
Excelで急に動かなくなる
-
エクセルで任意のセルをクリッ...
-
フィルタを解除した後の表示位置
おすすめ情報