外出自粛中でも楽しく過ごす!QAまとめ>>

こんにちは。OSはWindowsNT、Excel97です。
PC初心者さんが使うエクセルの見積データを作成しており、より簡単に操作して頂くためにコマンドボタンで操作を簡略化したいと思っています。
そこで質問なのですが、ファイルを閉じようとする時、よく右隅の×ボタンを押し、「保存しますか?はい、いいえ、キャンセル」という画面がでます。私の作っているデータでは上書されると困るので保存をして欲しくないのですが、その辺が使い手の方には分かり難いようで、よく上書されてしまいます。読み取り専用にするとか保護設定するとか方法はあるとは思いますが、データ作成上それが出来ません。出来れば、コマンドボタンで「終了ボタン」を作り、保存せずに終了できるようにしたいのです。こういう事って可能でしょうか?
皆様、宜しくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

もう皆さんが既に回答されてますが、最初の質問に対しては、ブックを閉じるだけ(Excelは終了しない)ならば


  Sub 保存()
    ActiveWorkbook.Close False
  End Sub
という書き方もあります。FalseをTrueに替えると、必ずブックを保存して終了します。
また、Excel(アプリケーション)ごと閉じるならば
  Sub 保存()
    Application.DisplayAlerts = False
    Application.Quit
  End Sub
でどうでしょうか。

また、フォントのサイズについては、ユーザーフォームを作ってボタンを配置しているのならば、既に回答されている通りですが、もしシートに直接ボタンを貼り付けているのでしたら、ボタン右クリック→テキストの編集という方法もあります。
 
    • good
    • 0
この回答へのお礼

ありがとうございました。
早速試してみます。

お礼日時:2001/11/17 12:37

コマンドボタンのフォントサイズは


1.ボタンを右クリック->プロパティを選択
2.Fontの欄をクリックすると右に点が3つのアイコンが表示されるので
  それをクリック
3.コマンドボタンのフォントの種類やサイズが選択できる画面が
  表示されますので、そこで変更できます。
    • good
    • 1
この回答へのお礼

ありがとうございました。
早速試してみます。

お礼日時:2001/11/17 12:37

ボタンを右クリックし、プロパティを表示してください。


そのプロパティにFONTの項目があります。これを選択すると、フォントが変更できるはずです。
    • good
    • 0
この回答へのお礼

ありがとうございました。
早速試してみます。

お礼日時:2001/11/17 12:36

はじめまして。

このような感じでいかがでしょう?
(コマンドボタン右クリック→「コードの表示」で作成しています)

Private Sub CommandButton1_Click()
   Application.DisplayAlerts = False
   Application.Caption = Empty
   Workbooks.Close
   Application.DisplayFullScreen = False
   MenuBars(xlWorksheet).Reset
   Application.Quit
End Sub

この回答への補足

ありがとうございました。
早速試してみます。
ところで新たに質問なのですが、コマンドボタンのフォントサイズはどうやって変更したら良いのでしょうか?
宜しくお願いします。

補足日時:2001/11/16 15:54
    • good
    • 0

Sub Auto_Close()


Application.DisplayAlerts = False '閉じる際に確認メッセージを出さない
ActiveWorkbook.Close '現在開いているブックを閉じる
End Sub

これで駄目でしょうか?

この回答への補足

ありがとうございました。
早速試してみます。
ところで新たに質問なのですが、コマンドボタンのフォントサイズはどうやって変更したら良いのでしょうか?
宜しくお願いします。

補足日時:2001/11/16 15:52
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q【Excel VBA】マクロでExcel自体を終了させたい

環境:WindowsXP、Excel2003

マクロでエクセルを終了(ブックを閉じて、アプリケーション自体も終了)させたいのですが、以下のコードではアプリケーションが閉じてくれません。

ThisWorkbook.Close
ExcObj.Quit
Application.Quit

どこか悪いところはありますでしょうか?

よろしくお願いします。

Aベストアンサー

