
Excel VBA の質問です。
あるセル(仮に "C8")に「リンゴ」と書かれています。また他のセル(仮に "F10")に「ミカン」と書かれていたとします。
セル"C8" と "F10" を連続してクリックし、「交換」というボタンを押すと、"C8"に「ミカン」、"F10" に「リンゴ」とデータが入れ替わるようにしたいのです。
最初にC8セルをクリックしたときに「リンゴ」とセル情報をコピーするところからわかりません。
この「交換」というボタンにどのようなVBA記載をすればよいのか、どなたか教えてください。
対象のセルは一つの表の中ではどことどこを交換するかは決まっていません。とにかく任意にクリックされた2つのセルデータを交換したいのです。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
「みかん」と「りんご」を連続してクリックしてからボタンを押してマクロを実行した時、マクロで判断できるのは、直近でクリックした「りんご」の位置だけで、「みかん」の位置は分かりません。
これを何とかするには、それなりの工夫が必要となり、仕組みが大げさになってしまいます(できない訳ではないですが・・・)。そこで、操作方法をちょっと変えることにより、簡単に実装することができるようになります。
下記の例では、「みかん」をクリックした後、Ctrlを押しながら次の「りんご」をクリックし、両方を選択状態にした上で、ボタンをクリックすると選択されているセルの値が入れ替わります。
Sub sample()
Dim r As Range
Dim rs As Range
Dim s As Variant
For Each r In Selection
If rs Is Nothing Then
Set rs = r
s = r.Value
Else
rs.Value = r.Value
r.Value = s
s = rs.Value
End If
Next r
End Sub
ちなみに、3つ以上のセルを選択した場合でも動作すると思います。
No.2
- 回答日時:
こんにちは!
>・・・クリックしたときに・・・
単にクリックだけだと間違ったセルを選択しただけでも反応してしまいますので、
ダブルクリックの方法はどうでしょうか?
一例です。
元のセル番地とデータを一旦どこか使っていないセルに退避させておくのはダメですか?
仮に使っていないセルをZ1・Z2セルとします。
シートモジュールです。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim myAd As String
Cancel = True
With Target
myAd = .Address
If Range("Z1") = "" Then
Range("Z1") = myAd
Range("Z2") = .Value
Else
myAd = Range("Z1")
Range(myAd) = .Value
.Value = Range("Z2")
Range("Z1").Resize(2).ClearContents
End If
End With
End Sub
※ すべてのセルで反応してしまいます。
本来であれば対象セルを限定した方がよいと思います。
※ 細かい検証はしていませんので
お望みどおりにならなかったらごめんなさい。m(_ _)m
No.1
- 回答日時:
一旦、片方を変数にセルの値を退避させておく方法が、一番簡単だと思います。
Dim str一時保存 As String
str一時保存 = Range("C8").value
Range("C8").value = Range("F10").value
Range("F10").value = str一時保存
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【マクロ】ボタンを押すごとに、A1セル、A2セル、A3セルに日付を入力 3 2023/01/25 00:12
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Visual Basic(VBA) VBA 検索と入力 Excel ブック ぶぶぶ シート ししし 列V 検索対象の列です 最終行は、お 6 2023/05/17 01:40
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Excel(エクセル) エクセル関数について 2 2022/04/13 18:25
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
- Excel(エクセル) エクセルについて教えてください。 2 2023/06/14 11:11
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Excel(エクセル) エクセル表作成について 5 2023/03/12 13:25
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vba テキストボックスとリフト...
-
VBAでセルを指定した画像のコピ...
-
【Excel】 セルの色での判断は...
-
貼り付けで複数セルに貼り付けたい
-
エクセルで指定したセルのどれ...
-
エクセルで条件付き足し算
-
エクセルの一つのセルに複数の...
-
数式を残したまま、別のセルに...
-
セルをクリック⇒そのセルに入力...
-
セル番地の入力されているセル...
-
エクセルで、複数の参照範囲を...
-
エクセルで名前を名字と氏名に...
-
生化学分野 分光学 ランベル...
-
【エクセル】IF関数 Aまたは...
-
枠に収まらない文字を非表示に...
-
Excelについての質問です 並べ...
-
excelの特定のセルの隣のセル指...
-
DVDのレンタル専用版とセル版の...
-
Excel関数の+記号
-
excelで日付関数の文字列変換の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelについての質問です 並べ...
-
【マクロ】アクティブセルの2...
-
スプレッドシートで複数のプル...
-
excelで日付関数の文字列変換の...
-
エクセルで指定したセルのどれ...
-
貼り付けで複数セルに貼り付けたい
-
枠に収まらない文字を非表示に...
-
セルをクリック⇒そのセルに入力...
-
エクセルの一つのセルに複数の...
-
数式を残したまま、別のセルに...
-
(Excel)数字記入セルの数値の後...
-
Excel 例A(1+9) のように番地の...
-
対象セル内(複数)が埋まった...
-
エクセルの書式設定の表示形式...
-
EXCEL VBA セルに既に入...
-
excelの特定のセルの隣のセル指...
-
エクセルのセルの枠を超えて文...
-
Excelでのコメント表示位置
-
エクセル オートフィルタで絞...
-
Excelで数式内の文字色を一部だ...
おすすめ情報