2017-08-25 8 views
0

私はワークフォーム上にボタンを持っています。下記を参照してください:VBA:ユーザーフォームが初期化されるときにユーザーフォームの初期化メソッドがヒットしない - UserForm.UserForm_Activateソリューションが現在動作中です

Sub newjoin() 
UserForm.UserForm_Activate 
NewJoinerEntry.Show 
End Sub 

上記の投稿を見てUserForm.UserForm_Activateを追加しました。

まず、UserForm.UserForm_Activateでエラーが発生します。実行時エラー '424':オブジェクトが必要です。私はそのはが起こっていない&コンボボックスの値を移入するために使用してい

Public Sub UserForm_Initialize() 
Dim cntr As Integer 
cntr = Application.WorksheetFunction.CountA(Sheets("SITES").Range("B2:B65536")) 

Combosite.Clear 
For obt = 2 To cntr 
Me.Combosite.AddItem Cells(obt, 5) 
Next obt 
End Sub 

:私は私のユーザーフォームで

Additioanlly。

ユーザーフォームには、コマンドボタンをクリックしてフォームの結果を送信し、ユーザーフォームが初期化されたときにコンボボックスがデータを取得した場合にのみ、そのすべてが表示されます。

+0

この行を置く必要はありません: 'UserForm.UserForm_Activate'。 'NewJoinerEntry.Show'は、UserFormの正しい名前であればうまく動作します。 –

+0

私はuserformの初期化をロードする際に問題があります。実際には、フォームが初期化されると、コンボボックスにデータをロードしたかったのです。 NewJoinerEntry.Showはすべて問題ありません –

+0

'UserForm_Initialize()'というモジュールをモジュールに作成していますか?はいの場合は、もちろん動作しません。ユーザーフォームを開き、空白の領域を右クリックして[コードを表示]オプションを選択し、そのユーザーフォームのイベントを初期化する必要があります。そこにコードを置くべきです。 –

答えて

0

あなたはあなたの範囲のループをすることができますし、このようなコンボボックスに値を追加します、

Private Sub UserForm_Initialize() 
    Dim rng As Range 
    Dim SelectedRange As Range 
    Dim LastRow As Long 
    Dim sh As Worksheet 

    Set sh = ThisWorkbook.Sheets("SITES") 
    LastRow = sh.Range("B" & Rows.Count).End(xlUp).Row 
    Set SelectedRange = sh.Range("G2:G" & LastRow) 

    ComboBox1.Clear 

    For Each rng In SelectedRange 
     ComboBox1.AddItem rng.Value 
    Next rng 

End Sub 

私はあなたの元のコードで見たように、このコードは、列Bに基づいてシートにダイナミックレンジを設定します列Gからの値が必要です。したがって、SelectedRangeは列Gから値を取得し、それをComboBoxに入れています。

+0

返信ありがとうラファエル。 LastRow = sh.Range( "B"&Rows.Count).End(xlUp).Row –

+0

のランタイムエラー '9'の下付き文字が範囲外になっています。カラムBを確認する必要があります。このコードのエラーは、私は前にそれをテストしました。 –

関連する問題