普通に考えれば質問者のコードで上手くいきそうですが
hana-hana3さんの回答にもあるようにThisWorkBook.Closeでコード終了となりますので
Application.QuitをThisWorkBook.Closeの前にもってこないといけません。
Application.Quitはそれがあるプロシージャのコードが全て終わるまで
その実行を保留するちょと特別動作をします。

'-------------------------------------
 Application.Quit
 ThisWorkbook.Close
'-------------------------------------
 
 

QExcel VBAで「プログラム実行」ボタンと「プログラム停止」ボタンをつけたい

ExcelでVBAを使いアプリをつくっています。
プログラムを実行させるボタンはもちろんつくれるのですが、
プログラムを停止させるボタンをつくるにはどうしたら良いのかと悩んでいます。

ボタンに登録できるのはひとつのプロシージャですよね。
とすると「他のプロシージャを止める」プロシージャをつくらねばならないのでしょうか。とするとどうやって・・・?

Aベストアンサー

s_husky です。

状況が判明したので再回答!

Public StopNow As Boolean

Public Sub Test()
  Do Until StopNow
    Sheets(1).Cells(1, 1) = Sheets(1).Cells(1, 1) + 1
    Pause 10
  Loop
  If StopNow Then
    MsgBox "Test の実行をストップしました。"
  End If
End Sub

Public Sub Pause(ByVal PauseTime As Single)
  Dim Finish As Single
  
  Finish = Timer + PauseTime
  Do
    DoEvents
  Loop Until Timer > Finish
End Sub

Private Sub CommandButton2_Click()
  StopNow = True
End Sub

Private Sub CommandButton1_Click()
  Test
End Sub

起動したプロシージャを止める必要があるということはループ処理と理解。
ならば、ループの条件を操作すれば宜しいかと。
CommandButton1 で起動した Test は CommandButton1 で止めれます。

Application.OnTime TimeValue("16:30:00"), "Test"

で起動しようと同じ理屈。

Application.OnTime は、一種の起動ツール。
当然に停止機能もあるが、停止を制御するには上記のような仕掛けが必要と思います。

s_husky です。

状況が判明したので再回答!

Public StopNow As Boolean

Public Sub Test()
  Do Until StopNow
    Sheets(1).Cells(1, 1) = Sheets(1).Cells(1, 1) + 1
    Pause 10
  Loop
  If StopNow Then
    MsgBox "Test の実行をストップしました。"
  End If
End Sub

Public Sub Pause(ByVal PauseTime As Single)
  Dim Finish As Single
  
  Finish = Timer + PauseTime
  Do
    DoEvents
  Loop Until Timer > Finish
End Sub

P...続きを読む

QExcelマクロ ボタンをクリックするだけで、保存せずにシートを閉じる

こんにちは
やっと勉強する気になった超初心者です

表題の通りなのですが

1、コマンドボタンをクリック
2、Bookを保存せずに閉じる

という作業をしたいのですが
記録ではできない・・・と思いますので
どなたかご教授下さい

Aベストアンサー

単純に、自ブックの標準モジュールのマクロから
自ブックを閉じてエクセルを終了させられれば
良いのですよね?
他に開いているブックは無いものとして、

Sub Macro1()
ThisWorkbook.Saved = True
Application.Quit
ThisWorkbook.Close
End Sub

だけで良いのでは?

QExcel マクロ 閉じるボタン

閉じるボタンを無効化させたいです。
ユーザーフォームのではなくブック?ウィンドウ?のやつです。

シート上のコマンドボタンより閉じるようにし、
上書き保存をさせないようにしたいです。

×ボタンで閉じてもよろしいのですが、保存云々の表示が出ないようにし、
できるだけマクロの記述は少なくしたいです。(既に結構重めなので…)

一番したいことは上書きをさせないようにしたいです。

回答よろしくお願いします。

Aベストアンサー

WorkbookのBeforeCloseイベントを実装する。

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Cancel = True

End Sub
とすれば、無反応になります。

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call ActiveWorkbook.Close(SaveChanges:=False)

End Sub
とすれば保存せずワークブックを閉じます。

Qエクセル VBA ユーザーフォームを閉じる

