
以下のコードを順番に使って、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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBA テキストボックス...
-
テキストボックスの番号を使っ...
-
excel vba でユーザーフォーム...
-
初歩的な事だと思います。 Sub...
-
数字以外の入力をエラーにする...
-
アクセスのマクロ
-
EXCEL VBA で指定した範囲に入...
-
Excel-VBAでInputBox+Pulldown...
-
ExcelVBA No.を自動連番で設定...
-
TEXTAREA に入力時の位置
-
入力フォームの値をQRコードで...
-
DataGridViewの桁数制限に関して
-
UWSCで、スクリプトの実行時間...
-
VBAでInputBoxの再入力をさせる...
-
jsp 入力された文字が日付かど...
-
至急です!Excelがわかりません
-
C♯初心者で、四則演算の電卓を...
-
ACCESS テキストボックスの入力...
-
エディットボックスの入力制限...
-
VBAで質問があります
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA テキストボックス...
-
初歩的な事だと思います。 Sub...
-
テキストボックスの番号を使っ...
-
数字以外の入力をエラーにする...
-
EXCEL VBA で指定した範囲に入...
-
Excel-VBAでInputBox+Pulldown...
-
教えて!全角文字「μ」の半角
-
VBAでInputBoxの再入力をさせる...
-
入力フォームの値をQRコードで...
-
アクセスのマクロ
-
エディットボックスの入力制限...
-
accessで該当するレコードがな...
-
DataGridViewの桁数制限に関して
-
HTMLで全角文字のみ入力するに...
-
TextBoxから数字が文字...
-
ExcelVBAのユーザーフォームで...
-
VBA R1C1形式で変数の入力について
-
DataGridView 列ごとの入力制限
-
excel vba でユーザーフォーム...
-
「イ分」・・・フンという文字...
おすすめ情報