1

Excel VBA は初めてで、Stack Overflow にあるソリューションのいくつかを適応させようとしましたが、まだ行き詰っています!

ユーザーフォームのコンボボックスで選択したオプションのテキストを使用して、この選択したテキストの行を Excel ワークシートに貼り付けようとしています。

以下のコードは、現在アクティブなユーザーフォームのコンボボックス値「CboIncomesPatch」を選択し、この値をアクティブシートのセル「M8」に貼り付けてから、カウンターがユニットの合計数に達するまでこの貼り付けをループすることを意図しています。ユニットの総数は、「15」などのテキストボックス値「TxtNumberOfUnits」です。コンボボックス内の 15 個のテキストをセル "M8" に貼り付けてから、後続のすべての行 "M9"、"M10" などを貼り付ける必要があります。コンボボックスが使用する範囲はハードコードされており、すべてのオプションはすべて文字列である人々の名前です。 (数字なし)。

以下のコードの .SelectedItem でエラーが発生します。コードのコンボボックス値部分の選択を除いて、テキストボックスに使用するとループが機能します。

回答に役立つ情報をここで提供できるかどうかお知らせください。

ありがとうございました、

ニール

Sub Incomes_Patch()

Dim Counter As Integer
Dim ws As UserForm
Dim Total As Integer
Dim Incomes As String

Set ws = UserForm(this.CboIncomesPatch.GetItemText(Me.CboIncomesPatch.SelectedItem))
Set Incomes.Value = ws

Total = TxtNumberOfUnits.Value
Counter = 0

Application.ActiveSheet.range("M8").Select
Do While Counter <= Total
If Counter = Total Then Exit Do
    ActiveCell.Value = Incomes + Counter
    ActiveCell.Offset(1, 0).Select
    Counter = Counter + 1
Loop

End Sub
4

2 に答える 2

0

これを行うには、以下の正しいコードを見つけてください。

Sub Incomes_Patch()

Dim Counter As Integer
'Dim ws As UserForm
Dim Total As Integer
Dim Incomes As String

'I am not sure why you wanted the form object, you need the combobox value right? you can directly get it from Combobox.

'Set ws = UserForm(this.CboIncomesPatch.GetItemText(Me.CboIncomesPatch.SelectedItem))
Incomes = Me.CboIncomesPatch.Text ' selected item doesn't work in Combo, so you need to use Text

Total = TxtNumberOfUnits.Text
Counter = 0

Application.ActiveSheet.Range("M8").Select
Do While Counter <= Total
If Counter = Total Then Exit Do
    ActiveCell.Value = Incomes & Counter
    ActiveCell.Offset(1, 0).Select
    Counter = Counter + 1
Loop

End Sub

それは役に立ちますか?

ありがとう、V

于 2013-05-01T17:49:27.880 に答える