
No.4ベストアンサー
- 回答日時:
StudyVBAさん、こんにちは。
>マウスで範囲指定した場合は、selection.SepcialCells...ではなく、
>For each の方がベターなのでしょうか
実は、書いた時点では感覚的なものだったので、検証してみました。
SpecialCells(xlCellTypeBlanks)
というのは、Excelライブラリの中の、Rangeクラスの配下(メンバ)なんですが、この動作には、漠然とした部分があると思うのです。(実際に、私は使わないのです。)
例えば、
ActiveSheet.Cells.SpecialCells(xlCellTypeBlanks).Select
としてみると、
ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks).Select
とたぶん、同義だと思いますが、いかがでしょうか?
Selection というのは、あくまでも、マウス等によるユーザー選択の部分ですね。
ということは、そのUsedRangeとは違いが出ます。
こんなテストをしてみました。
新しいシートに、いくつか、値を点在させて、その最終セルを越えて、マウス選択してみます。
Sub Test_UsedRange_Selection()
Dim r As Range
Dim SelectedRow As Long, UsedRow As Long
Dim SelectedColumn As Integer, UsedColumn As Integer
'
Set r = Selection
With ActiveSheet
SelectedRow = r.Cells(r.Count).Row
SelectedColumn = r.Cells(r.Count).Column
UsedRow = .UsedRange.Cells(.UsedRange.Count).Row
UsedColumn = .UsedRange.Cells(.UsedRange.Count).Column
End With
If SelectedRow > UsedRow Then
MsgBox "選択した行は、UsedRangeよりも大きいです。"
End If
If SelectedColumn > UsedColumn Then
MsgBox "選択した列は、UsedRangeよりも大きいです。"
End If
End Sub
Sub Test()
Set r = Selection
With r.Cells.SpecialCells(xlCellTypeBlanks)
.Select
'=" "
End With
End Sub
そうすると、UsedRange よりも先の部分の Selection は、Select しないのではないでしょうか?ですから、SpecialCells(xlCellTypeBlanks)の範囲というのは、その検索範囲がかならず、UsedRange内と明確ではない限りは、For Each ~ In Selection のほうが、はっきりとしているのではないかと思います。
マクロまで組んで頂いての説明大変ありがとうございました。
Selection.SpecialCells(xlCellTypeBlanks)では
使われていないところまでの選択はされないのですね。
大変参考になりました。
ありがとうございました。
No.5
- 回答日時:
Wendy02さん、koba_nobさん、再度のこんにちは。
koba_nobさんも知りたいとのことでしたので質問した甲斐がありました。
仰る意味、確かに理解しました。
以前、xlCellTypeVisibleをちょっと勉強した時、マウス選択範囲がUsedRangeの範囲を超えてもちゃんと求められたものでそれが頭にありました。
SpecialCellsといってもその定数によって思いがけない動作をするものですね。
今回のこと、しっかり頭に入れておきます。
貴重な時間を割いていただき感謝いたします。
これからも目から鱗の回答期待しています。
ありがとうございました。
No.3
- 回答日時:
こんにちは。
Wendy02さんにお尋ねします。
No.1の回答のように単純に
--------------------------------------------
Sub Test()
On Error GoTo NotFound
Selection.SpecialCells(xlCellTypeBlanks).Value = " "
Exit Sub
NotFound:
MsgBox "ブランクセルはありません"
End Sub
-------------------------------------------
でいいと思うのですが、なぜ
マウスで範囲指定した場合は、selection.SepcialCells...ではなく、
For each の方がベターなのでしょうか
Wendy02さんの回答はいつも参考にさせて頂いていますので、宜しくお願いいたします。
たぶん、質問者の方も知りたいのでは。
No.2
- 回答日時:
補足:
>空白のセルがあったら、スペースを入力するという意味とは、若干違うと思いますが。
マウスで範囲指定した場合は、
Selection.SepcialCells...
ではなく、
Sub Test2()
For Each c In Selection
If IsEmpty(c) Then
c.Value = " "
End If
Next
End Sub
このようにしたほうが良いのではないか、ということです。もちろん、間違いだというわけではありません。
No.1
- 回答日時:
On Error Resume Next
Selection.SepcialCells...
で、エラー・トラップをかけますが、でも、空白(Empty)のセルがあったら、スペースを入力するという意味とは、若干違うと思いますが、もう少し、考えたほうがよいのではありませんか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel VBA 空白行があるセル範囲に色を付ける 3 2022/06/13 15:58
- Excel(エクセル) VBA 特定の列に入っているテキストをコピペ 2 2023/06/14 11:24
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) Excel VBA マクロ ある列の最終行迄を参照し、別の列の空白セルに値を入力したいです 2 2023/03/05 02:44
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Visual Basic(VBA) Excelのマクロ ブック間である範囲をコピー Workbooks(“a.xlsx“).Sheets 3 2022/05/12 17:02
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Visual Basic(VBA) エクセル VBAで複数セル選択時エラーになる問題 3 2022/10/04 02:40
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
excelで、スクロールをすると限...
-
エクセルで連続データから、数...
-
セルをクリックすると付箋のよ...
-
エクセルで任意のセルをクリッ...
-
Excel 小さくなったスクロール...
-
エクセルでハイパーリンクのU...
-
複数のセルの入力内容を一度に...
-
excelで1行ごとに一気に削除す...
-
エクセル 画面上の行数を調節...
-
エクセル 数値を全て「1」にす...
-
エクセルの画面で十字マークが...
-
EXCEL アルファベットと数字の...
-
エクセルVBA 複数行にまたがっ...
-
エクセルで、結合したセルを選...
-
Excelで表のデータを並び替えた...
-
列選択で勝手に広範囲に範囲選...
-
余計なお世話的な「入力規則」...
-
エクセルで0を除いて昇順に並...
-
エクセルでカーソルが四方に矢...
-
エクセルで1つおきに列を削除...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで連続データから、数...
-
excelで、スクロールをすると限...
-
複数のセルの入力内容を一度に...
-
Excel 小さくなったスクロール...
-
EXCEL アルファベットと数字の...
-
エクセルの画面で十字マークが...
-
エクセル 画面上の行数を調節...
-
セルをクリックすると付箋のよ...
-
excelで1行ごとに一気に削除す...
-
エクセルでハイパーリンクのU...
-
エクセル 数値を全て「1」にす...
-
エクセルで、結合したセルを選...
-
エクセルで任意のセルをクリッ...
-
Excelで表のデータを並び替えた...
-
ピポットテーブルエラー解決方法
-
エクセルでカーソルが四方に矢...
-
エクセルVBA 複数行にまたがっ...
-
Shift押しながら、矢印ボタンで...
-
列選択で勝手に広範囲に範囲選...
-
エクセルで1つおきに列を削除...
おすすめ情報