I am new to VBA and I am struggling with filling out combobox. I am trying to populate a combobox with the contents of the first column in a spreadsheet so that I can delete the related row of data based on the selection of combobox.
I looked at several questions both here and elsewhere when I asked this question, but I did not find anything that worked.
Below is the code I tried. I'm a little lost since I tried to collect different answers from other questions to get this to work, but to no avail. I expect the combobox to populate with the values from column 1, but it remains empty.
Attempt # 1 This involves creating a dynamic range:
=OFFSET(PC_DataSheet!$A$2,0,0, COUNTA(PC_DataSheet!$A$1:$A$65536)-1,1)
Private Sub UserForm1_Initialize()
Dim rngPCNumber As Range
Dim ws As Worksheet
Set ws = Worksheets("Sheet1")
For Each rngPCNumber In ws.Range("PCNumber")
Me.PC_ListComboBox.AddItem rngPCNumber.Value
Next rngPCNumber
End Sub
Attempt # 2
Private Sub UserForm1_Initialize()
Dim arr() As Variant
arr = Worksheets("Sheet1").Range("C2:" & lrow).Value
PC_ListComboBox.List = arr
End Sub
Attempt number 3
Private Sub UserForm1_Initialize()
Dim vArr As Variant
Dim i As Integer
vArr = Sheet1.Range("A:1").Value
With PC_ListComboBox.Clear
For i = LBound(vArr) To UBound(vArr)
.AddItem vArr(i)
Next i
End With
End Sub
Any help on this would be really appreciated!
EDIT: I tried to insert the code suggested by Gary Student into my UserForm_Initialize () Sub, but when I try to open the user form, I get the following error message:
Runtime Error '9': Subscript
When I click debug, it highlights this code:
'Opens PC UserForm when pressed.
Private Sub AddPCButton_Click()
UserForm.Show 'This line is the line highlighted by the debugger.
End Sub
, ... , , , .
Private Sub UserForm_Initialize() .
'Clears and Initializes the form when first loaded.
Private Sub UserForm_Initialize()
'Empties combo boxes.
PC_OSTypeComboBox = ""
PC_HDTypeComboBox = ""
'Populates combo boxes.
With PC_OSTypeComboBox
.Clear
.AddItem "Windows 8"
.AddItem "Windows 7"
.AddItem "Windows Vista"
.AddItem "Windows XP"
.AddItem "Windows 2000"
.AddItem "Windows 98"
.AddItem "Windows NT"
.AddItem "Windows 95"
End With
With PC_HDTypeComboBox
.Clear
.AddItem "SATA"
.AddItem "IDE"
.AddItem "SCSI"
End With
End Sub
:
'Clears and Initializes the form when first loaded.
Private Sub UserForm_Initialize()
Dim N As Long, i As Long
With Sheets("Sheet1")
N = .Cells(Rows.Count, 1).End(xlUp).Row
End With
With PC_NumberComboBox
.Clear
For i = 1 To N
.AddItem Sheets("Sheet1").Cells(i, 1).Value
Next i
End With
'Empties combo boxes.
PC_OSTypeComboBox = ""
PC_HDTypeComboBox = ""
'Populates combo boxes.
With PC_OSTypeComboBox
.Clear
.AddItem "Windows 8"
.AddItem "Windows 7"
.AddItem "Windows Vista"
.AddItem "Windows XP"
.AddItem "Windows 2000"
.AddItem "Windows 98"
.AddItem "Windows NT"
.AddItem "Windows 95"
End With
With PC_HDTypeComboBox
.Clear
.AddItem "SATA"
.AddItem "IDE"
.AddItem "SCSI"
End With
End Sub