以下のコードを順番に使って、InputBoxに入力した複数桁の番号を、フォルダ内のPDF名から近いものを開いて表示させています。
しかし何も入力していない状態で、キャンセルボタンを押すとフォルダ内のPDFがたくさん開いてしまい困っています。
InputBoxの右上の×を押しても同様です。
キャンセルボタンを押したらファイル自体を閉じれるようにしたいです。
できればInputBoxの右上の×を押した場合はInputBoxだけ閉じたいです。
宜しくお願いいたします。
Sub 入力()
Dim ans As String
flg = False
Do
ans = InputBox("検索したい番号を入力してください", "番号入力")
If StrPtr(ans) = 0 Then Exit Sub
If IsNumeric(ans) Then flg = True
Loop Until flg = True
If ans <> "" Then
Range("A1").Value = ans
End If
End Sub
Sub PDFを開く()
Dim MyPath As String
Dim f As Object
MyPath = "C:\○○○\×××\Desktop\番号管理"
With CreateObject("Scripting.FileSystemObject")
For Each f In .GetFolder(MyPath).Files
If InStr(f, Range("A1").Value) >= 1 Then
CreateObject("Shell.Application").ShellExecute f
End If
Next f
End With
End Sub
No.1ベストアンサー
- 回答日時:
InputBox をApplication.InputBoxにしてみたら・・
ans = Application.InputBox(prompt:="番号入力", _
Title:="検索したい番号を数値入力で入力してください", _
Type:=1)
If TypeName(ans) = "Boolean" Then
xもここになりますけれど
MsgBox "キャンセル": Exit Sub
End If
>キャンセルボタンを押したらファイル自体を閉じれるようにしたいです。
できればInputBoxの右上の×を押した場合はInputBoxだけ閉じたいです。
自前のUserFormを作る方が簡単?
OKボタン・キャンセルボタン・テキストボックス 設置
右上の×を押した場合
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
?.Close
とか・・・
No.3
- 回答日時:
こんばんは
>キャンセルボタンを押すとフォルダ内のPDFがたくさん開いてしまい困っています。
ご提示のプロシージャは2つの別々のものなので、
「キャンセルボタンを押すとフォルダ内のPDFがたくさん開く」ようなことはないはずです。
それとも、これらを連続して実行するような、マスター的なマクロを実行しているということでしょうか?
(そもそも、一つの機能をなぜ二つに分けているのかも不明ですが・・)
「Sub 入力()」に関して言えば、キャンセルを押せばそれで終了するだけです。
(値を入力しても、PDFは開きません)
「Sub PDFを開く()」に関して言えば、A1セルが空白の状態で実行すると、全てのPDF(PDFに限りませんが)を開くようになっています。
どのようにして、こちらのプロシージャが実行されているのか不明なので、直接の対策は書きにくいですが・・・
ご質問のようなことの対策としては、無条件で実行せずにA1セルの値をチェックしてから実行するようにすれば良いのではないでしょうか?
ついでに言うなら、入力のプロシージャでも書き込むのみで、キャンセルの際のA1セルの値は成り行きになっていますので、こちらでもきちんと制御しておいた方が宜しいように思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) ExcelVBA No.を自動連番で設定をしながらデータ入力をしたい 2 2022/08/03 18:19
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBA テキストボックス...
-
数字以外の入力をエラーにする...
-
初歩的な事だと思います。 Sub...
-
テキストボックスの番号を使っ...
-
教えて!全角文字「μ」の半角
-
EXCEL VBA で指定した範囲に入...
-
Excel-VBAでInputBox+Pulldown...
-
入力フォームへ、データを自動...
-
アルファベットGの小文字の入力
-
入力フォームの値をQRコードで...
-
excel vba でユーザーフォーム...
-
c#でTextBoxの入力制限
-
POST時に履歴を残さない方法
-
エディットボックスの入力制限...
-
VBA R1C1形式で変数の入力について
-
VBAで質問があります
-
<input>のstep属性に違反する入...
-
VBAの質問になります メッセー...
-
スマートフォン向けフォームで...
-
DataGridView 列ごとの入力制限
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA テキストボックス...
-
テキストボックスの番号を使っ...
-
VBAで質問があります
-
Windowsのアプリ開発ってなんの...
-
Excel-VBAでInputBox+Pulldown...
-
EXCEL VBA で指定した範囲に入...
-
初歩的な事だと思います。 Sub...
-
数字以外の入力をエラーにする...
-
VBAでInputBoxの再入力をさせる...
-
入力フォームの値をQRコードで...
-
excel vba でユーザーフォーム...
-
TextBoxから数字が文字...
-
VBAの質問になります メッセー...
-
DataGridViewの桁数制限に関して
-
accessで該当するレコードがな...
-
c#でTextBoxの入力制限
-
VBA R1C1形式で変数の入力について
-
エディットボックスの入力制限...
-
「イ分」・・・フンという文字...
-
アルファベットGの小文字の入力
おすすめ情報