私は(より実際には、これら二つは、私は、現時点ではと働いているものです)2つのユーザーフォームを持っているときに、第2列の値を取得します。VBA複数列COMBOXは - 最初の列はリストのバインド列
最初のフォームは「ExistingOrNewWelder」と呼ばれます(フォームAと呼びます)。
2番目のフォームは「InitialInfo_Form」と呼ばれます(フォームBと呼びます)。ユーザは、Aが開かれたワークシートのフォーム上のボタンをクリックする
。最初は、それは次のようになります。
ユーザーは、「既存の溶接機用の新しいWQTRを追加」の横のラジオボタンをselctsコンボボックスが表示されます。
コンボボックスの項目の一つがリストにバインドされた列の値のみがボックスに表示され選択された場合。
だから私は苦労してる私はコンボボックスに表示される名前やID番号の両方を使用できるようにしたいということです。ユーザーが[OK]をクリックしたときに表示される後続のフォームBに両方の情報が表示されるようにします。画像で
言葉はFooは、形態AからID番号を表し、私は以下を含めています私の現在のコードでその単語が表示されます。
コードのこの最初の部分は、形態Aの
Option Explicit
Dim newWelder As Boolean
Dim wqtr As Boolean
Public newWelderBoolValue As Boolean
Public welderIDSelected As String
Private Sub UserForm_Initialize()
'varialbe fun
Dim lastRow As Long
Dim nameCell As range
Dim box As control
wqtr = False
newWelder = False
'Set Window size and position
With Application
.WindowState = xlMaximized
Me.Top = .Top * 0.5
Me.Left = .Left * 1.0015
Zoom = Int((.Width * 0.85)/(Width * 0.85) * 60)
Width = .Width * 0.28
Height = .Height * 0.5
End With
'Activate the worksheet
Worksheets("All Welders Data").range("A1").Activate
'sort the data in the active sheet by the welder's name then by welder's ID number
With ActiveSheet.Sort
.SortFields.Add Key:=range("E3"), Order:=xlAscending
.SortFields.Add Key:=range("B3"), Order:=xlAscending
.SetRange ActiveCell.CurrentRegion.Offset(1)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.Apply
End With
'populate the combox from the active sheet (welder name in the
'first column, welder ID number in the second column.
With ActiveSheet
lastRow = .Cells(.Rows.count, "A").End(xlUp).row
For Each nameCell In .range("E3:E" & lastRow)
If nameCell.Value <> "" Then
With Me.chooseWelderNameComboBox
.ColumnCount = 2
.AddItem nameCell.Value
.list(.ListCount - 1, 1) = nameCell.Offset(, -1).Value
'ComboBox now shows the values in column "E" and the values
'in coulmn "D" - in that order, as in "Name" - "ID Number".
'(the reverse order of the columns in the worksheet.)
End With
End If
Next
End With
End Sub
Private Sub existingWelderOptionButton_Click()
'display the welderName Combox when this radio button
'is selected and set the switches(bools) for the Submit button.
wqtr = True
newWelder = False
Me.chooseWelderLabel.Visible = True
Me.chooseWelderNameComboBox.Visible = True
Me.chooseWelderNameComboBox.Enabled = True
End Sub
Private Sub AddNewWelderOptionButton_Click()
'When this radio button is selected set
'the switches(bools) for the Submit button.
wqtr = False
newWelder = True
End Sub
Private Sub chooseWelderNameComboBox_Change()
welderIDSelected = "Foo"
End Sub
Private Sub submitButton_Click()
'Based on the radio button selected, set
'the Public newWelderBoolValue to either true or false
'this is used by InitialInfo_Form.UserForm_Initialize
If wqtr = True Then
newWelderBoolValue = True
InitialInfo_Form.Show
Else
newWelderBoolValue = newWelder
InitialInfo_Form.Show
End If
Me.Hide
End Sub
され、その後、この次の部分は、この問題に関連するフォームBのコードの部分のみです。
Private Sub UserForm_Initialize()
Dim welderSelected As Boolean
Dim idSelected As String
welderSelected = ExistingOrNewWelder.newWelderBoolValue
idSelected = ExistingOrNewWelder.welderIDSelected
'Set Window size and position
With Application
.WindowState = xlMaximized
Me.Top = .Top * 0.5
Me.Left = .Left * 1.0015
Zoom = Int((.Width * 0.85)/(Width * 0.85) * 40)
Width = .Width * 0.995
Height = .Height * 0.992
End With
If welderSelected = True Then
Me.welderNameText.Text = ExistingOrNewWelder.chooseWelderNameComboBox.Text
Me.welderNameText.Enabled = False
Me.welderIDComboBox.Value = idSelected
Me.welderIDComboBox.Enabled = False
End If
welderIDComboBox.list = UserFormDropDownDataSheet.range("J2:J9000").Value
weldingProcessComboBox.list = UserFormDropDownDataSheet.range("M2:M13").Value
positionWeldedComboBox.list = UserFormDropDownDataSheet.range("O2:O14").Value
testNumberComboBox.list = UserFormDropDownDataSheet.range("Q2:Q100").Value
End Sub
welderIdselectedをグローバル変数に設定する方法は、同じワークブックの別のサブ内から呼び出すことができます。または、サブをプライベートに設定せず、パブリックに設定します。 – Luuklag
welderIDSelectedはすでに2番目のスクリプトでIDSelectedによって参照されるパブリック変数です。私が調べることに問題があるのは、welderIDSelected = "ComboBoxリストの溶接機ID番号 - ComboBoxのデータの2番目の列です。"ということです。 @Luuklag - すべてのWelderには、彼の名前と一意の一致するID番号が付いています。私はワークシートの列と列の比較を行っていますが、コンボボックスの2番目の列にアクセスする方法があるはずです。ジョー・ボブが選択されている場合は、彼のID番号がリストに表示されます。 – FatMunkey