- ベストアンサー
エクセルの特定シートを完全に手動計算にする方法
doara_2011の回答
こんな感じでどうでしょう? Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim ans As VbMsgBoxResult If Not ThisWorkbook.Saved Then ' 保存されていない場合、ダイアログを出力する。 ans = MsgBox("'" & ThisWorkbook.Name & "'の変更を保存しますか?", _ vbExclamation + vbYesNoCancel + vbDefaultButton3) Select Case ans Case vbYes ' はいを選択した場合 Cancel = False ThisWorkbook.Save ' ここでブックの保存を行う。 Case vbNo ' いいえを選択した場合 Cancel = False ThisWorkbook.Saved = True ' 保存したことにする Case vbCancel ' キャンセルを選択した場合 Cancel = True ' 閉じるのをキャンセルする。 End Select Else ' 保存されていればそのままブックを閉じる Cancel = False End If ' ブックを閉じる事を選択した場合のみ自動計算モードにする。 If Not Cancel Then Application.Calculation = xlCalculationAutomatic End Sub VBAでエクセルの出す「保存しますか?」の問いに答えた結果を取得することは できませんが、その問いの出力される条件はわかってますので、それに似た ダイアログを自前で出力し、答えた結果に従って分岐させているだけです。 なお、マクロはブラウザでの見やすさ優先のため、行頭には全角のスペースを 使用しています。 以上
関連するQ&A
- アプリケーションも閉じたいのですが
ブック(ファイル)だけじゃなくて アプリケーションも閉じたいのですが Private Sub Workbook_BeforeClose(Cancel As Boolean) ActiveWorkbook.Close SaveChanges:=True End Sub としたのですが、実際閉じるのはブックだけでアプリケーションは開いたままです。 「ウインドウを閉じる」を押して、ブックだけが閉じるのはわかるのですが 図のようにアプリケーション閉じるボタンを押してもウインドウ(ブック)しか閉じません。 Private Sub Workbook_BeforeClose(Cancel As Boolean) ActiveWorkbook.Close SaveChanges:=True Application.Quit End Sub にしても結果は同じです。 しかし、Workbook_BeforeCloseイベントがないファイルなら、 アプリケーション閉じるボタンを押しても全て終了できます。 Workbook_BeforeCloseイベントを使っても アプリケーションも閉じる方法を教えてください。
- ベストアンサー
- オフィス系ソフト
- エクセルVBA 保護シート&フィルタ実行 全シート
VBA超初心者です。 たくさんのシートのあるエクセルで、 シート保護後もフィルタを使用できるようにVBAを設定したいと思ってます。 (現在エクセル2000を使用してます) ネットで調べてVBAを設定してみました。 しかし下記のようにするとコンパイルエラーになってしまうのですが、 正しい方法を教えていただけると助かります。 Option Explicit Private Sub Workbook_BeforeClose(Cancel As Boolean) Application.CommandBars("Cell").Reset End Sub Private Sub Workbook_Open() With Application.CommandBars("Cell").Controls.Add( _ Type:=msoControlButton, Before:=1, Temporary:=True) .Caption = "AutoFilter" .OnAction = "ThisWorkbook.filter" End With With Worksheets.Select .Unprotect .EnableAutoFilter = True .Protect UserInterfaceOnly:=True End With End Sub Private Sub filter() On Error Resume Next Selection.AutoFilter End Sub
- ベストアンサー
- オフィス系ソフト
- excelをワンキーで終了させる方法はありますか
視覚と手に障害のある方がExcel2003(OSはWinXP)を使用しております。 Excelのシートは1枚だけで、計算式が入っております。使用者は数値を入力すると結果が自動的に読み上げられるようにしてあります。 シートの変更を保存する必要はないので下記マクロを組み込んで、保存せず終了できるようにしてあります。AltキーとF4キーを押すことでExcelが終了します。 Private Sub Workbook_BeforeClose(Cancel As Boolean) ThisWorkbook.Saved = True Application.Quit ThisWorkbook.Close True End Sub 使用者は口で操作するため、二つのキーを同時押しすることに苦労しております。ひとつのキーだけでシートを保存せずに閉じる方法はありませんでしょうか。 あるいはキー割り当てソフトでこの操作が実現可能でしょうか。 よろしくお願いします。
- ベストアンサー
- Excel(エクセル)
- Excel全シートの指定オブジェクトを選択
全てのシートに、「abc」という名前のオブジェクトが存在します。 ブックを閉じる際に、「abc」を全て非表示にしたいのですが、 全てのシートの「abc」を選択する、という構文がどうしてもわかりません。 ↓アクティブシートの「abc」を非表示にする。 Private Sub Workbook_BeforeClose(Cancel As Boolean) ActiveSheet.Shapes("abc").Visible = False End Sub ご教授お願い致します。
- ベストアンサー
- オフィス系ソフト
- フォームのボタンからのみexcelを終了したい
おねがいします。 都合上、フォームのボタンからだけexcelを終了したのです。 Private Sub CommandButton1_Click() Application.DisplayAlerts=False Application.Quit End Sub それに伴い、 右上のexcelのxボタン、シートのxボタンを無効化または非表示にしたいです。 Private Sub Workbook_BeforeClose(Cancel As Boolean) If CloseMode = 0 Then Cancel = 1 End If End Sub これで、エクセルxボタンは無効になりましたが、 フォームからの終了も出来なくなってしまいました。 フォームからのみ終了する方法を教えてください。
- 締切済み
- Visual Basic
- Excel 特定のシートを印刷不可にする方法
教えてください。 Excelで、特定のシートを印刷不可にする方法はありますでしょうか? Book全体で印刷不可にする方法は、以下 '========================== Private Sub Workbook_BeforePrint(Cancel As Boolean) Cancel = True '※1 タイトル = "ペーパーレス運動実施中!" スタイル = 48 'vbexclamation メッセージ = "印刷しないでください" 応答 = MsgBox(メッセージ, スタイル, タイトル) End Sub '========================== で可能なことは認識しています。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- excel vba 選択されたセルの範囲を別のセル
excel vba 選択されたセルの範囲を別のセルに書き込みたい。 お世話になっております。 乱筆乱文お許し下さい。 EXCEL VBAについてですが、或るブックを閉じる時(Private Sub Workbook_BeforeClose(Cancel As Boolean))にその時点でACTIVEなsheetの名前を指定シートの指定セルに書き込み、そのブックを開く時(Private Sub Workbook_Open())に指定シートの指定セルの値の名前sheetをACTIVEにすることは出来たのですが、もう一歩進んで、 ブックを閉じる時(Private Sub Workbook_BeforeClose(Cancel As Boolean))にその時点でselectされているcellの範囲(単一セル・複数セル共に、名前がついていたら名前、ついていなければrangeを表す文字列)を指定シートの指定セルに書き込み、そのブックを開く時(Private Sub Workbook_Open())に指定シートの指定セルの値の名前cell範囲をselectするようなことがやりたいのですが、私の検索の仕方が下手で、なかなか出てきません。どなたかご教示下さい。よろしくお願いします。
- ベストアンサー
- Excel(エクセル)
- エクセルのマクロを有効にしないと表示しないようにする方法
エクセルでマクロを有効にしないと、シートが表示されないように設定したいのですが、下記の様に(ほかの方の投稿から)入力すると三行目がエラーになります。素人なので、よくわかりません。どのようにしたら、マクロを有効にしないと全てのシートを表示しないようにできるのでしょうか? ご教授いただけますでしょうか Private Sub Workbook_BeforeClose(Cancel As Boolean) Sheets(\"Sheet1\").Visible = False Sheets(\"Sheet2\").Visible = False ActiveWorkbook.Protect Password:=\"error123\" End Sub Private Sub Workbook_Open() ActiveWorkbook.Unprotect Password:=\"error123\" Sheets(\"Sheet1\").Visible = True Sheets(\"Sheet2\").Visible = True Sheets(\"Sheet1\").Select End Sub
- 締切済み
- その他(業務ソフトウェア)
- 特定のシートのみ再計算させない方法は?
特定のシートのみ再計算させない方法はありませんか? 1つのBOOKに2つのシートがあり、 [sheet1]=自動計算 [sheet2]=手動計算 という設定を行いたいと考えています。 BOOKを分けずにスマートな方法はないでしょうか。
- ベストアンサー
- オフィス系ソフト
- エクセルVBAにて保存するとき
Private Sub Workbook_BeforeClose(Cancel As Boolean) If MsgBox("エクセルを終了してもよろしいですか?", vbYesNo) = vbNo Then Cancel = True Exit Sub End If Application.DisplayAlerts = False Application.Quit End Sub Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) MsgBox "そのボタンでは保存できません。" & vbCrLf & _ "雛形は残しておきましょう" & vbCrLf & _ "" & vbCrLf & _ "ツールバーの「マクロなし出力」から保存できます。" Cancel = True End Sub という二つのマクロをThisworkbookにいれてあるんですが、 この二つを有効(今は2つ目を'でコメント状態にしてあるので保存可)にすると保存できなくて困っています。 二つを有効にした時はどのようにほぞんすればいいですか?
- 締切済み
- Visual Basic
補足
お返事が大変遅くなり申し訳ありません。 教えて頂いた方法を検証したところ、ほぼ希望通りの結果になりました。 ただ、”擬似ダイアログ”をキャンセル→ブックを上書き保存→”本物ダイアログ”をキャンセル、とするとやはり自動計算に戻ってしまいました。 これはもうエクセルの仕様なのかな思います。 教えて頂いた方法を元に、もう試行錯誤してみます。 大変勉強になりましたどうもありがとうございました。