[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『Nameを設定しようとすると75エラーを吐く』(名無しさん)
vbcomponentsを使ってuserformのnameを変更しようとすると75エラーを吐きます。
詳細:
指定されたオブジェクトが見つかりません。
[F5を押す]
パス名が無効です。
どうすればいいのですか?
コード(sub抜き):
Dim frm As Object,add_control As Control
Set frm = ActiveWorkbook.VBProject.VBComponents.Add(3) frm.Name = "Pswd_Form" frm.codemodule.addfromstring _ "Private Sub Cancel_Click()" & vbCrLf & " UserForm_QueryClose False, 0" & vbCrLf & "End Sub" & vbCrLf & "Private Sub PswdView_Click()" & vbCrLf & " If PswdView.Value Then" & vbCrLf & " Pswd.PasswordChar = """"" & vbCrLf & " Else" & vbCrLf & " Pswd.PasswordChar = ""*""" & vbCrLf & " End If" & vbCrLf & "End Sub" & vbCrLf & "Private Sub Sumbit_Click()" & vbCrLf & " Me.MousePointer = fmMousePointerHourGlass" & vbCrLf & " If Pswd.Value = ""asdf1225"" Then" & vbCrLf & " MsgBox ""認証に成功しました。"", vbInformation" & vbCrLf & " Unload Me" & vbCrLf & " Else" & vbCrLf & " MsgBox ""認証に失敗しました。"", vbCritical" & vbCrLf & " End If" & vbCrLf & " Me.MousePointer = fmMousePointerDefault" & vbCrLf & "End Sub" & vbCrLf & "Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)" & vbCrLf & " If CloseMode = 1 Then Exit Sub" & vbCrLf & " If MsgBox(""このまま認証のフォームを閉じるとワークブックが閉じます。"" & vbCrLf & """ & _ "本当によろしいですか?"", vbExclamation + vbOKCancel + vbDefaultButton2, ""確認"") = vbCancel Then" & vbCrLf & " Cancel = True" & vbCrLf & " Exit Sub" & vbCrLf & " End If" & vbCrLf & " Application.DisplayAlerts = False" & vbCrLf & " Workbooks.Close" & vbCrLf & " Application.DisplayAlerts = True" & vbCrLf & "End Sub" With myNewForm .Properties("Height") = 74.25 .Properties("Width") = 222 .Properties("Caption") = "認証" End With Set add_control = frm.Designer.Controls.Add("Forms.TextBox.1") With add_control .Left = 6 .Top = 6 .Height = 18 .Width = 126 .PasswordChar = "*" End With Set add_control = frm.Designer.Controls.Add("Forms.checkBox.1") With add_control .Left = 6 .Top = 30 .Height = 18 .Width = 108 .Caption = "パスワードを表示する" End With Set add_control = frm.Designer.Controls.Add("Forms.commandbutton.1") With add_control .Left = 138 .Top = 6 .Caption = "認証" .Height = 18 .Width = 72 End With Set add_control = frm.Designer.Controls.Add("Forms.commandbutton.1") With add_control .Left = 138 .Top = 30 .Caption = "キャンセル" .Height = 18 .Width = 72 End With
< 使用 Excel:Excel2010、使用 OS:Windows7 >
こちらでやってみると・・
初回の名前設定は通りましたけど、 2回目以降は何をやっても通してくれませんでした。
新規ブックでやるとまた通るようになります。
VBE側で、過去の名前を憶えていて、ダブり判定になるんじゃないですか? (現時点で同じ名前があるかどうかは見ていない)
(半平太) 2018/03/08(木) 19:52
Set frm = nothing とか後処理しているんでしょうか? 俗に言う幽霊ブックと同じじゃないかと。 それでもダメなら
for each ff in ActiveWorkbook.VBProject.VBComponents next
とかで、VBComponentsの中を空回りさせてみるとか。 スペルおよび構文、合っているのか未確認。 (BJ) 2018/03/08(木) 21:46
下の様な単純なやつで追試したら、前に作ったUserformの名前を手動で変えて置けば Set Nothing の有無にかかわらずノートラブルでした。ご報告まで。
Sub test() Dim frm As Object Set frm = ActiveWorkbook.VBProject.VBComponents.Add(3) frm.Name = "Pswd_Form" frm.codemodule.addfromstring "Sub test1()" & vbCrLf & "End Sub" End Sub
(半平太) 2018/03/08(木) 23:04
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.