ユーザーフォームを開く時は
UserForm1.Showですが
閉じる時は?
UserForm1.Close
だとコンパイルエラーになります。
End
にするしかないですか?

Aベストアンサー

Unload Me とか Unload UserForm1 でユーザーフォームを閉じることができます。

Qユーザーフォームを表示中にシートの操作をさせるには

ユーザーフォームを表示中にシートの操作をさせる事はできるのでしょうか。
セルへの入力、画面のスクロールなどは、ユーザーフォームからマクロを実行させたり、.hideでユーザーフォームを一時的に隠すなどすればいいのでしょうが、そういう手段をとらないでユーザーフォームを表示中にシートの操作をさせる事はできるのでしょうか。

Aベストアンサー

ユーザフォームの
ShowModalプロパティを
falseにすればよいかと。

Qエクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?

エクセルのVBAでユーザーフォームの中に
テキストボックスとラベルがあります。

ラベルの縦幅とテキストボックスの縦幅は
同じです。(文字1行分くらい)

そのテキストボックスの左隣にラベルを置いて、
項目名的なものを表示させたいと思うのですが
ラベルの値が上に寄っているので、垂直方向に
中央揃えさせたいのですが、設定の仕方が
分からず困っています。

ちなみにエクセルはXPで、VBAは詳しくありません。
詳しくないけど調べながらちょっとずついろいろ
作業しています。

どうぞよろしくお願いします。

Aベストアンサー

文字の上下中央設定は、確かにできませんね。
代案ですが、次のような操作はいかがでしょうか。

1.双方を選択した状態でプロパティを表示し、AutuSize の値を True にする。
2.前回のようにコントロールの位置を上下中央で揃える。
3.各コントロールの長さ(幅)や文字サイズを調整する。

QユーザーフォームでTextBox1にカーソルを移動したい

お世話になっております。

ちょっと前に http://bit.ly/2bBRhzo で、
ユーザーフォームからNASの中にある図面(pdf)を
タブレットの画面に表示するというマクロを頂きました。
アドバイスして下さったみなさん、ありがとうございます。

ものすごく良く出来たマクロで、
びっくりしてるのですが、1点追加したい機能があります。
画像を見て頂ければおわかりのように、
ユーザーフォーム上に、テキストボックスが2つあります。

2段目右の「クリア上下」というボタンをタップしたら、
テキストボックスが2つともクリアになるのですが、
「クリア上下」をタップした後、
マウスカーソルが上のテキストボックス(TextBox1)に移動するようにしたいと思っております。

素人の感覚で考えると、「Range("A1").Select」で、
カーソルが「A1」セルに移動するので、

Range("TextBox1").Select とか
TextBox1.Value = ""  とかで、

マウスカーソルがTextBox1の中に移動するような気がします。
ですが、実際にやってみたのですが、
両方とも機能しません。

Range("TextBox1").Select エラー
TextBox1.Value = "" 空欄になるだけでカーソルの移動なし

という状況です。

すいませんが詳しい方、説明の上手な方、直接、コードで説明できる方、
お手数ですがユーザーフォームでボタンを押したらカーソルがTextBox1に
移動する方法を教えて下さい。よろしくお願いします。

------------------------

追記
http://bit.ly/2bBRhzo でコードを書いて下さった。
ki-aaaさん、ありがとうございます。

軽くカスタムして使っておりますが、
細かいところまで、しっかり作りこんで頂いて
本当に感謝しております。

この場を借りて改めてお礼させて頂きます。
ありがとうございました。

※特に以下の件はチョー助かってます。

1)ボタン1発でパターンAとBの両方に対応している。
2)ファイルパスの書き換えが1か所
  ※NASのフォルダーが深いので助かりした。
3)「Sheet2」への書き込み
  ※忘れてました!サンプルにMacro1を記載しておいて良かったです

お世話になっております。

ちょっと前に http://bit.ly/2bBRhzo で、
ユーザーフォームからNASの中にある図面(pdf)を
タブレットの画面に表示するというマクロを頂きました。
アドバイスして下さったみなさん、ありがとうございます。

