エクセル2013でアドインを作成しようとしています。
右クリックに選択範囲のセルの値のみ(数式は除いて)削除するメニューを追加しようとしています。
おおむねうまくいっているのですが、選択範囲のセルが一つだけだった場合、選択していないセルに入っている値も削除されてしまします。
どうすれば選択したセルが一つのみの場合も選択しているセルの値のみ削除されるようにすることができるでしょうか?
該当部分のコードを上げます。
Selection.SpecialCells(xlCellTypeConstants).ClearContents
Selectionの数を出力してみると、一つのセルしか選択していない場合はきちんとひとつになっていますが、Selection.SpecialCells(xlCellTypeConstants)の数をカウントすると選択していないセルもカウントしています。
よろしくお願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
No.1です。
質問文の最初の部分(数式を除いて)を見落としていました。申し訳ありません。
複数の場合と単独セルの場合で分けないと出来ないようです。
If Selection.Count > 1 Then
Selection.Cells.SpecialCells(xlCellTypeConstants).ClearContents
Else
If Not ActiveCell.HasFormula Then
Selection.ClearContents
End If
End If
No.2
- 回答日時:
こんにちは。
Excel2010で試してみました。(2013は手元に無いので)
ご質問と同じ現象が発生しますね。
もとのselectionとのintersectをとれば良さそうに思って試してみたところ、ご質問の事象に対しては対処できるようです。
しかしながら、さすがにMSさん、一筋縄ではいきません。
定数ではないセル(式などのセル)だけを選択した場合に、
Selection.SpecialCells(xlCellTypeConstants)
は、セル一つだけの選択だと問題ありませんが、複数セルを選択するとエラーになるようです。
(2013でもエラーが発生するかどうかは不明ですが・・・)
というわけで、両方対処してみました。
(後者は、面倒なのでエラー処理にしています。)
Dim rng As Range
On Error Resume Next
Set rng = Selection.SpecialCells(xlCellTypeConstants)
If Err.Number = 1004 Then Exit Sub
'処理対象がないので、とりあえず中断にしてあります
On Error GoTo 0
Set rng = Application.Intersect(Selection, rng)
If Not (rng Is Nothing) Then
'rng.ClearContentsなど、ここで必要な処理を行う
End If
回答ありがとうございます。
返事が遅くなり申し訳ございません。
とりあえず、選択中のセルをカウントして処理を振り分けることで乗り越えてみました。
教えていただい例も試してみたいと思います。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBA オリジナル関数で選択セルの合計を作成したい 3 2023/03/19 19:45
- Excel(エクセル) エクセルVBA 複数行にまたがっている選択を判定するには 2 2023/05/21 21:54
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Excel(エクセル) エクセルの数式で教えてください。 1 2022/10/25 09:26
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) シート間で同じ値があったら指定範囲をコピーして貼り付け 1 2022/11/07 08:01
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Excel(エクセル) マクロ セルの選択 5 2022/08/12 22:47
- Excel(エクセル) IF 関数で「〇〇 という文字を含む場合」の分岐処理で表示された数字はSUMで数字集計できますか? 3 2022/08/02 16:29
- Excel(エクセル) 余計なお世話的な「入力規則」?対策は? 2 2023/01/14 12:39
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで指定したセルのどれ...
-
【エクセル】IF関数 Aまたは...
-
対象セル内(複数)が埋まった...
-
貼り付けで複数セルに貼り付けたい
-
Excelでのコメント表示位置
-
Excelで数式内の文字色を一部だ...
-
excelのCOUNTIF関数で、『範囲=...
-
エクセル オートフィルタで絞...
-
セルをクリック⇒そのセルに入力...
-
エクセル 足して割る
-
複数のセルのいずれかに数字が...
-
Excel2003 の『コメント』の編...
-
エクセルの一つのセルに複数の...
-
エクセルでオブジェクトを常に...
-
EXCEL VBA セルに既に入...
-
エクセルのセルの枠を超えて文...
-
★★エクセルのテキストボックス...
-
枠に収まらない文字を非表示に...
-
(Excel)数字記入セルの数値の後...
-
エクセル セルの中に縦線が入っ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで指定したセルのどれ...
-
【エクセル】IF関数 Aまたは...
-
対象セル内(複数)が埋まった...
-
エクセル 足して割る
-
Excelで数式内の文字色を一部だ...
-
貼り付けで複数セルに貼り付けたい
-
Excelでのコメント表示位置
-
セルをクリック⇒そのセルに入力...
-
EXCEL VBA セルに既に入...
-
excelのCOUNTIF関数で、『範囲=...
-
【Excel】 セルの色での判断は...
-
エクセル オートフィルタで絞...
-
エクセルのセルの枠を超えて文...
-
(Excel)数字記入セルの数値の後...
-
Excelで、「特定のセル」に入力...
-
エクセルの一つのセルに複数の...
-
複数のセルのいずれかに数字が...
-
excelの特定のセルの隣のセル指...
-
数式を残したまま、別のセルに...
-
ハイパーリンクの参照セルのズ...
おすすめ情報