Excel VBAでユーザーフォームを作成し、ファイルを起動時にSheetを非表示にしてユーザーフォームのみ表示させるようにしました。

そうしたところ、

(1)実行ボタンをクリックすると作成されるExcelファイルも表示されなくなる
(2)終了ボタンをクリックするとユーザーフォームを含むExcelファイルだけが閉じるのではなく、Excelのアプリ自体が終了してしまう(実行ボタンで作成したExcelファイルは表示したままにしたいのに閉じてしまう)

という現象になってしまいました。

某書籍を参考にしてコードを書いたのですが、なぜかこのようになってしまいました。
※「★」が書籍に指示があった箇所です。

<ThisWorkbook>
Private Sub Workbook_Open()
Application.Visible = False '★
myForm.Show '★
myForm.MultiPage1.Value = 0 'マルチページ構成のため
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
'========== [×]ボタン,[Alt]+[F4]キーを無効にする ==========
Dim msg As String, title As String
msg = "[画面を閉じて終了する]ボタンから終了してください。"
title = "終了方法"
Dim res As Integer
Select Case CloseMode
Case vbFormControlMenu
res = MsgBox(msg, vbOKOnly + vbCritical, title)
Cancel = True
End Select
ActiveWorkbook.Save '★
Application.Visible = True '★
Application.Quit '★
End Sub

実行したいのは、

(1)ユーザーフォームを含むExcelファイルを起動したときは、起動時にユーザーフォームだけが表示されるようにしたい
 ※ワークシートを非表示としたい
(2)「実行」ボタンをクリックすると、プログラムが実行されExcelファイルが新規で作成され表示される
 ※上記で記載した「★」の部分をコードをコメントアウトしてユーザーフォームから実行ボタンをクリックすると、プログラムが実行され正常にExcelファイルが新規で作成されることは確認済みです。
(3)ユーザーフォームが閉じても、ユーザーフォームのExcelファイルのみ閉じ、新規で作成されたExcelファイルは閉じない。
 ※実行ボタンをクリックして新規ファイルを作成しなかったり、他にExcelファイルがなかった場合は、Excelは終了する。

それとあわせて、
(1)を実行できた場合に、再度コードを編集する時はどうしたらExcelの画面が表示できるのか教えて下さい。
 ※それとも表示できないのでしょうか?

作成締め切りが迫っていて焦っています。
お知恵のある方どうかお力添え下さい。
よろしくお願い致します。

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

A 回答 (4件)

#3、お礼欄へのレスです。



> 追記いただいたコードを実行してみたところ、終了しては「マクロを有効にしますか?」の画面が表示される・・・という繰り返しになってしまいました。

Excel 2000、2003、2010、と3つの環境で、セキュリティレベルを変えながら動作確認していますが、
ご指摘のような状況は再現できませんでした。
原因を特定することはできませんが、他のイベントプロシージャを間接的に呼び出していたり、
何かしら、こちらから見えない記述が影響しているものと思われます。

> 実現したいことは「閉じたらその選択したものだけ閉じる」「開いたときはユーザーフォームだけが表示される」というごくシンプルなことなのです。

はい、#3は専ら、そのシンプルな要求に必要最低限の手数でお応えしたものです。
(Private Sub CommandButton99_Clickは保険のようなものです。)
動作の確認方法として、#3の記述を新規のブックに貼り付け、ユーザーフォームとコントロールを追加して
試してみては、、、と思います。

#3でも書きましたが、こちらとしては奨めるものでもないので、
諦めるのでしたら、特に返信頂かなくても結構ですが、
その場合は、本件質問を未解決のまま締切にしてください。

お役に立てなかったようで、すみません。
    • good
    • 1

#1、2、cjです。


#2補足欄へのレスです。

> ご提供いただいたコード「 ' ThisWorkbook モジュール  '  8521223」を実行したところ
> 「実行時エラー '1004 'Rows' メソッドは失敗しました '_Global'オブジェクト」エラーになってしまいました。

