• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:シートの再計算を自動で)

シートの再計算を自動で

このQ&Aのポイント
  • 先日こちらでお世話になりまして、A1からA10の範囲の数字が3か5になるとシート見出しが赤くなる方法を教えていただきました。しかし、他のシートでは同じコードを記述しても同じ変化が起こらず、シートの再計算をする必要がありました。自動でシートの再計算を行う方法を教えていただきたいです。
  • A1からA10の範囲の数字が3か5になるとシート見出しが赤くなる方法を教えていただきましたが、他のシートでは同じコードを記述しても同じ変化が起こらず、シートの再計算を手動で行う必要があります。自動でシートの再計算を行う方法はありますか?
  • 以前にA1からA10の範囲の数字が3か5になるとシート見出しが赤くなる方法を教えていただきました。しかし、他のシートでは同じコードを記述しても同じ変化が起こらず、シートの再計算を手動で行う必要があります。シートの再計算を自動で行う方法はありますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

Visual Basicをクリックしてからプロジェクトエクスプローラを選択して表示し、This Workbookを選択します。右の窓には次のコードを入力することでよいでしょう。 Private Sub WorkBook_SheetChange(ByVal Sh As Object, ByVal Source As Range) If WorksheetFunction.CountIf(Range("A1:A10"), 3) > 0 _ Or WorksheetFunction.CountIf(Range("A1:A10"), 5) > 0 Then ActiveSheet.Tab.Color = 255 Else ActiveSheet.Tab.ColorIndex = -4142 End If End Sub

tomomo20
質問者

お礼

KURUMITO様、ありがとうございます。おかげさまで、自動で赤くなるようになりました。 とても助かりました。本当にありがとうございましたm(__)m。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.1

ツール - オプション - 計算方法 で、計算方法が手動になっていないか確認してください。 手動になっていたら、自動に変更してください。

tomomo20
質問者

お礼

