
A 回答 (7件)
- 最新から表示
- 回答順に表示
No.7
- 回答日時:
今まで出されている回答から、VBAでも難しいようなので、
「図のリンク貼り付け」で該当セルを必要なところに貼り付け、
実際の値は貼り付けたセルに参照させる方法はどうでしょうか。
見た目は参照セルそのまま、計算に用いるときは、セルに参照値が入っていると言う状態になります。
(既に1000以上のセルが参照されている状態なら、あまり現実味がないですが)
置き換える作業がVBAでできればもう少し楽になるかも。
No.6
- 回答日時:
こんにちは。
KenKen_SP です。面白そうなので作ってみました。完全同期は、無理だと思います。
単純なリンクセルしか判定してないですけど、ご参考までに。
' ------------ 標準モジュール --------------------------------------
' API 部分はオマケですね、、
Public Declare Function GetKeyboardState Lib "user32" ( _
pbKeyState As Byte _
) As Long
Public Const VK_SHIFT = &H10 'Shift
Public Const VK_CONTROL = &H11 'Ctrl
Public Const VK_MENU = &H12 'Alt
’メインです。オマケで右クリックに割り当ててますが、別にツールバーの
’ボタンでも構いません。
' 引数:着色 True リンクセルに着色します False リンクセルの色を消去
Public Sub リンクセル背景色(ByVal 着色 As Boolean)
Dim rngCell As Range
Dim rngRefer As Range
Dim rngHasFormula As Range
Const ALL_TYPE = xlErrors Or xlLogical Or xlNumbers Or xlTextValues
On Error Resume Next
Set rngHasFormula = _
ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas, ALL_TYPE)
For Each rngCell In rngHasFormula
Set rngRefer = Evaluate(rngCell.Formula)
If Not rngRefer Is Nothing Then
If 着色 Then
rngCell.Interior.Color = rngRefer.Interior.Color
Else
rngCell.Interior.ColorIndex = xlNone
End If
Set rngRefer = Nothing
End If
Next rngCell
Set HasFormula = Nothing
End Sub
'-------- 以下シートモジュール ---------------------------------
' 以下はオマケです。ショートカットキーみたいなものです。
' このコードを貼り付けたシートでは [Ctrl]、[Shift]、右クリックの
' 組み合わせでマクロが動作します。
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim KeyState(255) As Byte
Call GetKeyboardState(KeyState(0))
If CBool(KeyState(VK_SHIFT) And &H80) And _
CBool(KeyState(VK_CONTROL) And &H80) Then
' [Shift]+[Ctrl] + 右クリック時 -->色を消去
Call リンクセル背景色(False)
Cancel = True
ElseIf CBool(KeyState(VK_CONTROL) And &H80) Then
' [Ctrl] + 右クリック時 -->着色
Call リンクセル背景色(True)
Cancel = True
End If
End Sub
No.5
- 回答日時:
#04です。
一箇所訂正がありましたSet clFormula = Selection.SpecialCells(xlCellTypeFormulas, 1)
は
Set clFormula = Selection.SpecialCells(xlCellTypeFormulas, 23)
にしてください。お手数をおかけします。
No.4
- 回答日時:
参照先のセルの色をコピーするマクロを作成しました。
動作の条件は単純に「=Sheet名!セルアドレス」となっていることです。だから100%期待通りには動かないかもしれません。(その時はご自身でVBAを書き換えてみてください)
計算式が入ったり(例 = Sheet2!A3 + 10)、複数範囲を参照したり(例 = Sum(a1:e1) )のときは色なしに戻します。
Private Sub Worksheet_Change(ByVal Target As Range)
' 参照セル色流用
Dim tgCell, clFormula As Range, pos As Long
Dim wkText, wkSheet, wkRange As String
On Error Resume Next
Application.ScreenUpdating = False
Set clFormula = Selection.SpecialCells(xlCellTypeFormulas, 1)
Target.Interior.ColorIndex = xlNone
If clFormula.Cells.Count > 0 Then
For Each tgCell In clFormula
wkText = tgCell.Formula
pos = InStr(wkText, "!")
If pos > 0 Then
wkSheet = Mid(wkText, 2, pos - 2)
wkRange = Right(wkText, Len(wkText) - pos)
tgCell.Interior.ColorIndex = xlNone
tgCell.Interior.ColorIndex = Worksheets(wkSheet) _
.Range(wkRange).Interior.ColorIndex
End If
Next
End If
Application.ScreenUpdating = True
End Sub
なお参照セルがあまりにも多いときは、値入力時の反応が鈍くなるのでご注意ください
No.3
- 回答日時:
残念ながら、VBAでも簡単にはいきません。
例えば、Sheet1のC4セルで「=Sheet2!A3」と参照式があった場合。
Sheet1のC4セルの塗り色は、Sheet2のC4セルの色ではなく、Sheet2のA3セルの色でなければなりません。
塗り色をコピーすべきタイミングは、参照元のSheet2のA3セルの値を変更した時と、参照している式を書き換えた時です。
値または式が変更された時に呼び出されるイベントでは「変更があったのはココです」と言う情報が渡されてイベントが発生します。
Sheet2のA3セルの値を変更した時は、変更イベントには「場所はA3」としか情報が渡されて来ないので、そこのセルがSheet1のC4セルから参照されてると言う事が判りません。つまり、ここではどうしようもありません。
次に、参照している式を書き換えた時ですが、変更イベントには式を入れられたセル位置が渡されて来ます。イベント処理の中で、そのセルの式を参照する事は可能ですが色々と問題が出ます。
最初の問題は、渡されて来るセル位置が1セルだけじゃない、と言う事。範囲指定してのコピーペーストや、セルの連続コピーをされると、複数のセルが「範囲」として渡されて来ます。
まあ、複数セルが範囲として引数に渡されて来た時は、引数の行数、列数を数えて、ループ処理をすれば済みます。
それよりも問題なのが、まず、式が「"=Sheet2!A3"」のように「文字列として参照される」ので、自分で文字列を解析して「シートの場所は"Sheet2"で、セルの位置は"A3"だな」と言うのを拾い出さないとなりません。
もし、式に「=Sheet2!A3 + 10」とか「="単価" & Sheet2!A3 & "円"」なんてのが入っていたら、解析はとんでもなく難しくなります。
式に「=Sheet2!A3 + Sheet2!B6」とか入っていたら、どっちの色にすればいいのか。
式に「=SUM(Sheet2!A3:B6)」って入っていたら、どのセルの色にすれば…。
しかも、セル位置の指定が「A3」とか「B6」だけとは限りません。「$A$3」もあれば「$A3」もあれば「A$3」もあります。
で、それら参照先のシートとセル位置がセル1つごとにちゃんと拾い出せて、そこで初めて背景の塗り色をコピーして来る事ができます。
不可能ではないですが、とんでもなく難しいコーディングが必要になるでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Excel(エクセル) エクセル 関数参照範囲のセルの表示 1 2023/03/16 14:55
- Excel(エクセル) エクセル関数の質問 5 2022/04/20 09:46
- Excel(エクセル) エクセル バーコード作成で他のシートを参照するには? 2 2023/05/03 16:57
- Excel(エクセル) 【エクセル】文中に別シートのセルの内容を自動入力したい 6 2022/11/17 11:30
- Excel(エクセル) 複数シートのデータ統合とレイアウトの維持についてです 2 2022/10/18 21:11
- Excel(エクセル) エクセル VBAでセル内容を別の列の最下行に転記したい 2 2022/11/29 08:47
- Excel(エクセル) ピボットテーブルの参照式はオートフィル出来ない? 2 2023/03/03 15:57
- Excel(エクセル) 赤い部分のセルを、下のもの(B)と同じ状態にしたい 4 2022/07/20 16:56
- Excel(エクセル) Excel シート複数 金額日計表と日付 簡単にシートコピーしたら前日の残高と日付を変更させたい 1 2022/07/15 22:10
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセルの色も=イコールできますか?
Windows Me・NT・2000
-
EXCELのセルや文字色の反映
Excel(エクセル)
-
エクセルで色の変更を他のシートに反映させるには
Access(アクセス)
-
-
4
Excelで、塗りつぶしを含め同じ表示にするには?
Excel(エクセル)
-
5
エクセルのシートリンクで,色もリンクさせる方法
Excel(エクセル)
-
6
あるセルに色を付けた時、別のセルにも同じ色が付く
Excel(エクセル)
-
7
Excelでセル参照したとき、書式も一緒に持ってくるには?
Windows Vista・XP
-
8
excel 参照しているセルに色がついていたら、返すセルにも色もつける
その他(コンピューター・テクノロジー)
-
9
色のリンクは出来ますか?【エクセル】
Access(アクセス)
-
10
Excelの塗りつぶしの反映
Excel(エクセル)
-
11
エクセル 別シートへのコピーを,セルの色や太字斜体までやりたい。
Excel(エクセル)
-
12
別シートのセルの色も同じ色に変更する方法を 教えてください
Excel(エクセル)
-
13
エクセルで隣(右or左)のセルと同じ文字色にしたい
Excel(エクセル)
-
14
あるセルに特定の文字列を打つと、他のセルに決められた文字が自動入力するように
Excel(エクセル)
-
15
Excel 関数を使ってデータと一緒にその書式もコピーしたいのですが・・・
Excel(エクセル)
-
16
エクセル 特定の文字を入れると他のセルの色が変わる
Excel(エクセル)
-
17
メールの本文に添付されてしまう時があります。
Outlook(アウトルック)
-
18
条件付き書式で色をつけたセルを判断して他のセルの色をつけることは可能でしょうか?どの様な方法がありま
Excel(エクセル)
-
19
第一、第三、土曜日のセルに条件付書式設定で色を付けたいのですが、そのよ
Excel(エクセル)
-
20
エクセル:文字色を認識して○×で判定する。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル ドロップダウンリスト...
-
特定のセルだけ結果がおかしい...
-
【マクロ】【配列】3つのシー...
-
エクセルのdatedif関数を使って...
-
【関数】同じ関数なのに、エラ...
-
エクセルの循環参照、?
-
【マクロ】列を折りたたみ非表...
-
【マクロ】アクティブセルの時...
-
iPhoneのExcelアプリで、別のシ...
-
【マクロ】EXCELで読込したCSV...
-
【条件付き書式】シートの中で...
-
【マクロ】オートフィルターの...
-
【マクロ】3行に上から下に並...
-
vba テキストボックスとリフト...
-
【マクロ】A列にある、日付(本...
-
ページが変なふうに切れる
-
エクセルのVBAで集計をしたい
-
エクセル
-
Excelファイルを開くと私だけVA...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelファイルを開くと私だけVA...
-
エクセルについてどう関数を使...
-
マクロ・VBAで、当該ファイルの...
-
エクセルのセルに画像は埋め込...
-
エクセルで、一部のセルだけ固...
-
【マクロ、画像あり】A表かB表...
-
エクセルでカウントする
-
【マクロ】コードを少しでも、...
-
VBA_日時のソート
-
エクセルで教えてください。 例...
-
エクセル 月間シフト表で曜日ご...
-
セルの左に余白を付ける
-
エクセル
-
エクセルについて教えてください
-
2枚のエクセル表で数字をマッチ...
-
ExcelのIF関数との組み合わせの...
-
エクセルのファイルのコピーを...
-
エクセルで二つのブックの違い...
-
空白処理を空白に
-
Excelのチェックボックスについ...
おすすめ情報