Rowsのように親オブジェクトを省略して書いた場合は、ActiveWorkbookのActiveSheetのRowsという意味になりますから、
#1の説明でいうと、この部分、
>> ActiveWorkbookとしては捉えられない(=非表示の)ブックオブジェクトが対象ですから、
>> ThisWorkbook、とか、(ThisWorkbook モジュールに書く場合は)Me、とか、明示的に指定してください。
要は、
【"Active"なオブジェクト配下のオブジェクトを捉える】
【表示されている[ブック、シート、セル範囲、等]を捉える】
等の、暗黙の意味付けを持たせてある省略表記をひとつひとつ、
【ブック.シート.セル範囲】のようにきちんと階層を踏んで書換えてあげれば、そのようなエラーは起こりません。
例えば、
  ThisWorkbook.Sheets("シート名").Rows(index)
  Workbooks("ブック名").Sheets("シート名").Rows(index)
のように書く、ということです。
オブジェクトを明示的に指定することは、
これからも頻繁に必要になるであろう非常に重要な基本のひとつです。

> シートを非表示というか、ファイルを開くとユーザーフォームだけが表示されるようにしたいのです。

そうですか。まだ今一つ、目的や意図、求める結果が掴めていませんが、
#1で提示したものは違う、ということなのでしょう。
例えば、Excel以外のアプリケーションは一切起動していない場合、
ファイルを開くと、デスクトップ上にユーザーフォームだけが表示されるようなイメージでしょうか?

ご質問でご提示のコードを基にすれば、、、。
現在のようにユーザーフォームをモーダル表示している場合は、
ユーザーフォームを閉じたタイミングでアプリケーションウィンドウを再表示する為には、
ユーザーフォームを表示する一連の処理の直後に
  Application.Visible = True '◆
を書き加えるだけでいいです。

ユーザーフォームを閉じた時に、ThisWorkbookを閉じる命令をする場合には、
Workbook_Open()プロシージャを最後まで実行した後に、ThisWorkbookを閉じる
ように順番を意識した工夫が必要です。
ここでは、Application.OnTimeメソッドを使った例を簡単に提示します。
ThisWorkbookモジュールの記述が実行される順番はこうなるように書いてあります。
  Application.Visible = False

  myForm.Show

  Application.Visible = True
↓ 条件によっては
  Me.Close SaveChanges:=True
通常は、myForm.Showを実行中に様々な処理をしています。
(myForm表示中は、ずーっとmyForm.Showの行の処理を実行中、なのです)
なので、myForm.Showを実行中にThisWorkbookを閉じてしまうと、
以降の処理に進んではくれません。
そこで、待機中の処理スケジュールを実行してから、ThisWorkbookを閉じるようにする為に、
  Application.OnTime Now, "ThisWorkbook.CloseMe"    '◆ ThisWorkbookを閉じる。
のように、閉じる方法を工夫します。
(本当はApplication.Quitの方も同様に処理するのがベターで、私は必ず実践していますが、
 QA掲示板では触れないのがお約束?みたいなので、ここでは割愛しています。)

' ' ///

' ' ThisWorkbook モジュール
Private Sub Workbook_Open()
  Application.Visible = False '★
  myForm.MultiPage1.Value = 0 'マルチページ構成のため '◆ 必要ない気もしますが、この記述が先でないと意味ないです。
  myForm.Show '★
  Application.Visible = True '◆
End Sub

Private Sub CloseMe()
  Me.Close SaveChanges:=True '◆ ThisWorkbookを閉じる。上書き保存したくない場合はFalse
End Sub

' ' ///

' ' myForm モジュール
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
'========== [×]ボタン,[Alt]+[F4]キーを無効にする ==========
  Dim msg As String, title As String
  msg = "[画面を閉じて終了する]ボタンから終了してください。"
  title = "終了方法"
  Dim res As Integer
  If CloseMode <> vbFormCode Then '◆
    res = MsgBox(msg, vbOKOnly + vbCritical, title)
    Cancel = True
    Exit Sub '◆ 以降の行の処理を実行したくないという意図だと思うのですが、その場合の記述。
  End If '◆

