No.1ベストアンサー
- 回答日時:
下記に裏ワザとして載ってました。
http://officetanaka.net/excel/function/tips/tips …
でも結構面倒くさい操作なので、大量に選択した際のミスに
限定した方が良さそうです。
いろいろ検索しましたが、特効薬は無いみたいですね。。
No.5
- 回答日時:
1)ショートカットキー
「アクティブセルの移動」
下 Enter … 選択範囲内で下方向([オプション]で変更可)に移動する。
上 Shift + Enter … 選択範囲内で上方向([オプション]で変更可)に移動する
右 Tab … 選択範囲内で右方向(単列なら下)に移動する。
左 Shift + Tab … 選択範囲内で左方向(単列なら上)に移動する。
隅 Ctrl + . (ピリオド) … アクティブ領域の四隅を右回りで移動する。
隣 Ctrl + Alt + → … 選択範囲内の右にある領域へ移動する。
隣 Ctrl + Alt + ← … 選択範囲内の左にある領域へ移動する。
「アクティブ領域のリサイズ)」
Shift + 方向キー … アクティブ領域を指定した方向に(1行または1列単位で)拡張(縮小)する。
Ctrl + Shift + 方向キー … データが連続した範囲で指定した方向の端までアクティブ領域を拡張(縮小)する。
手作業での修正なら、これ位↑使えれば十分だと思います。
#ショートカットキーはあちこちで紹介されていますから、Webで一覧を手に入れてExcelシートで管理するのがお奨めです。
リサイズは出来る、他の領域内に隠すことも出来る、消す事は出来ない。
2)InputBox から、任意のセル範囲(最大4領域)を指定して、選択中のセル範囲から”マイナス”するマクロ。
「選択範囲を部分解除するマクロ」を簡略化したものに、コピー待機状態を損なわず実行できるようオプションを加えました。
【コピー元のセル範囲を取得する関数】を別途用意すれば、コピー待機状態を損なわず実行できるようになります。
紹介例。
【Excel VBAにて、セルのコピー範囲を知る方法を教えて下さい。(選択範囲ではありません)】
http://oshiete1.goo.ne.jp/qa4535701.html
にて、回答No.1、2の回答者さんが Win32APIを使った方法を紹介されています。
【K窓 Excel技 <Excel Tips>】
http://homepage2.nifty.com/kmado/kvba.htm
の中から
『E03M121 切り取り又はコピーされたセル範囲を取得する』
にある、kGetRangeCopyCut()関数で試してみてください。
自作は間に合わなかったので私も使わせて戴きましたが、ここでは紹介という形を取らせていただきます。
この関数を(同じプロジェクトの 別モジュール!!に)貼り付けたら、
下の記述から、オプションと書いてある行のコメントブロックを外せば、コピーモードにも対応します。
お試し用に、ショートカットキー(Alt + a)から動作させるように書いています。
(「↓ お試し用」から「↑ お試し用」までの9行は無くても使えます。)
XL2003以前のVer.での確認で、ツールバーのボタンに直に登録する方法でも動作しました。
Visual Basic Editor 画面からの実行も問題ないようです。
問題は、特定のダイアログやコントロールを表示させると、コピー待機状態がキャンセルされる、ということです。
例えば、Application.InputBox メソッド を InputBox()関数に代え(範囲を文字列で指定することになりますが)て、
それに合わせて書き直せば、コピーモードの問題からは開放されます。
色々なアプローチがあるでしょうから、応用はお任せします。
' XL2000、2003にて動作確認済み。
' 新規の標準モジュール に 次々行以下を(全文!! 過不足なく!! 排他!!) コピペ して
' Auto_Openを実行してショートカット(Alt + a)を設定。
' ' ============ここから===========
Option Explicit
Option Private Module
DefStr S: DefLng N
Const S_SHORTCUT = "%a" ' ↓ お試し用
' ' ===============================
Sub auto_open()
Application.OnKey S_SHORTCUT, "cjCullAreas"
End Sub
' ' ===============================
Sub auto_close()
Application.OnKey S_SHORTCUT, ""
End Sub ' ↑ お試し用
' ' ===============================
' ' 選択範囲の部分解除 ... Alt + a で動作
Sub cjCullAreas()
Const S_TTL = "選択セル範囲の部分解除"
Dim vCull
Dim rBuf As Range, r As Range, rPos As Range, rRet As Range
Dim sTmp, sRef
Dim nCCpM, nWR, nWC
Dim nTop, nLeft, nBottom, nRight
If Not TypeName(Selection) Like "Range" Then Exit Sub
With Selection
If .Count = 1 Then
MsgBox "単一セルには使えません", 64, S_TTL
Exit Sub
End If
sTmp = .Areas(.Areas.Count).Address
End With
With Application
nCCpM = .CutCopyMode
If nCCpM = xlCopy Then
' Set rBuf = kGetRangeCopyCut() ' オプション
If rBuf Is Nothing Then
nCCpM = 0
If MsgBox("このまま実行するとコピー元範囲を見失います。続行しますか?", 33, S_TTL) _
= vbCancel Then Exit Sub '
End If
End If
Do
vCull = VBA.Array(.InputBox("選択解除するセル(最大4領域)を選択して OK" _
, S_TTL, sTmp, , , , , 8))
If Not TypeName(vCull(0)) Like "Range" Then
MsgBox "キャンセルされました", 64, S_TTL
Exit Sub
ElseIf vCull(0).Areas.Count > 4 Then
MsgBox "解除指定できるのは 一度に 4つ 迄の領域", 48, S_TTL
Else
Exit Do
End If
Loop
nWR = .Rows.Count: nWC = .Columns.Count
For Each r In vCull(0).Areas
With r
nTop = .Row: nLeft = .Column
With .Cells(.Cells.Count)
nBottom = .Row: nRight = .Column
End With
End With
sTmp = Empty
If nTop > 1 Then sTmp = sTmp & ",R1:R" & nTop - 1
If nLeft > 1 Then sTmp = sTmp & ",R" & nTop & "C1:R" & nWR & "C" & nLeft - 1
If nBottom < nWR Then sTmp = sTmp & ",R" & nBottom + 1 & "C" & nLeft & ":R" & nWR & "C" & nRight
If nRight < nWC Then sTmp = sTmp & ",R" & nTop & "C" & nRight + 1 & ":R" & nWR & "C" & nWC
If sTmp <> "" Then
sTmp = Mid$(sTmp, 2)
sTmp = .ConvertFormula(sTmp, xlR1C1, xlA1, xlRelative)
sRef = sRef & " (" & sTmp & ")"
End If
Next r
If sRef <> "" Then Set rPos = Range(Trim$(sRef))
If Not rPos Is Nothing Then Set rRet = .Intersect(Selection, rPos)
End With ' ' <<< With Application ...
If Not rRet Is Nothing Then
If rRet.Areas.Count > 8192 Then
MsgBox "実行後の領域数が 8192 を 超えてしまうので中止します", 48, S_TTL
Else
rRet.Select
End If
End If
If nCCpM <> 0 Then rBuf.Copy '
Set rPos = Nothing: Set rRet = Nothing: Set rBuf = Nothing: vCull = Empty
End Sub
' ' ===============================
' ' ============ここまで===========
No.4
- 回答日時:
一旦名前を定義し、「名前の定義」ダイアログボックスの「参照範囲」で書き直せばどうでしょうか。
Excel:名前定義
http://homepage3.nifty.com/gakuyu/excel/name.html
★独自に開発した便利な方法を紹介します。
適当なセルに
(1) = と入力
(2) 目的セルを選択(直接セル番地を入力でも可)
(3) , を入力
(4) 手順(3)(4)を繰り返す
=を入力したセルには
=C5,E5:E6,G5,I5:I6,K5:K8,M5:M6
のようにセル番地が記録されます。
≪途中で変更する場合≫
手順(3)で、該当セルにはカラーリファレンスが表示されます。
カラーリファレンスを、ドラッグすれば拡大、縮小、移動が自在です。
セルに入力されているセル番地を、書き換え、削除しても変更可能です。
F2キーで編集モードにしてから、書き換え、削除を行ってください。
(5) 確定後(1)のセルを選択
(6) Shift+Ctrl+[ とキー操作してセル範囲を選択
No.3
- 回答日時:
きちんと検証していないので常にうまくいく自信はないのですが、下記のコードを実行してみてください。
Sub RemoveLastArea()
Dim oldRng As Range
Dim newRng As Range
Dim n As Long
If TypeName(Selection) <> "Range" Then Exit Sub
Set oldRng = Selection
Set newRng = oldRng.Areas(1)
For n = 2 To oldRng.Areas.Count - 1
Set newRng = Union(newRng, oldRng.Areas(n))
Next n
newRng.Select
Set oldRng = Nothing
Set newRng = Nothing
End Sub
No.2
- 回答日時:
たとえば。
コントロールクリックで「A1:A3」「C1:C3」「E1:E3」の3つのエリアを飛び飛びに選択します。
これを「A1:A3」と「C1:C3」,そしてもう一度「A1:A3」を重ねて選択のようにして,見かけ上2箇所選ばれているようで実は重ねて3箇所選択されている,といった所までは出来ます。
でも選択範囲の数を2つに減らすことは出来ません。
#選択範囲の移動/縮小は「やれば出来る」ので色々手管は紹介されますが,現実問題として大概の場合,やり直した方が簡単です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Outlook VBAについて 1 2023/07/10 12:41
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Excel(エクセル) Excelのプルダウンメニューの内容を人によって可変する方法 2 2023/03/28 14:52
- PDF PDFの表がエクセルに貼り付けられなくなってしまいました。 5 2022/06/03 09:07
- Excel(エクセル) エクセルからビジオのリンク貼り付け 1 2023/03/30 17:51
- Excel(エクセル) エクセル 関数参照範囲のセルの表示 1 2023/03/16 14:55
- その他(Microsoft Office) 選択行の列範囲に二重線を引く 3 2022/06/08 12:21
- Excel(エクセル) エクセルVBA 複数行にまたがっている選択を判定するには 2 2023/05/21 21:54
- Excel(エクセル) 余計なお世話的な「入力規則」?対策は? 2 2023/01/14 12:39
- Visual Basic(VBA) シート間で同じ値があったら指定範囲をコピーして貼り付け 1 2022/11/07 08:01
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
excelで、スクロールをすると限...
-
エクセルで連続データから、数...
-
EXCEL アルファベットと数字の...
-
セルをクリックすると付箋のよ...
-
エクセルの画面で十字マークが...
-
エクセル 数値を全て「1」にす...
-
エクセルでハイパーリンクのU...
-
複数のセルの入力内容を一度に...
-
エクセルの行数の制限
-
エクセル 画面上の行数を調節...
-
Shift押しながら、矢印ボタンで...
-
連続データの作成(E)が選択出来...
-
Excelで表のデータを並び替えた...
-
Excelで急に動かなくなる
-
excelで1行ごとに一気に削除す...
-
エクセルVBAでセル範囲のデータ...
-
エクセルのセルを交互に選択す...
-
エクセルで「1~15」の乱数...
-
エクセルの複数セルに同時に同...
-
Excel選択を繰り返すとセルの色...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excelで、スクロールをすると限...
-
エクセルの画面で十字マークが...
-
エクセルで連続データから、数...
-
複数のセルの入力内容を一度に...
-
セルをクリックすると付箋のよ...
-
エクセルでハイパーリンクのU...
-
EXCEL アルファベットと数字の...
-
エクセル 数値を全て「1」にす...
-
Excel選択を繰り返すとセルの色...
-
Excelで表のデータを並び替えた...
-
エクセル 画面上の行数を調節...
-
エクセルでカーソルが四方に矢...
-
エクセルで0を除いて昇順に並...
-
ピポットテーブルエラー解決方法
-
Shift押しながら、矢印ボタンで...
-
excelで1行ごとに一気に削除す...
-
エクセルVBAでセル範囲のデータ...
-
Excelで急に動かなくなる
-
エクセルで任意のセルをクリッ...
-
フィルタを解除した後の表示位置
おすすめ情報