アプリ版:「スタンプのみでお礼する」機能のリリースについて

VBAのユーザーフォームのラベルに関して質問です。
下記のようなことをする良い方法を教えていただけますでしょうか?
現状ではCaption部分でエラーが発生します。

Sub test2()
Dim i As Long
Dim Word() As Variant

For i = 1 To 20
ReDim Preserve Word(i)
Word(i) = "UserForm2.Label" & i

With Word(i)
.Caption = "Sample" & i
.Font.Name = "MS Pゴシック"
.Font.Size = 11
End With
Next

UserForm2.Show vbModeless

End Sub

情報が少ないかもしれませんがご教示よろしくお願いいたします。

A 回答 (3件)

何がやりたいのか意味不明ですが・・・。



>Dim Word() As Variant
>Word(i) = "UserForm2.Label" & i
Wordには、文字列を代入しているのでVariant宣言する意味が不明。

>With Word(i)
>.Caption = "Sample" & i
>.Font.Name = "MS Pゴシック"
>.Font.Size = 11
>End With
WordがStringなのに、「.Caption」「.Font.Name」などのプロパティメソッドにアクセスしているのが意味不明。


フォーム「UserForm2」が存在し、そのフォームにラベルを追加する。
との事だとして、以下のようにすればどうですか?

Sub test2()
Dim i As Long

For i = 1 To 20
With UserForm2.Controls.Add("Forms.Label.1", "Label" & i, True)
.Top = i * 10
.Left = 0
.Caption = .Name
.Font.Name = "MS Pゴシック"
.Font.Size = 11
End With
Next

UserForm2.Show vbModeless
End Sub
    • good
    • 0

>>下記のようなことをする良い方法



throw new Exception()でどうでしょう?
どの例外を投げたいかはご自身で調べてください。
    • good
    • 0

処理を見るに、配列Word(i)には文字列しか入っていません。


UserFormを格納しないと .Captionやらプロパティ設定できません。

Set Word(i) = UserForms.Add(UserForm2.Label & i)

こうかな、というとこですが、UserForm2.Label & i によって存在しているUserFormの名前になっていないとエラーになります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!