''  ActiveWorkbook.Save '★ ? この記述で何をしたいのかはこちらでは解りません

  Dim wbk As Workbook
  For Each wbk In Workbooks '◆ Workbooks総当たり
    If Not (wbk.Name = ThisWorkbook.Name Or UCase(wbk.Name) Like "PERSONAL.XLS*") Then Exit For
  Next
  If wbk Is Nothing Then '◆ ThisWorkbook以外にWorkBookが開かれていなければ
    Application.Quit '★ Applicationを終了
  Else '◆ ThisWorkbook以外にWorkBookが開かれていれば
    Set wbk = Nothing '◆
    Application.OnTime Now, "ThisWorkbook.CloseMe"    '◆ ThisWorkbookを閉じる。
  End If
End Sub

' ' ///

私個人の考えとして、Application.Visible = Falseを扱うのは、
絶対にエラーを出さない(エラー時にプロジェクトを終了させない)
という前提でしか書けるものではありませんから、
非常時の対策が面倒という意味で他人に奨めるものではないのです。
一応、こちらの立ち位置だけは理解して貰いたい、というだけのことで、
ご要望に応えた物を書くこと自体は、差支えありません。

ただ、やはり心配なので、
#1でも提案したように、緊急避難用に
ボタンを用意(目立たない所に配置)しておくことをお勧めしておきます。

' ' ///

' ' myForm モジュール
Private Sub CommandButton99_Click()
  Application.Visible = True
  Me.Hide
End Sub

' ' ///

> 本を見たらそれができると書いてあったので。
> ただ、本の通りに実行したら質問に記述したとおり、

本に書いてあれば間違いない、というものではないでしょうし、
目的や条件などを十分に考慮した上で、応用するのは思ったより難しかった、というようなことでしょうね。

> ボタンをクリックすると作成されるファイルまで非表示になってしまい
> (最小化もされていないが、バックグラウンドでは開いている様子)、
> 結果を見ることができません。
> また、ユーザーフォームを閉じると、Excelのアプリケーション自体が終了してしまい、
> 他のファイルが開いていてもそれも終了してしまうので、
> ユーザーフォームのファイルだけが終了するようにしたいというのが希望です。

一通り解説策は示せたものと思っています。

以上です。
    • good
    • 4
この回答へのお礼

「Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
」に追記いただいたコードを実行してみたところ、終了しては「マクロを有効にしますか?」の画面が表示される・・・という繰り返しになってしまいました。実現したいことは「閉じたらその選択したものだけ閉じる」「開いたときはユーザーフォームだけが表示される」というごくシンプルなことなのです。いろいろご迷惑をおかけしてしまい申し訳ございませんでした。

お礼日時:2014/03/24 16:31

#1、cjです。


原稿を投稿時に要約して再構成している内に、
おかしな文章を上げてしまいました。

> ユーザーフォームをモーダル(排他的)表示した場合は、
> コマンドバーのボタン(又はクイックアクセスツールバー)に頼るぐらいしか無いのではないかと。
> それでは心許ない、というか、カスタマイズされた環境でしか出来ないことになってしまいます。

結果的に間違った内容になっています。
ユーザーフォームをモーダル(排他的)表示したまま、
「ユーザーフォームを介してのコードによる操作」以外の方法で、
VBEを新たに開くなどの方法は、なかったように記憶しています。
(予めVBEを開いておいて最小化してあればタスクバーから再表示できますし
 裏ワザ的なネタはあるといえばあるのですが)
今回回答の趣旨からしても、不要な説明になっていますので、
上記3行については撤回、とさせてください。

最後のサンプル、.Hideメソッドを使い方、とかは、役に立つんじゃないかな?と思っていますけれど。

