
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 のほうが、はっきりとしているのではないかと思います。
この回答へのお礼
お礼日時:2005/04/27 22:41
マクロまで組んで頂いての説明大変ありがとうございました。
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの画面で十字マークが...
-
エクセルでハイパーリンクのU...
-
エクセルでカーソルが四方に矢...
-
エクセルで任意のセルをクリッ...
-
excelで、スクロールをすると限...
-
エクセルで連続データから、数...
-
エクセル フィルター選択解除時...
-
セルをクリックすると付箋のよ...
-
エクセルの複数セルに同時に同...
-
エクセル 数値を全て「1」にす...
-
Shift押しながら、矢印ボタンで...
-
inputboxの出力位置
-
セルを斜めに選択してカットする
-
ピポットテーブルエラー解決方法
-
EXCELで不規則的に行の高さを変...
-
Word 表 文字数カウント
-
Excel 行の連続データを列に参...
-
Excel2010の指マークと白十字マ...
-
エクセル:マクロ「Application...
-
エクセルで、指定の値よりも大...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで連続データから、数...
-
excelで、スクロールをすると限...
-
エクセルの画面で十字マークが...
-
エクセルで任意のセルをクリッ...
-
Word 表 文字数カウント
-
セルをクリックすると付箋のよ...
-
Excel 小さくなったスクロール...
-
エクセル 数値を全て「1」にす...
-
エクセルでハイパーリンクのU...
-
複数のセルの入力内容を一度に...
-
EXCEL アルファベットと数字の...
-
エクセルでカーソルが四方に矢...
-
エクセル 画面上の行数を調節...
-
excelで1行ごとに一気に削除す...
-
Shift押しながら、矢印ボタンで...
-
フィルタを解除した後の表示位置
-
Excelで表のデータを並び替えた...
-
エクセルの範囲指定
-
Excel選択を繰り返すとセルの色...
-
エクセルで、結合したセルを選...
おすすめ情報