ものすごく良く出来たマクロで、
びっくりしてるのですが、1点追加したい機能があります。
画像を見て頂ければおわかりのように、
ユーザーフォーム上に、テキストボックスが2つあります。

2段目右の「クリア上下」というボタンをタップしたら、
テキストボッ...続きを読む

Aベストアンサー

「TextBox1.SetFocus」ではダメですか?

QExcel VBA でExcelを終了したいのですが・・

Excel VBA を使い、下記「Owari」をセットしたボタンを押すと、
開かれているExcelデータ を保存することなく、完全にCloseし、
Excel自体が完全に消えることを目的にしています。

Sub Owari()
Workbooks("ABC.xlsm").Close SaveChanges:=False
Application.Quit
End Sub

ところが、実行すると、確かに ABC.xlsm は消えるのですが、
Excel は残ったままです。
Excel が完全に消えて Windows のメイン画面にしたいのですが、
どこが間違いなのでしょうか。

Aベストアンサー

解答は既に出ていますが、この件は、かなり前から知っている割には、そういう現象だというしか認識ありませんでした。だから、Close と Quit の順番を逆にするということだけで、終わらせていました。

Excel2003ぐらいまでは、こんな問題は、クローズアップされることがありませんでしたから。
今まで、2003のコードでは順調に終了できていたものが、2007以降ではできないので、気がついたからです。何か違いがあるのかもしれません。

#2さんのモーグのサンプルコードのように、あくまでも、Closeメソッドを発生させないで、Saveでつないでいき、最後に、Application.Quit と入れる方法は、Microsoft 推奨のようです。

'//
Sub myQuit_TEST()
Dim wb As Workbook
 For Each wb In Workbooks
  If Not (wb Is ThisWorkbook) Then
   If wb.Saved = False Then wb.Save '保存
    wb.Close False
  End If
 Next
  '自ブックの保存します
  If ThisWorkbook.Saved = False Then ThisWorkbook.Save
  Application.Quit
End Sub
'///

Closeメソッドで、その後のコードがすべてが破棄されるわけではなく、ThisWorkbook モジュール側のBeforeCloseイベントはExcel側で受け取っていますね。
だから、

'ThisWorkbook モジュール
Private Sub Workbook_BeforeClose(Cancel As Boolean)
 Application.Quit
End Sub

このように、最後にQuit を入れてあげても終わることが出来るはずです。

参考にした所は、[Application.Quitの誤解]
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_800_060.html

解答は既に出ていますが、この件は、かなり前から知っている割には、そういう現象だというしか認識ありませんでした。だから、Close と Quit の順番を逆にするということだけで、終わらせていました。

Excel2003ぐらいまでは、こんな問題は、クローズアップされることがありませんでしたから。
今まで、2003のコードでは順調に終了できていたものが、2007以降ではできないので、気がついたからです。何か違いがあるのかもしれません。

#2さんのモーグのサンプルコードのように、あくまでも、Closeメソッドを発...続きを読む

QExcel VBAで、ユーザーフォームの値を、モジュールで使用したい。

VBA初心者です。(おそらく)基本的な質問で、申し訳ありません。
ユーザーフォーム1には、テキストボックス1とコマンドボタン1が配置されているとします。

Sub TEST ()
Dim N
Userform1.Show
MsgBox N
End Sub

Private Sub CommandButton1_Click()
Dim N
N = TextBox1.Text
UserForm1.Hide
End Sub

Sub TESTを実行した時に、ユーザーフォーム1からNの値を引き継ぐには、どうしたら良いのでしょうか?よろしくお願いします。

Aベストアンサー

'モジュールに変数宣言(グローバル変数)
'Public 宣言すると他のモジュールやフォームと
'共有できる変数になります。
Public AA As String

'sample
'A1 を実行する。

Sub A1()
Call A2
AA = InputBox("input", , AA)
End Sub

Sub A2()
AA = InputBox("input", , AA)
End Sub


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

人気Q&Aランキング