失礼しました。

この回答への補足

いつもありがとうございます。ご提供いただいたコード「 ' ThisWorkbook モジュール  '  8521223」を実行したところ「実行時エラー '1004 'Rows' メソッドは失敗しました '_Global'オブジェクト」エラーになってしまいました。シートを非表示というか、ファイルを開くとユーザーフォームだけが表示されるようにしたいのです。本を見たらそれができると書いてあったので。ただ、本の通りに実行したら質問に記述したとおり、ボタンをクリックすると作成されるファイルまで非表示になってしまい(最小化もされていないが、バックグラウンドでは開いている様子)、結果を見ることができません。また、ユーザーフォームを閉じると、Excelのアプリケーション自体が終了してしまい、他のファイルが開いていてもそれも終了してしまうので、ユーザーフォームのファイルだけが終了するようにしたいというのが希望です。

補足日時:2014/03/21 10:14
    • good
    • 1

こんにちは。




シートを非表示というオーダーですが、
ブック内のすべてのシートを非表示にすることは不可能ですから、
代りにブックのウィンドウを非表示にします。
(※ブックが複数のウィンドウをもっている場合もあります。
  その場合はすべてのウィンドウを非表示にするようループさせてください)
ウィンドウがひとつであれば、
  Me.Windows(1).Visible = False
という記述で非表示に、
  Me.Windows(1).Visible = True
で再表示されます。

因みに、ウィンドウを非表示にした状態で、ブックを保存すれば、
次に開いた時にも非表示の状態は維持されますのでWorkbook_Openイベントからの
ブックのウィンドウを非表示にする処理は、設計次第では必要ない場合もあるのかも知れません。

しかし、Excelメニューの[表示]タブから簡単に[再表示]出来てしまいますから、
見られては困る内容ならば、ブックの保護を組み合わせた方がよいのかも知れません。
その場合のサンプルとしては以下のような書き方になります。
後述の本題のコードではブックの保護を扱っていませんので、
必要なら.Windows(1).Visible = の前後の行に追加修正してください。
その際は、記述の順番を間違えないように注意することと、
ActiveWorkbookとしては捉えられない(=非表示の)ブックオブジェクトが対象ですから、
ThisWorkbook、とか、(ThisWorkbook モジュールに書く場合は)Me、とか、明示的に指定してください。

Sub ブックのウィンドウ非表示()
  Me.Windows(1).Visible = False
  Me.Protect Password:="1234", Structure:=True, Windows:=True
End Sub
Sub ブックのウィンドウ再表示()
  Me.Unprotect Password:="1234"
  Me.Windows(1).Visible = True
End Sub

また、そもそもシートを表示させないブックということなら、
アドインブック(*.xla、*.xlam)として保存しておくのが一般的なので、
通常のマクロ有効ブックを開いてシートが見えないのは、
慣れた人でも驚いてしまうかも知れませんから、理解を得るよう工夫した方が好いとも思います。

' ' ///

お望みのものとは違うかも知れませんが、
直接的な返答として現状に役立ちそうな記述を以下並べてみます。

' ' ///

' ' ThisWorkbook モジュール  '  8521223
Private Sub Workbook_Open()
' '  Application.Visible = False '★
  Me.Windows(1).Visible = False '◆
  myForm.MultiPage1.Value = 0 'マルチページ構成のため '◆ 必要ない気もしますが、この記述が先でないと意味ないです。
  myForm.Show '★ モーダル表示の場合は、myForm を閉じるまで次の行に進みません。
End Sub

' ' ///

' ' myForm モジュール  '  8521223
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
'========== [×]ボタン,[Alt]+[F4]キーを無効にする ==========
  Dim msg As String, title As String
  msg = "[画面を閉じて終了する]ボタンから終了してください。"
  title = "終了方法"
  Dim res As Integer