nattocurry様、ありがとうございます!計算方法は自動になっていました。でも何故か自動で計算されないので困っていました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • シート名を自動で

    久し振りにお世話になります。 よろしく御願いします。 windowsXP EXCELL2003 です。 下記を採用しました。 表題 「エクセルのセルに名前を入力するだけで自動的にそのシートタブもその名前に」 アドレス http://oshiete1.goo.ne.jp/qa5775792.html 内容 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Cells = Range("A1") And Range("A1") <> "" Then ActiveSheet.Name = Range("A1").Value End If End Sub でばっちりできました。 ただ 何かのミスで A1 の内容を変更した場合シート名が変わりません。 1 もし A1 が変更された時シート名も変更されることが可能でしょう  か。 2 大変厚かましいのですが追加の要望としてシートの色(コード20)  もつけられれば良いのですが。 もし可能ならば上記の「内容」をどう変更すればいいかご教授ご指導を仰ぎたいです。 よろしく御願いします。

  • Excel(エクセル)で非表示シートをVBAで計算するには?

    よろしくお願いします。 エクセルで1つのブックにAシート~Fシートまであるとします。 再計算させると、すべてのシートを再計算してしまうため時間がかかるので、マクロの自動記録を利用して「Aシート→Bシート→Cシート→Dシート→Eシート」と、必要なシートだけを順番に計算させる事で、処理時間短縮をさせる事をする事ができました。 EシートとFシートは表示させておいて、その他のA~Dシートは非表示にしました。 Eシートには、A~Dシートで計算した結果が表示されるようになっています。 ですが、A~Dシートを非表示にして作成したマクロを実行すると、エラーが出てしまい上手くできません。 A~Dシートを非表示にしていても、ブック全体を再計算させる事はできます。 非表示にしたシートをマクロで計算させるには、どのようにしたら良いでしょか? アドバイスをお願い致します。 登録したマクロは下記のようになっています。 Sub 計算() Sheets("Aシート").Select ActiveWorkbook.PrecisionAsDisplayed = False ActiveSheet.Calculate Sheets("Bシート").Select ActiveWorkbook.PrecisionAsDisplayed = False ActiveSheet.Calculate Sheets("Cシート").Select ActiveWorkbook.PrecisionAsDisplayed = False ActiveSheet.Calculate Sheets("Dシート").Select ActiveWorkbook.PrecisionAsDisplayed = False ActiveSheet.Calculate Sheets("Eシート").Select ActiveWorkbook.PrecisionAsDisplayed = False ActiveSheet.Calculate Sheets("Eシート").Select End Sub

  • 指定記号のみ別シートにコピー

    sheet1(表-1)の入力文字「A,C,E」をsheet2へコピーする。 sheet2(表-3)のように[A,C,E」以外及びsheet1空白のセルはsheet2でも空白としたい。 その際、sheet2(表-2)に入力済みの記号「○、●、◎」はそのまま残したい。 下記のコードでは、sheet2に入力済みの記号「○、●、◎」が消えてしまいます。 どなたかコードがわかる方よろしくお願いします。 Sub シートコピー() Dim r As Range For Each r In Worksheets("Sheet1").Range("B1:D5") If WorksheetFunction.CountIf(Range("A8:A10"), r.Value) Then Sheets("sheet2").Range(r.Address).Value = r.Value Else Sheets("sheet2").Range(r.Address).Value = "" End If Next End Sub セルA11に"0"を入力して実行してもsheet1空白セルはsheet2でも空白となり困っています。

  • セルの値によって、シート見出しの色を変更したい

    エクセル2007を使用してします。以前に、 「ある報告書の全シートを対象として A1セルにkさんの名前が入力されたらそのシートのシート見出しが緑になり、A2セルにmさんの名前が入力されたらそのシートのシート見出しが青になり、なおかつ、kさんとmさん2人の名前が入力されたらそのシート見出しの色が黄色に自動でなるマクロの記述を教えてください」と質問し、 Private Sub Worksheet_Change(ByVal Target As Range) a1 = Range("a1").Value a2 = Range("a2").Value f = 0 If a1 = "k" Then f = f or 1 If a2 = "m" Then f = f or 2 c = Switch(f = 1, 4, f = 2, 5, f = 3, 6, True, xlNone) ActiveSheet.Tab.ColorIndex = c End Sub 上記のように御回答を頂きましたが、今後、入力する名前が変更する事を考えて、A1・A2セル共に、 何か文字が入力されたら(もしくは空白でなければ)と条件を変えたいと思い、色々試してみたのですが、 上手くいきませんでした。 何方か、条件に合うコードの記述を教えてください。宜しくお願いします。

  • 【Excel VBA】ワークシートの表示(続き)

    すみません。 追記が出来なかったため、コードの続きをこちらに記載します。 For i = 1 To 12 If actsht = tmp(i) Then Flag = 1 Anser = MsgBox("翌月分シートを作成しますか?", vbYesNo + vbDefaultButton1, "確認") If Anser = vbYes Then ActiveSheet.Copy After:=ActiveSheet ActiveSheet.Name = tmp(i + 1) Sheets(actsht).Tab.ColorIndex = 2 Sheets(actsht).Range("B3").Value = Sheets("Sheet2").Range("A1").Value Sheets(actsht).Range("B4").Value = Sheets("Sheet2").Range("A2").Value ActiveSheet.Range("A2").Select Exit For ElseIf Anser = vbNo Then Exit For End If End If Next If Flag = O Then MsgBox ("新しいワークシートを作成出来ません。") End If If actsht = tmp(i) Then If Sheets(元データ).Visible = False Then Sheets(元データ).Visible = True End If End If End Sub

  • 特定のシートだけ再計算させない

    お世話になります。 sheet3だけを再計算させないようにするにはどのようにコードを書けばよいでしょうか? sheet2をsheet3の数式で参照しています。 5万件程データがあるので、sheet2に変更があると再計算で時間がかかってしまいます。 オプションで設定してみたところ、すべてのシートが対象になってしまいます。sheet2は計算式があるので、計算させたいのです。 再計算させたいシートモジュールに下記のようにしています。 Private Sub Worksheet_Activate() ActiveSheet.EnableCalculation = True ActiveSheet.EnableCalculation = False End Sub どなたかご教授お願いします。

  • 複数シートにわたる連番を自動作成するfunctio

    複数シートにわたる連番を自動作成するfunction関数をoffice 365のEXCELで作りました。 variant型で定義しており、連番途中に右側のセルが空白だった場合、対象セルを空白にし、上のセルが空白だった場合は、数字が出てくるセルまで上に行き+1します。 左端のシート以外の最上のセルは左のシートの最大の数字+1に設定しています。 Function renban1() As Variant Dim temp As Integer, a_row As Long, a_col As Long Dim range1 As Range, ind As Integer Const a_spc = " " ind = ActiveSheet.Index a_row = ActiveCell.Row a_col = ActiveCell.Column renban1 = a_spc Set range1 = Range(Cells(a_row, a_col + 1), Cells(a_row, a_col + 7)) If a_col = 2 And a_row = 5 Then renban1 = 1 Exit Function End If If a_row = 12 And a_col = 2 Then If ind = 1 Then renban1 = 2 Exit Function Else If WorksheetFunction.CountA(range1) = 0 Then '右が空白 renban1 = a_spc Exit Function Else For temp = 80 To 12 Step -2 If ActiveSheet.Previous.Cells(temp, a_col).Value <> a_spc Then '上が空白以外≒数値 renban1 = ActiveSheet.Previous.Cells(temp, a_col).Value + 1 Exit Function End If Next temp End If End If End If If a_row > 10 And a_row < 82 Then '番号のセル範囲 If WorksheetFunction.CountA(range1) = 0 Then '右が空白 renban1 = a_spc Exit Function Else For temp = a_row - 2 To 12 Step -2 If Cells(temp, a_col).Value <> a_spc Then '上が空白以外≒数値 renban1 = Cells(temp, a_col).Value + 1 Exit Function End If Next temp End If End If End Function これで、動作自体は正しいのですが、いちいちセルをクリックしてENTERを押さないと正しく更新されません。(トリガーが無いので当然と言えなくもないのですが) 1シートに35行ほどあり、同様のシートが11枚あるので、出来れば自動で更新させたいのですが、calculateやapplication.volatileを試してもうまくいきませんでした。 VBAにお詳しい方、どうやれば良いか教えて下さい。よろしくお願い致します。

  • 印刷後のVBAの実行 (2)

    Private Sub Workbook_BeforePrint(Cancel As Boolean)   If ActiveSheet.Name = "Sheet1" Then     If Range("D6").Value = "" Then       Cancel = True       MsgBox ("名前を入力してください")       Range("D6").Select       Exit Sub     End If   Else     If ActiveSheet.Name = "Sheet2" Then       If Range("C11").Value = "" Then         Cancel = True         MsgBox ("受付時間を入力してください")         Range("C11").Select         Exit Sub       End If     Else              Exit Sub     End If   End If   ActiveSheet.Range("A70:Y70").Copy   If Worksheets("Sheet3").Range("A1").Value = "" Then     Worksheets("Sheet3").Range("A1").PasteSpecial Paste:=xlPasteValues   Else     Worksheets("Sheet3").Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial _       Paste:=xlPasteValues   End If   Application.CutCopyMode = False   ActiveSheet.Range("A1").Select End Sub 先日、上記のコードを回答者の方から教えてもらい、とても助かっていますが sheet1のD5に「不要」という文字が入っていた場合、 sheet3への貼り付け(23~30行目の作業)をキャンセルして、最後にsheet1のA1を選択するようにはどの様にしたらいいでしょうか?

  • EXCELのシート名自動入力

    EXCELでシート名にセルA1の値を自動入力したいので、 下記のマクロを使いましたが、いちいちマクロを実行しないと自動入力できません。 Public Sub SheetName() ActiveSheet.Name = Range("A1").Value End Sub これを、マクロを実行しなくても、セルA1の値が変わった時点で 自動的にシート名も変わるようにできないでしょうか?

  • 【Excel VBA】フォームボタンの操作

    IF文の中でフォームボタンを自動でクリックする処理を追記したく、 以下のコードで実行しましたが、エラーとなりました。 IF文のSubプロシージャが閉まっていないと弾かれたのですが、 どう修正すれば正常に機能しますでしょうか? ここから↓ actsht = ActiveSheet.Name For i = 1 To 12 If actsht = tmp(i) Then Flag = 1 Anser = MsgBox("翌月分シートを作成しますか?", vbYesNo + vbDefaultButton1, "確認") If Anser = vbYes Then ActiveSheet.Copy After:=ActiveSheet ActiveSheet.Name = tmp(i + 1) Sheets(actsht).Tab.ColorIndex = 2 Sheets(actsht).Range("B3").Value = Sheets("Sheet2").Range("A1").Value Sheets(actsht).Range("B4").Value = Sheets("Sheet2").Range("A2").Value ActiveSheet.Range("A2").Select Private Sub clear_Click() '※ End Sub '※ Exit For ElseIf Anser = vbNo Then Exit For End If End If Next

専門家に質問してみよう