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 参照しているセルに色がついていたら、返すセルにも色もつける
その他(コンピューター・テクノロジー)
-
8
色のリンクは出来ますか?【エクセル】
Access(アクセス)
-
9
Excelでセル参照したとき、書式も一緒に持ってくるには?
Windows Vista・XP
-
10
別シートのセルの色も同じ色に変更する方法を 教えてください
Excel(エクセル)
-
11
別シートのデータを参照してセルの色を塗り替えたい
Excel(エクセル)
-
12
エクセル 別シートへのコピーを,セルの色や太字斜体までやりたい。
Excel(エクセル)
-
13
エクセルで隣(右or左)のセルと同じ文字色にしたい
Excel(エクセル)
-
14
文字の色も参照 VLOOKUP
Access(アクセス)
-
15
特定セルの内容を更新したら、その更新日を自動的に表示する方法について
Excel(エクセル)
-
16
Excel 関数を使ってデータと一緒にその書式もコピーしたいのですが・・・
Excel(エクセル)
-
17
EXCELでセル参照の際に、参照元セルの色を参照先セルの色を反映させたい。
その他(Microsoft Office)
-
18
エクエルで隣のセルの文字が赤色だった場合は指定するセルも赤色にしたい
Excel(エクセル)
-
19
例えばはe.g.?それともex.?
英語
-
20
EXCELで特定のセルに表示された項目をヘッダーやフッターに出力するには
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelデータをコピペして、ペー...
-
スプレッドシート、Excelでの数...
-
エクセルの関数について教えて...
-
スプレッドシートで使う数式を...
-
Microsoft Officeの中古は信用...
-
エクセルで会社の従業員のデー...
-
Excelで50個のセルに同じ文字を...
-
エクセルの表で1年間の曜日を...
-
エクセルでの特別な文字を上に...
-
エクセルで不等号記号(≠)が上に...
-
エクセルでB列でフィルターをか...
-
エクセルでセルに標準で入力さ...
-
Excelで、項目の種類ごとにカウ...
-
【マクロ】アクティブセルにブ...
-
EXCELの質問です 119から足した...
-
【マクロ】アクティブセルの、...
-
【マクロ】アクティブセルの行...
-
エクセルの空欄をつめて、次の...
-
Excelの数式について教えてくだ...
-
非表示列の再表示に失敗
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA、別ブックへ転記す...
-
エクセルでの作業計算方法について
-
時間によってファイル名が変わ...
-
【関数】適切な文字数の数字を...
-
Excelについて教えてください
-
エクセル初心者です 関数の入れ...
-
【マクロ】ファイル名の変更に...
-
UNIQUE関数が使えないバージョ...
-
エクセルの計算
-
【関数】先頭だけにある、半角...
-
Excelで、決まった行を繰り返し...
-
Excelでセルの値が同じか...
-
LOOKUP関数を使えばいいのでし...
-
Excel
-
はがきについて。
-
エクセルの条件付き書式につい...
-
エクセルのデーターが2か月前の...
-
エクセル②
-
エクセルで「-0.0」と表示さ...
-
Microsoft1Officeの互換ソフト...
おすすめ情報