'  Select Case CloseMode
'  Case vbFormControlMenu ' フォームの閉じるボタンから閉じようとした場合は  ◎
'    res = MsgBox(msg, vbOKOnly + vbCritical, title)
'    Cancel = True
'  End Select
  If CloseMode <> vbFormCode Then '◆ コード(自作のボタンのイベント)からUnLoadした場合以外は  ◎
    res = MsgBox(msg, vbOKOnly + vbCritical, title)
    Cancel = True
    Exit Sub '◆ 以降の行の処理を実行したくないという意図だと思うのですが、その場合の記述。
  End If '◆

''  ActiveWorkbook.Save '★ ? この記述で何をしたいのかはこちらでは判りません

  Dim wbk As Workbook
  For Each wbk In Workbooks '◆ Workbooks総当たり
    If Not (wbk.Name = ThisWorkbook.Name Or UCase(wbk.Name) Like "PERSONAL.XLS*") Then Exit For
  Next
  If wbk Is Nothing Then '◆ ThisWorkbook以外にWorkBookが開かれていなければ
''    Application.Visible = True '★
    Application.Quit '★ Applicationを終了
  Else '◆ ThisWorkbook以外にWorkBookが開かれていれば
    Set wbk = Nothing
    With ThisWorkbook '◆ ThisWorkbookについて
      .Windows(1).Visible = True '◆ Windowを再表示する
      .Close SaveChanges:=True '◆ 閉じる。上書き保存したくない場合はFalse
    End With '◆
  End If
End Sub

' ' ///

他、

> (1)を実行できた場合に、再度コードを編集する時はどうしたらExcelの画面が表示できるのか教えて下さい。
>  ※それとも表示できないのでしょうか?

ユーザーフォームをモーダル(排他的)表示した場合は、
コマンドバーのボタン(又はクイックアクセスツールバー)に頼るぐらいしか無いのではないかと。
それでは心許ない、というか、カスタマイズされた環境でしか出来ないことになってしまいます。
ブックのウィンドウを再表示するコード自体は前述のように至って簡単ですが、
権限によって再表示の可否を制限する必要があるなら、以下のような感じにします。
この例では、仮に、CommandButton99 を クリックした場合、のイベントプロシージャに書いていますが、
UserForm_QueryClose イベント内の記述、res = MsgBox()を工夫して、
resの値で条件分岐してみるのもいいかも知れません。
(ユーザー目線で、パスワードを探りたくなるような目立つ設計を奨めるつもりではありませんけれど。)
ブックの保護と関連付ける場合は前述のサンプルを参考にして下さい。

' ' ///

Private Sub CommandButton99_Click()
  Dim vRtn
  Const ADMIN_PASS = "1234" '◆ ぱすわーど任意に指定
  vRtn = Application.InputBox(Prompt:="パスワードを入力", Title:="管理者用編集モード")
  If vRtn <> ADMIN_PASS Then Exit Sub
  ThisWorkbook.Windows(1).Visible = True
  Me.Hide
End Sub

' ' ///


因みに、パスワードを扱うなら、
VBAProjectを保護しておくのが、比較的簡単でより堅くなるとは思います。

以上です。
    • good
    • 1

この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
'-------------------------------------
 
 

Q“フォーム”とは何でしょうか。

“フォーム”というインターネット関連の言葉を最近耳にいたします。

検索を試みましたが、しっくりと理解できません。

特徴を教えていただけないでしょうか。
何ができるのでしょうか。その例を教えていただきたく願います。

Aベストアンサー

「フォーム」とは、データを送信するための窓といったらいいでしょうか。gooでも、検索するときに検索キーワードを入力するボックスがありますよね。それやチェックボックスなんかを総称して「フォーム」と呼びます。

「フォーム」を使えば、ユーザーが任意に選んだ情報をサーバーに送信できるという特徴がありますね。(つまり選択肢のなかから選択といったことが可能になる)

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

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

Aベストアンサー

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

Qメールフォームのソースにある「id="sen"」とは何?

