[[20220118090414]] 『Property プロシージャ がグレーアウトしてクリメx(Inoue) >>BOT

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『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


>そもそも(Resultコード)は、どこに有るのでしょうか?
↓これです。
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
(助言) 2022/01/18(火) 10:35

>以前作成したサンプルマクロ(xlsm)を開いて

助言さん、アドバイスありがとうございます。

参考記事のコードはコピペ済みでコード自体はうまく処理できているので
ユーザーフォームで入力ダイアログは表示されています。

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(火) 11:53


いずれにしても、それはサービス機能だから、
それを使わないと支障を来すというものでもなんでもないでしょう。
余りこだわる性質のものでもないと思いますよ。

(助言) 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.