アプリ版:「スタンプのみでお礼する」機能のリリースについて

Excel2013を使っています。
計算で誤差が出ていないかをチェックする為に、
C1のセルに「=IF(B1=0,0,1)」の関数が入っております。

誤差が発生しC1のセルが"1"になった際に、シートの見出しの色が自動的に変わるように設定したいのですが、どのような設定がありますでしょうか?
シート見出しの色はわかりやすく赤色にしたいです。
シートは日付別になっている為、1~31まであります。

ご指導をよろしくお願いします。

A 回答 (6件)

#3の回答者です。



質問者さんには申し訳ありませんが、私からは、これ以上は、私自身のマクロについてはコメントするのは控えさせていただきます。おそらく、マクロコードはきちんとした試験が出来ていないようです。ただ、3つの種類のマクロコードをいきなりというのは慣れていないと無理です。

せめて、#1さんのコードは、それ・そのものをチェックしているのですから、それだけでも試されれば、明確に結果が分かるかと思います。

>もう少しVBAを勉強してみたいと思います。
それは、結構ですが、自分が望むことと、期待する結果が得られるのは当分の間は先のことになるのだと思っていたほうがよいです。ただ、3ヶ月我慢さえすれば、一般の回答者のVBAのレベルと同じところまではできるようになれます。(ただし、Webサイトでは、デタラメも等しい所がありますので、書籍を購入された方がよいかもしれません)

エラーチェックですから、縦計と横計の引き算の計算式などに該当するのだと思います。
 例 B1: =縦計-横計 (ただし、小数点以下の数字が含まれている時は、この計算はでは、0が出ないことがあります)

同じシート内でエラーフラッグを立ったままにして、別のシートに移るよりも、条件付き書式でセルの色を替えるぐらいで十分ではないかと思います。
    • good
    • 1

色が変わらないですか?



ソースコードの配置方法を説明します。
1.Worksheet_Changeの配置方法
http://www9.plala.or.jp/siouxsie/excel/date06.html
を参照してください。
そして、Sheet1、Sheet2....のすべてのシートに貼り付けてください。

2.DoCheckGosaの配置方法
 ご存じだと思いますが、念のため
   http://officetanaka.net/excel/vba/beginner/10.htm
の通りに、標準モジュールを追加し、関数を貼り付けてください。
    • good
    • 1

No.1です。



>やってみましたがシート見出しの色は変わらず・・・
前回投稿した方法はご自身でマクロを実行する方法です。

Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面のカーソルが点滅しているところに
前回のコードをコピー&ペーストし、マクロを実行する場合は
Alt+F8キー → マクロ → マクロ実行です。

※ C1セルが「1」になった時点でシート見出しの色を変えたい!という場合は
他の方が回答されているようにシートモジュールで
Changeイベント(今回は再計算された時点でマクロ実行)の方法にしなければなりません。m(_ _)m
    • good
    • 1

>C1のセルが"1"になった


一応、数値の1という扱いにさせていただきます。

Calculation イベントが働けば、起動するはずです。
つまり、C1の数式をなしにしても、変化しません。
C1に数式があって、計算がされた場合のみです。
C1に手動で書き換えても変化しません。
B1が0にならないといけません。
=IF(B1=0,0,1)


'//ThisWorkbook モジュール(ここ1つだけで良いです)
'//除外が必要な場合は、If Sh.Name <>"abc" Then Exit Sub と最初に加えてください。

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
If Sh.Range("C1").Value2 = 1 Then
 Sh.Tab.ColorIndex = 3
Else
 Sh.Tab.ColorIndex = xlColorIndexNone
End If
End Sub
    • good
    • 2
この回答へのお礼

ご回答ありがとうございました。やってみましたがシート見出しの色は変わらず、私がVBAをよく理解していないので、どこが間違っているのかもわからない状態です・・・
もう少しVBAを勉強してみたいと思います。
ありがとうございました。

お礼日時:2017/11/14 19:45

以下の感じでいかがでしょうか。



各シートに以下の関数を追加
=======================
Private Sub Worksheet_Change(ByVal Target As Range)
Call DoCheckGosa(Target.Parent, Target)
End Sub
=======================

そして、標準モジュールに、以下の関数を追加
=============
Public Sub DoCheckGosa(sht As Worksheet, rng As Range)
  'B1の数字が主導で変わった場合ののみ、C1をチェックするようにしている
'もし、B1も数式で、自動的に変わる場合、下のrow,columnの比較を外しても大丈夫です。
If (rng.Row = 1) And (rng.Column = 2) Then
If sht.Range("C1").Text = 1 Then
sht.Tab.ColorIndex = 3
Else
sht.Tab.ColorIndex = xlNone
End If
End If
End Sub
    • good
    • 1
この回答へのお礼

ご回答ありがとうございました。やってみましたがシート見出しの色は変わらず、私がVBAをよく理解していないので、どこが間違っているのかもわからない状態です・・・
もう少しVBAを勉強してみたいと思います。
ありがとうございました。

お礼日時:2017/11/14 19:45

こんばんは!



標準モジュールです。

Sub Sample1()
Dim k As Long
For k = 1 To Worksheets.Count
With Worksheets(k)
If .Range("C1") = 1 Then
.Tab.ColorIndex = 3
Else
.Tab.ColorIndex = xlNone
End If
End With
Next k
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。やってみましたがシート見出しの色は変わらず、私がVBAをよく理解していないので、どこが間違っているのかもわからない状態です・・・
もう少しVBAを勉強してみたいと思います。
ありがとうございました。

お礼日時:2017/11/14 19:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A