akdrafter,
Moving on without you somewhat, I've done a little bit of rearranging on your Userform_Initialize Sub. First I will post it as you have it with my comments. Then I will post how I would do it.
Private Sub UserForm_Initialize()
Dim arrType1() As String
Dim arrType2() As String
Dim arrType3() As String
Dim arrTmp As Variant
Dim strTmp As String
Dim fFile As Integer
Dim I As Long
ReDim arrType1(0 To 999)
ReDim arrType2(0 To 999)
ReDim arrType3(0 To 999)
'Redimming three arrays to 999 just to make space uses memory unneccesarily
'It will also cause you program to crash if there are 1001 or more blocks
'Why not just redim the array as needed when needed
fFile = FreeFile
'Do you really need all three lists filled out at the beginning?
'If the user is picking a block from List 1, the time and memory used to
'populate all 3 arrays is 2/3 wasted, I would move these down to the click subs
'**** Type 1
Open MyPath & "_Type1.txt" For Input As #fFile
'Need to skip the first 4 lines
For I = 0 To 4
Line Input #fFile, strTmp
Next
I = 0
While strTmp <> "" 'this will stop it once it encounters a blank line
arrType1(I) = strTmp
I = 1 + I
Line Input #fFile, strTmp
Wend
Close #fFile
ReDim Preserve arrType1(0 To I - 1)
ReDim arrName1(0 To I - 1, 0 To 4)
For I = 0 To UBound(arrType1)
arrTmp = Split(arrType1(I), ",")
arrName1(I, 0) = arrTmp(0)
arrName1(I, 1) = arrTmp(1)
arrName1(I, 2) = arrTmp(2)
arrName1(I, 3) = arrTmp(3)
arrName1(I, 4) = arrTmp(4)
Next
'End of Type 1
'**** Type 2
Open MyPath & "_Type2.txt" For Input As #fFile
'Need to skip the first 4 lines
For I = 0 To 4
Line Input #fFile, strTmp
Next
I = 0
While strTmp <> "" 'this will stop it once it encounters a blank line
arrType2(I) = strTmp
I = 1 + I
Line Input #fFile, strTmp
Wend
Close #fFile
ReDim Preserve arrType2(0 To I - 1)
ReDim arrName2(0 To I - 1, 0 To 4)
For I = 0 To UBound(arrType2)
arrTmp = Split(arrType2(I), ",")
arrName2(I, 0) = arrTmp(0)
arrName2(I, 1) = arrTmp(1)
arrName2(I, 2) = arrTmp(2)
arrName2(I, 3) = arrTmp(3)
arrName2(I, 4) = arrTmp(4)
Next
'End of Type 2
'**** Type 3
Open MyPath & "_Type3.txt" For Input As #fFile
'Need to skip the first 4 lines
For I = 0 To 4
Line Input #fFile, strTmp
Next
I = 0
While strTmp <> "" 'this will stop it once it encounters a blank line
arrType2(I) = strTmp
I = 1 + I
Line Input #fFile, strTmp
Wend
Close #fFile
ReDim Preserve arrType2(0 To I - 1)
ReDim arrName3(0 To I - 1, 0 To 4)
For I = 0 To UBound(arrType2)
arrTmp = Split(arrType2(I), ",")
arrName3(I, 0) = arrTmp(0)
arrName3(I, 1) = arrTmp(1)
arrName3(I, 2) = arrTmp(2)
arrName3(I, 3) = arrTmp(3)
arrName3(I, 4) = arrTmp(4)
Next
'End of Type 3
''Provide a default button, usually the first in the list
OptionButton1.Value = True
End Sub
Private Sub ListBox1_Click()
Dim I As Integer
I = ListBox1.ListIndex
blkName = ListBox1.List(I, 1)
blkLayer = ListBox1.List(I, 2)
blkColor = ListBox1.List(I, 3)
blkLType = ListBox1.List(I, 4)
End Sub
Private Sub OptionButton1_Click()
'If this Sub is running, OptionButton1 was clicked so this will always
'be true, there's no reason for the IfThen check
If OptionButton1.Value = True Then
ListBox1.Clear
ListBox1.List = arrName1
ListBox1.ListIndex = 0
End If
End Sub
Private Sub OptionButton2_Click()
If OptionButton2.Value = True Then
ListBox1.Clear
ListBox1.List = arrName2
ListBox1.ListIndex = 0
End If
End Sub
Private Sub OptionButton3_Click()
If OptionButton3.Value = True Then
ListBox1.Clear
ListBox1.List = arrName3
ListBox1.ListIndex = 0
End If
End Sub
Private Sub UserForm_Initialize()
OptionButton1.Value = True
End Sub
Private Sub ListBox1_Click()
Dim I As Integer
I = ListBox1.ListIndex
blkName = ListBox1.List(I, 1)
blkLayer = ListBox1.List(I, 2)
blkColor = ListBox1.List(I, 3)
blkLType = ListBox1.List(I, 4)
End Sub
Private Sub OptionButton1_Click()
Dim arrType1() As String
Dim arrTmp As Variant
Dim strTmp As String
Dim fFile As Integer
Dim I As Integer
fFile = FreeFile
Open MyPath & "_Type1.txt" For Input As fFile
For I = 0 To 4
Line Input #fFile, strTmp
Next
I = 0
While strTmp <> ""
ReDim Preserve arrType1(0 To I)
arrType1(I) = strTmp
I = 1 + I
Line Input #fFile, strTmp
Wend
Close fFile
ReDim arrName1(0 To UBound(arrType1), 0 To 4)
'Redim this to ubound(arrtype1) and they will always match without a doubt
'I - 1 should be the same always but there's no chance that ubound(arrtype1) won't be ubound(arrtype1)
'make sense?
For I = 0 To UBound(arrType1)
arrTmp = Split(arrType1(I), ",")
arrName1(I, 0) = arrTmp(0)
arrName1(I, 1) = arrTmp(1)
arrName1(I, 2) = arrTmp(2)
arrName1(I, 3) = arrTmp(3)
arrName1(I, 4) = arrTmp(4)
Next
ListBox1.Clear
ListBox1.List = arrName1
ListBox1.ListIndex = 0
End Sub
Private Sub OptionButton2_Click()
Dim arrType2() As String
Dim arrTmp As Variant
Dim strTmp As String
Dim fFile As Integer
Dim I As Integer
fFile = FreeFile
Open MyPath & "_Type2.txt" For Input As fFile
For I = 0 To 4
Line Input #fFile, strTmp
Next
I = 0
While strTmp <> ""
ReDim Preserve arrType2(0 To I)
arrType2(I) = strTmp
I = 1 + I
Line Input #fFile, strTmp
Wend
Close fFile
ReDim arrName2(0 To UBound(arrType2), 0 To 4)
For I = 0 To UBound(arrType2)
arrTmp = Split(arrType2(I), ",")
arrName2(I, 0) = arrTmp(0)
arrName2(I, 1) = arrTmp(1)
arrName2(I, 2) = arrTmp(2)
arrName2(I, 3) = arrTmp(3)
arrName2(I, 4) = arrTmp(4)
Next
ListBox1.Clear
ListBox1.List = arrName2
ListBox1.ListIndex = 0
End Sub
Private Sub OptionButton3_Click()
Dim arrType3() As String
Dim arrTmp As Variant
Dim strTmp As String
Dim fFile As Integer
Dim I As Integer
fFile = FreeFile
Open MyPath & "_Type3.txt" For Input As fFile
For I = 0 To 4
Line Input #fFile, strTmp
Next
I = 0
While strTmp <> ""
ReDim Preserve arrType3(0 To I)
arrType3(I) = strTmp
I = 1 + I
Line Input #fFile, strTmp
Wend
Close fFile
ReDim arrName3(0 To UBound(arrType3), 0 To 4)
For I = 0 To UBound(arrType3)
arrTmp = Split(arrType3(I), ",")
arrName3(I, 0) = arrTmp(0)
arrName3(I, 1) = arrTmp(1)
arrName3(I, 2) = arrTmp(2)
arrName3(I, 3) = arrTmp(3)
arrName3(I, 4) = arrTmp(4)
Next
ListBox1.Clear
ListBox1.List = arrName3
ListBox1.ListIndex = 0
End Sub
As you can see, there's really very little that I changed in your code, mostly what I did was rearrange it. Do you understand why and how I did what I did?