エクセルのA列のA1,A2,A3...には選手人名
が入っています。
例えばA2(田中選手)の相手となる選手名(山本
選手)をA19列から持ってきてB2にセットしたいのです。
ドラッグアンドドロップ的にB列にA列から移動したい
のです。左上中白矢印ポインターを出して移動できる
のは判りますが、左上中白矢印を出すのが確実に
行かないことがあるので、中白十字状態でドラッグアンド
ドロップ出きるか、A19をクリックし後にB2をクリック
するとA19の内容がB2に移るようにするには、VBAを
どう組めば良いのでしょうか。教えて下さい。
No.4ベストアンサー
- 回答日時:
2つ考えてみました。
<その1>
最初は普通に選択し、次の貼り付けるセルはCtrlキーを押しながら選択します。
作業をするシートのコードウインドウに貼り付けます。
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim kammaPot As Integer 'カンマ位置
Dim rg1 As Range, rg2 As Range '最初に選択したセルと次に選択したセル
On Error GoTo ErrorHandler
If Target.Count = 2 Then
'セルを2個選択している場合
kammaPot = InStr(Target.Address, ",")
Set rg1 = Range(Left(Target.Address, kammaPot - 1))
Set rg2 = Range(Right(Target.Address, Len(Target.Address) - kammaPot))
rg2.Value = rg1.Value
rg1.Value = ""
rg2.Select
End If
Exit Sub
ErrorHandler:
End Sub
--------------------------
<その2>
次は、質問のとおりにA、B列でのみ処理をするケースです。
作業をするシートのコードウインドウに貼り付けます。
なお、2つ同時には登録できません。
Dim AiteSensyu As String 'A列の選択した選手名
Dim AiteSensyuAddress As String 'A列の選択した選手の行
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
On Error GoTo ErrorHandler
If Target.Count = 1 Then
If AiteSensyu <> "" Then
'選手の選択が済んでいる場合
If Target.Column = 2 Then 'B列
Target.Value = AiteSensyu
Range(AiteSensyuAddress) = "" '選択した選手のセルをクリア
AiteSensyu = "" '選択した選手をクリア
End If
Else
If Target.Column = 1 Then 'A列
AiteSensyu = Target.Value '選択した選手を記憶する
AiteSensyuAddress = Target.Address '選択した選手のセル番地
End If
End If
End If
Exit Sub
ErrorHandler:
End Sub
No.3
- 回答日時:
要はセル情報の移動の簡略化を行いたいわけですよね。
確かに#2さんの発言にあったように、コピペがベストかも?
右手はマウス
左手は[Ctrl+C][Ctrl+V]を押す。
これの繰り返しがいいとは思うのですが。。。
もしどうしてもVBAで行いたいのであれば、結構制限があります。
EXCELの仕様から認識できるイベントが少ないからです。
一応サンプルを作りましたが、これはダブルクリックでセル情報を取得し、右クリックで貼り付けるプログラム(マクロ?)です。
常にダブルクリックはコピー/右クリックは貼り付けとなるために、エクセル標準のダブルクリックで編集モード、右クリックでポップアップメニューが使えなくなってます。
ですので、コピペモードと、エクセル本来のモードを切り分けるフラグを標準モジュールでフラグを宣言し、実行/解除ボタンも用意しておく事を勧めます。
以下のソースを、標準モジュールではなく、シートのモジュールに貼り付けてください。
Option Explicit
'Rangeオブジェクト変数
Private pRange As Range
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'クリックの操作無効(この場合ダブルクリックによるセルの編集モードが無効)
Cancel = True
'アクティブなセルを、変数にセット
With Target
Set pRange = Cells(.Row, .Column)
End With
End Sub
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
'クリックの操作無効(この場合右クリックによるメニューの表示が無効)
Cancel = True
'貼り付けるものが無い時、未処理
If pRange Is Nothing Then
MsgBox "移動するセルが指定されていません"
Exit Sub
End If
'セルを切り取って貼り付け
pRange.Cut
With Target
Cells(.Row, .Column).Select
End With
Paste
End Sub
No.2
- 回答日時:
>VBAをどう組めば良いのでしょうか。
教えて下さい。VBAでは無理じゃないですかね。同じクリックする動作の1回目(切り取り)と2回目(貼り付け)に差をつけるわけですから、その途中にはマクロの実行ボタンを押さなければダメですよね。
自動で切り取れる方法も試してみたんですけど、例えば普通のモジュール1でなく、シートの方にあるWorksheet_SelectionChangeイベントでもセルをクリックすると1回目は「切り取り」になるんですが、2回目に貼り付け先のセルをクリックした瞬間、当然のことですがそのセルを切り取ってしまい貼り付けることができませんでした。
imogasiさんがご存知の(確かにいらいらしますが)マウスで移動する方法が一番早いのではないでしょうか。
ちょっと遅いですが、私ならば右クリック「切り取り」→「貼り付け」を使うかもしれませんね。参考にならなくてすみません。
No.1
- 回答日時:
意味がよく理解できていません。
移動用のマウスカーソル状態以外でも、マウス操作でセルの内容を移動したいという事ですか?
この回答への補足
太いプラスのポインターから中が空白の矢印ポインターに変えるのに、ワンステップ、ツーステップ操作が必要だったり、上手く矢印ポインタに変えにくいことが多いので、クリックしてドラッグか、ポイント(fromから)して別のセルをポイント(toへ)して確実に移動したいためです。よろしく。実際例は選手の組み合わせでなく、多量に組み合わせるべきデータがあるため確実に迅速に操作を進めたいのです。
補足日時:2001/11/18 10:04お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセル表作成について 5 2023/03/12 13:25
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Excel(エクセル) 【エクセル」 特定のセルで条件抽出した列を、別シートに上から詰めて表示したい。 8 2022/04/08 16:00
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 1 2023/02/27 22:21
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Visual Basic(VBA) エクセルマクロでアニメを作る方法を教えてください。 1 2023/02/07 14:27
- Excel(エクセル) Excel VBAプルダウンの値を変えながら2枚ずつ印刷する方法? 4 2022/05/27 13:04
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- その他(Microsoft Office) エクセルで串刺ししたシートの並べ替えをしたいです 4 2023/02/14 11:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
i=cells(Rows.Count, 1)とi=cel...
-
Excelのハイパーリンクにマクロ...
-
【Excel】指定したセルの名前で...
-
Excelで指定した日付から過去の...
-
DataGridViewのセル編集完了後...
-
【Excel VBA】指定行以降をクリ...
-
EXCELで変数をペーストしたい
-
Excel vbaで特定の文字以外が入...
-
【VBA】指定したセルと同じ値で...
-
特定行の色を変えたい(FlexGrid)
-
VBAでセルをクリックする回...
-
EXCELのVBA-フィルタ抽出後の...
-
スプレッドシートの数値列に対...
-
VBAの計算で@が出てしまう件
-
セル色なしの行一括削除
-
3桁または4桁の数値を時刻に...
-
”戻り値”が変化したときに、マ...
-
TODAY()で設定したセルの日付...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
【Excel VBA】指定行以降をクリ...
-
i=cells(Rows.Count, 1)とi=cel...
-
【Excel】指定したセルの名前で...
-
Excelで指定した日付から過去の...
-
特定の文字を条件に行挿入とそ...
-
Excel VBA、 別ブックの最終行...
-
EXCELで変数をペーストしたい
-
Excelのプルダウンで2列分の情...
-
Excel vbaで特定の文字以外が入...
-
TODAY()で設定したセルの日付...
-
screenupdatingが機能しなくて...
-
DataGridViewの各セル幅を自由...
-
Sub 要具ライフ() ActiveSheet....
-
【EXCEL VBA】Range("A:A").Fi...
-
VBAを使用した時間管理
-
VBAでセルをクリックする回...
-
セル色なしの行一括削除
-
エクセルVBAでコピーして順...
おすすめ情報