
ボタンからユーザーフォームを起動して
指定シートの関数を値貼付けして、その後CSV出力するという動作をさせています。
ボタンでフォームを起動して一連の処理をした後
Excel右上の×ボタンで閉じようとしても反応しなくなります。
Alt+F4もウィンドウを閉じるも効かないので、ファイル>閉じるでBookを閉じて
その後×ボタンが効くようになるのでそれで閉じています。
フォーム起動部分のどこが悪いのか見直してみたのですが分かりません。
ボタンでフォーム起動をせずVBEからF5起動して処理をすると普通に閉じれましたので
ボタンからフォーム起動がよくないと思うのですが。。
どうかご教示いただけませんでしょうか。
Sub フォーム起動()→Private Sub UserForm_Initialize()
Private Sub CommandButton1_Click()(フォーム起動後ボタンクリック)→
Sub 値貼付け()→Sub CSV出力()→Sub フォーム起動()
--------------------------------------------------------------------
●標準モジュール
Sub フォーム起動()
UserForm1.Show
End Sub
Sub 値貼付け()
Dim i As Long
Dim maxRow As Long
Dim C As Range
Dim Rc As VbMsgBoxResult
Rc = MsgBox("FLGが1の行に対して" & vbNewLine & "値貼付けとCSV出力をしてもよろしいですか?", vbYesNo + vbExclamation, "確認")
If Rc = vbYes Then
maxRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Application.ScreenUpdating = False
For i = 2 To maxRow
If Cells(i, 2).Value = 1 Then
If Cells(i, 11).HasFormula Then
Set C = Range(Cells(i, 11), Cells(i, 15))
C.Copy
C.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End If
End If
Next i
Application.ScreenUpdating = True
Range("A1").Select
Call CSV出力
MsgBox ("完了済データの「値貼付け」と「CSV出力」が完了しました。")
Else
MsgBox "処理を中止します", vbCritical
End If
End Sub
Sub CSV出力()
Dim csvFilePath As String
Dim iCount As Long
Dim jCount As Long
Dim kCount As Long
Dim maxRow As Long
Dim maxCol As Long
Dim fileNo As Integer
Dim FileName As String
' ファイル名の取得(拡張子を除く)
FileName = "削除No一覧"
' CSVファイルパスの作成
csvFilePath = "D:\csv\" & FileName & ".csv"
' 最終行
maxRow = ActiveSheet.Range("A1").End(xlDown).Row
' 最終列
maxCol = 1
' ファイル番号
fileNo = FreeFile
' ファイル開く
Open csvFilePath For Output As #fileNo
' 縦方向ループ(最終行まで)
For iCount = 1 To maxRow
' 横方向ループ(最終列-1まで)
For jCount = 1 To maxCol - 1
' ファイル出力(改行なし)
Write #fileNo, Cells(iCount, jCount);
' ループカウンタをコピー
kCount = jCount
Next jCount
If iCount = 1 Then Write #fileNo, Cells(iCount, kCount + 1)
If Cells(iCount, kCount + 2).Value = 1 Then
' 最終列をファイル出力(改行付き)
Write #fileNo, Cells(iCount, kCount + 1)
End If
Next iCount
' ファイルを閉じる
Close #fileNo
End Sub
--------------------------------------------------------------------
●ユーザーフォーム
Private Sub CommandButton1_Click()
If ComboBox1.Value = "" Then
MsgBox "シートを選んでください"
ComboBox1.SetFocus 'コンボ選択
Exit Sub
End If
Sheets(ComboBox1.Value).Activate 'コンボの値のシートをアクティブにする
Call 値貼付け
Unload UserForm1
End Sub
Private Sub UserForm_Initialize()
Dim ws As Worksheet
'ユーザーフォームのコンボにシート名を追加
For Each ws In Sheets
If ws.Name <> "MST" Then ComboBox1.AddItem ws.Name
Next
End Sub
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
記載されているプログラムコードの他に、プログラムコードはありませんか?
特に、ThisWorkbookオブジェクトのWorkbook_BeforeCloseイベントプロシジャあたりに・・・。
回答いただきありがとうございます。
再度確認しましたが、記載しているコード以外は何もありませんでした。。
コマンドボタンでフォームを起動せずに
マクロからSub フォーム起動()を選んで実行すれば
正常にExcelは終了できます。
Private Sub CommandButton1_Click()から行くと
フォーム閉じるまでこのプロシージャは終了できないみたいなんですが、それが何か悪いのでしょうか。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Excel マクロ 閉じるボタン
Visual Basic(VBA)
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
-
4
【Excel VBA】マクロでExcel自体を終了させたい
Excel(エクセル)
-
5
エクセルVBA ブックを閉じる前に確認メッセージを表示したい
Excel(エクセル)
-
6
エクセルでファイルを閉じるボタンから閉じれないようにするには
Visual Basic(VBA)
-
7
Msgboxの×が押されたとき
Excel(エクセル)
-
8
コマンドボタンで「終了ボタン」を作りたい!
Excel(エクセル)
-
9
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
10
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
11
どこにもフォーカスを当てたくない
Access(アクセス)
-
12
VBA シートをコピー後、ボタンにマクロ登録
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
至急!教えてください!!「Mic...
-
EXCELを起動したとき120%の表...
-
jtrim 1.53cが正常な動きをし...
-
VBによるEXCELの書き込み
-
メールソフトThunderbirdに関して
-
SXFデータトランスレータ2007の...
-
Atok に詳しい方。お願いします。
-
ソフト起動と連動してメモを立...
-
ゲームが起動できない。
-
LANケーブルを挿すとEXCELが重...
-
HDDデータ消去 Destroy3.1Bの使...
-
Excel に貼り付けた図形が、保...
-
エクセルで「ページレイアウト...
-
Macで作成したファイル(Word)を...
-
ロータス1-2-3のファイルをエ...
-
メールでCADデータが送られまし...
-
Outlookでメールが送信できない。
-
アクセスVBAで既に開いているエ...
-
エクセルが勝手に開く
-
ワードの拡張子で
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
至急!教えてください!!「Mic...
-
jtrim 1.53cが正常な動きをし...
-
EXCELを起動したとき120%の表...
-
メールソフトThunderbirdに関して
-
VBによるEXCELの書き込み
-
It works! が表示されるという...
-
新しいプロセスとしてEXCELを起...
-
Atok に詳しい方。お願いします。
-
LANケーブルを挿すとEXCELが重...
-
Wordで数式エディタを使うとフ...
-
ExcelでVBA実行後×(閉じる)ボタ...
-
pcゲームのセットアップが出来...
-
outlookの起動について
-
エクセルのダイアログを開く右...
-
パソコンゲームの使用環境につ...
-
outlook添付ファイルの起動が遅い
-
ACCESS エクスポートしたEXCEL...
-
「筆王」起動時に
-
office起動時に設定画面が表示...
-
Wordを「ファイル名を指定して...
おすすめ情報