人にもらったメールフォームをカスタマイズしてフォームを作っています。一行のテキスト入力フィールドのソースが以下のようになっています。
<INPUT type="text" size="50" maxlength="50" name="mail1" id="sen">
フィールドは複数あるのですが、どれも「id="sen"」がついていて、これが何を規定しているものかわかりません。html制作はホームページビルダーを使いましたがそのような設定項目はなく、Web制作の本をみても載っていません。なくてもいいものなのか、設定が必要なものなのか、わかる方、教えて下さい。
(私はhtmlを作成し、あとはプログラマに修正してもらうことになっているのですが、そのプログラマの方もよくわからないようです。)

Aベストアンサー

idはスタイルシートやJavaScript、DynamicHtmlで使用される要素です。
そういった類のものがソース内になければ、idは消去しても問題ないはずです。

参考URL:http://www.tohoho-web.com/html/attr/id.htm

QExcelのVBAでフォームだけ表示させる方法

はじめまして。

UserForm1で、デジタルで時間を表示する(デジタル時計)を作成しています。
Excelのアプリケーションを表示せず、フォームのみ表示させたいので、
Application.Visible = Falseとしたいのですが、この方法だと、他のExcel
ファイルを起動する際に、Excelが見えなくなってしまいます。

■やりたいこと
・Excelファイルが1つも開かれていない場合、Excelを非表示にして
 Userform1のみ表示されている状態で起動する
・Userform1のみ表示している状態で、他のBooKを開いた場合、
 Excelを表示して開いたBookを表示させる
・他のBooKを開いている状態で、Userform1が記述されているBook
 を開いた場合、ExcelもUserform1も表示させる
・他のBookを閉じるて、Userform1が記述されているBookのみになった
 場合、Excelを非表示にしてUserfrom1のみ表示されている状態にする

自分自身(Userform1を記述しているBook)のみ起動している時には、
Application.Visible=falseにすれば良いのだと思いますが、どういうロジック
を組めば良いかご教授いただければ幸いです。

すみませんが、よろしくお願い致します。
それ以外の時は

はじめまして。

UserForm1で、デジタルで時間を表示する(デジタル時計)を作成しています。
Excelのアプリケーションを表示せず、フォームのみ表示させたいので、
Application.Visible = Falseとしたいのですが、この方法だと、他のExcel
ファイルを起動する際に、Excelが見えなくなってしまいます。

■やりたいこと
・Excelファイルが1つも開かれていない場合、Excelを非表示にして
 Userform1のみ表示されている状態で起動する
・Userform1のみ表示している状態で、他のBooKを開いた場合、
 Excelを表示して開...続きを読む

Aベストアンサー

無理。
つうか VBA で苦労してやる内容じゃない。
だいたいが、何に使うのか知らないけれど Excel でやる意味あるの?

時計を表示する Excel ファイルと、時計を表示しているときに開く別の Excel ファイルとの関係がわからない。
時計を表示する Excel ファイルは単にユーザーフォームを表示して時計を刻み続けるだけ。
非表示になっている Excel アプリケーションを表示させるのは、その他の Excel ファイルに書き込むコードの役目であり、時計の Excel ファイルではない。
つまり時計を表示させているときに同時使用する Excel ファイルが限定的じゃない限り破綻する。

質問文をきちんと書き直してみた。
こしてみると、時計表示用 Book 以外にその PC で使用するすべての Book にもコードを書かなければならないということがわかる。
・Excelファイルが1つも開かれていない場合、時計表示用Bookのコードが Excel を非表示にして Userform1 のみ表示されている状態にする。
・他のBooKを開いている状態で、時計表示用 Book を開いた場合、時計用 Book は Excel を非表示にせずに Userform1 を表示させる。
・Userform1 のみ表示している状態で、他の BooK を開いた場合、他の Book のコードが Excel を 再表示する。
・他の Book を閉じて、時計表示用 Book だけになる場合、最後に閉じる他の Book のコードが Excel を非表示にして Userform1 のみ表示されている状態にする。
・Userform1 が表示されていても、他の Book のシートや Excel の各種ユーザー インターフェイスが普通に使用できること。

