エクセルVBAにて双方向での書式のリンクをさせたいと考えています。
具体的にはセルの背景色の双方向リンク方法について教えていただきたいです。ここで双方向での背景色のリンクとは別々のシート上のセルの背景色をどちら側の変更であっても、もう一方に変更を反映させることです。
【シート1】
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
Sheets("Sheet2").Range("$A$1").Value = Sheets("Sheet1").Range("$A$1").Value
Sheets("Sheet2").Range("$A$1").Interior.ColorIndex = Sheets("Sheet1").Range("$A$1").Interior.ColorIndex
End If
End Sub
【シート2】
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
Sheets("Sheet1").Range("$A$1").Value = Sheets("Sheet2").Range("$A$1").Value
Sheets("Sheet1").Range("$A$1").Interior.ColorIndex = Sheets("Sheet2").Range("$A$1").Interior.ColorIndex
End If
End Sub
上記のコードを記述しています。値のリンクはできているのですが背景色のリンクがどうしてもうまくできません。どちらかの変更と同時にもう一方の背景色も変更されるようにするにはどうすればよいでしょうか?
どんな方法でもかまいませんのでお詳しい方よろしくお願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
提示されたコードで出来るはずです。
どちらかの「値」が変更されれば、値も背景色も変わるはずです。
もしかして、「値」は変えずに背景色だけ変えた場合のことを言ってますか?
「値」が変わらなければイベントは起動されません。
背景色の変化でイベントを起動したいなら、
それを常時監視するような大掛かりな話になります。
そこまでやる価値があるかどうかという話です。
※簡単ではありませんし、好ましくない副作用もあるでしょう。
この回答への補足
迅速な回答ありがとうございます。
上記コードでは値と背景色を変更したとき値しか反映されませんでした。
背景色だけを変更したときは次にもう一方側を変更したときに反映されます。
なぜこのようなタイムラグが起こるのでしょうか?プログラムの動作がよくわかっていないのでもしわかればお教え頂きたいです。よろしくお願いします。
No.2
- 回答日時:
> なぜこのようなタイムラグが起こるのでしょうか?
タイムラグではありません。
前述したように、「値」が変更されたときしかプログラムが呼ばれないのです。
Change とは、「値」の変更のことで、背景色の変更ではありません。
これは、Excel の仕様です。
この回答への補足
エクセルの仕様上、背景色のリンクをさせることは不可能ということでしょうか?
何か良い方法があればお教えいただきたいです。よろしくお願いします。
No.3
- 回答日時:
実用的かどうかは分かりませんが、とにかく目的のシートを見たときに色が変わればいいんでしょ的なコードです。
Usedrange全体を対象にしていますので、スピードは保証の限りではありません。
Workbookモジュールに記述して下さい。ご参考まで。
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim myCell As Range
Application.ScreenUpdating = False
Select Case Sh.Name
Case "Sheet1"
For Each myCell In Sh.Range(Sheets("Sheet2").UsedRange.Address).Cells
myCell.Interior.ColorIndex = Sheets("Sheet2").Range(myCell.Address).Interior.ColorIndex
Next myCell
Case "Sheet2"
For Each myCell In Sh.Range(Sheets("Sheet1").UsedRange.Address).Cells
myCell.Interior.ColorIndex = Sheets("Sheet1").Range(myCell.Address).Interior.ColorIndex
Next myCell
End Select
Application.ScreenUpdating = True
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/05/26 17:19
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/06/10 11:06
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 4 2023/05/26 10:43
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Visual Basic(VBA) ExcelVBAでDo Until loopのネスト、IF文を使って一致する物と一致しない物としたい 11 2022/12/24 17:46
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Excel(エクセル) vba userformで漢字を全角カタカナに 2 2022/07/24 15:38
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
- Excel(エクセル) 並べ替え、ソートの構文がわからない。 お世話になります。VBA超初心者です。 エクセルでワークシート 2 2023/06/28 21:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで大量のファイルをシート名...
-
Vba 実数および実数タイプの変...
-
エクセルVBAについて
-
ユーザーフォームに別シートか...
-
VB.net(VB)で、フォームにExcel...
-
Excelのマクロについて教えてく...
-
エクセルの合計を自動で表示さ...
-
Excelのマクロでワードのテキス...
-
VBAの計算で@が出てしまう件
-
VBA listBoxから
-
エクセルのマクロについて教え...
-
Excelのマクロについて教えてく...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
左右の表のキー位置を合わせたい
-
VBAの質問になります メッセー...
-
Excel マクロについての相談
-
VBA レジストリの値の読み方に...
-
2つのマクロでチェックボックス...
-
Vba SelStart、SelLen教えてく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBA 定義されたプロージ...
-
Excel-VBAのmsgBox()の不思議
-
【VBA】マクロの入ったファイル...
-
VBA 複数条件の分岐処理の上手...
-
現在のブックを閉じないで、マ...
-
VBAで各列の"+"と"o"の合計数を...
-
VBAに詳しい方教えてください。
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ユーザーフォームに別シートか...
-
エクセルのマクロについて教え...
-
ExcelVBA シート名を複数セルか...
-
エクセルのマクロについて教え...
-
VBA listBoxから
-
Excelのマクロについて教えてく...
-
エクセルのマクロについて教え...
おすすめ情報