[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『Property プロシージャ がグレーアウトしてクリックできない』(Inoue)
その後、kt関数アドイン (Ver 5.40)を導入して
KtMsgBox機能を利用してInputTypeで拡張InputBoxを利用できるようになりました。
もう一度、以下の「ユーザーフォームで入力ダイアログを作成」で作成したマクロを
比較の為見てみたのですが
https://hatenachips.blog.fc2.com/blog-entry-522.html
以前作成したサンプルマクロ(xlsm)を開いて
VBAウィンドウで[挿入]-[プロシージャ]をクリックすると開くダイアログで種類に「Property プロシージャ」を選択して、
名前に「Result」としてOKをクリックして作成した以下のコード(Resultコード)を見ようとしたのですが
Public Property Get Result() As Variant
End Property
[挿入]-[プロシージャ]で表示されるはずである「プロシージャ」がグレイアウトしてクリックできません。
一度設定すると内容を閲覧したり修正したりは出来ないのでしょうか?
そもそも(Resultコード)は、どこに有るのでしょうか?
フォームや標準コードにはそれらしきコードの記載がありませんでした。
(見つからないのは探し方が悪いのが原因かも知れませんが。。。)
< 使用 Excel:Office365、使用 OS:Windows10 >
ユーザーフォーム入門といった記事を検索して、
ユーザーフォームがどのようなものかを学習されたらどうですか?
(助言) 2022/01/18(火) 10:13
Me.lblPrompt.Caption = Prompt Me.txtInput.Value = Default Me.Show vbModal Result = sResult Unload Me End Property (助言) 2022/01/18(火) 10:35
助言さん、アドバイスありがとうございます。
参考記事のコードはコピペ済みでコード自体はうまく処理できているので
ユーザーフォームで入力ダイアログは表示されています。
URLの記事の最初にコードをコピーして貼り付けるように指示があるので
以下をコピペ済みでした。
Public Property Get Result(Prompt As String, Optional Default As String) As String Me.lblPrompt.Caption = Prompt Me.txtInput.Value = Default Me.Show vbModal Result = sResult Unload Me End Property
その後、URLの記事では、「動作原理」のところで
’---------の位置以下の記載が記載されていたので記事に従って
Property Let は削除して、Property Get だけを残しました。
つまり、下記のコードだけにした。
Public Property Get Result() As Variant
End Property
>助言さんの
>↓これです。
で記事の「Property Get を上方で提示したコードに書き換えます。」の意味が判りました。
私は、最初に該当する書き換え相当をコピペで記載済みなので
改めて「Property プロシージャ」で「Result」を登録する必要は無かったと言うことですね。
(Resultコード)が有るのは確認できましたが
「プロシージャ」がグレイアウトしてクリック出来ない件が残っています。
これはどうしてでしょうか?
’---------------------
>VBAウィンドウで[挿入]-[プロシージャ]をクリックすると開くダイアログで種類に
>「Property プロシージャ」というのがあります。
>これを選択して、名前に「Result」としてOKをクリックすると下記のようにコードが入力されます。
> Public Property Get Result() As Variant
> End Property
> Public Property Let Result(ByVal vNewValue As Variant)
> End Property
>Property Let は削除して、Property Get を上方で提示したコードに書き換えます。
(Inoue) 2022/01/18(火) 11:20
(助言) 2022/01/18(火) 12:03
>「プロシージャ」がグレイアウトしてクリック出来ない件が残っています。 構文として成り立っていないのでは。 エラーメッセージが出ると思うが。
(・・・) 2022/01/18(火) 14:36
つまり、現在
Public Property Get Result(Prompt As String, Optional Default As String) As String
がコードに記載されているからグレーアウトしているのであって
これが正常な状態である。
(該当部をコメントアウトするとグレーアウトしませんでした。)
>コードぺインにオブジェクトが表示されている状態
>プロジェクトウインドウで選択しているモジュールと
> 異なるモジュールのコードがコードぺインに表示されている
プロジェクトエクスプローラーでフォームのInputFrmを選択時点で
挿入>プロシージャがグレーアウトする。
(コードペインに該当するコードがコードペインに表示されていない状態でも
グレーアウトする)
(プロジェクトエクスプローラーで Moduleを選択して該当するコードが表示されていない場合はグレーアウトするが 該当コードペインに表示されるとグレーアウトしないで 挿入>プロシージャが普通に選択可能。)
(Inoue) 2022/01/18(火) 14:55
他のPropertyプロシージャがあっても、
確実にグレー化せずに挿入メニューが使えます。
いずれにせよ、クセはあるようですが、
要するに、LetとGetのひな型を挿入する機能というだけの話ですから、
臨機応変に対応すれば済む話です。
(助言) 2022/01/18(火) 16:33
>ユーザーフォームモジュールの最後にカーソルを移して
>同じことをしてみると、グレー化しませんよ。
ユーザーフォームで
コードぺインにコードが表示されている状態で
コードの最後にカーソルを移動(クリック)するとグレーアウトしませんでした。
おっしゃるようにクセがあるようです。
これでグレーアウトしない方法も理解できたので解決しました。
助言感謝します。
(Inoue) 2022/01/18(火) 17:10
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.