VB 2012 Express でもインストールして Windows フォームのアプリを作ったほうが早いし、シンプルだと思う。

無理。
つうか VBA で苦労してやる内容じゃない。
だいたいが、何に使うのか知らないけれど Excel でやる意味あるの?

時計を表示する Excel ファイルと、時計を表示しているときに開く別の Excel ファイルとの関係がわからない。
時計を表示する Excel ファイルは単にユーザーフォームを表示して時計を刻み続けるだけ。
非表示になっている Excel アプリケーションを表示させるのは、その他の Excel ファイルに書き込むコードの役目であり、時計の Excel ファイルではない。
つまり時計を表示させているときに同...続きを読む

Q質問フォームからの情報とは

よくホームページなどで、
「ご意見・ご感想はコチラ」のような入力するところがありますが、
(アドレスへ送るのではなく、入力フォームです)
あれは送り元であるこちらの情報、
例えばPCやケータイの何らかの情報も自動的に送られるものなのでしょうか?

同じPCから二度送れば、同じ情報が出て発送者が分かったりするものでしょうか?

Aベストアンサー

そのフォームサービスによって違うと思いますが、IPとHostが分かってしまうものがあります。
そういったものだと同じPC・ケータイからの発信なら分かってしまうでしょう。

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

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

Aベストアンサー

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

QGV-RX26T256HのPCBフォームとは?

http://www.links.co.jp/html/press2/gigabyte_gv-rx26t256h.html
今度、上記サイトのボードを買おうと思っているのですが、PCBフォームの意味が分かりません。
私のPCはマイクロATXなので、もしかしたら使えないのでしょうか?
スペックは
M2A-Vm
AMD DC 5000+
CFD W2U800CQ-1GLZJ PC2-6400 2G
DVD ASUS DRW-2014L1T B BULK
HDD HITATHI GST 160G
M-60BK (ブラック・電源なし)
ZUMAX 400W

宜しくお願いします。

Aベストアンサー

PCBフォームはATX、PCBサイズは175mm×111mm
ざんねんながら ATX仕様ですが PCはマイクロATX無理かと思いますが
上は高さ と 長さ表示です。
ケースによるかな
ついでに言っときますがASUSU とGIGABYTE 相性悪いよ
同メーカー選んだ方が正解ですが

Q(Excel+VBA)ユーザーフォームのみ表示で完結させたい。

ExcelのVBAを使った複雑なアプリケーションを開発中です。
 本体のWorkBookは、終始必要なくて、ユーザーフォームだけで完結するものです。結果的には、あたかもVBで作成されたもののように見えることになる。
【手順】
1) xslファイルを開くとユーザーフォームのみ表示される。
2) ユーザーフォームで一連の作業を行う。本体のWorkBook上のsheetは処理中に使用はする(作業用の一時データ貼り付けなど)けど、表示させたくない。
3) 作業終了時・・・これがわからない。
     (終了ボタンまたは閉じるボタンクリック)
           |
     <他のWorkBookが開いているか>
   |                 |
   yes                 No
   |                 |
[現在のworkBookのみ閉じる]   |
  saveの必要なし    [アプリケーションを終了する]  
                 saveの必要なし

Aベストアンサー

これでよい?
>3) 作業終了時・・・これがわからない。
'終了ボタンはフォームを閉じるだけでよい
Private Sub CommandButton1_Click()
Unload Me
End Sub
'フォームが閉じる時のイベントで分岐処理
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If Workbooks.Count > 1 Then
'他にBookが存在した場合
Application.DisplayAlerts = False
ThisWorkbook.Close
Else
'他にBookが無い場合
Application.DisplayAlerts = False
Application.Quit
End If
End Sub

以上、参考まで


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

人気Q&Aランキング