Em có 1 Form gồm 1 Listbox, 1 RefEdit và 1 CommandButton. Em muốn khi em nhập giá trị Range thông qua RefEdit vào Listbox thì tự động bỏ qua các cột, hàng đang hide, chỉ lấy những cột, hang unhide được không ạ? Mong mọi người giúp đỡ, em xin cảm ơn!
Không hiểu sao cái Code này nó lại dài thế chứ nịEm có 1 Form gồm 1 Listbox, 1 RefEdit và 1 CommandButton. Em muốn khi em nhập giá trị Range thông qua RefEdit vào Listbox thì tự động bỏ qua các cột, hàng đang hide, chỉ lấy những cột, hang unhide được không ạ? Mong mọi người giúp đỡ, em xin cảm ơn!
Private Sub CommandButton1_Click()
Dim i As Long, Rng As Range, sArr, K As Long, J As Long
Dim aTmp(), n As Long, Str As String, mypoints As Double
Dim dArr(), idx As Long
On Error GoTo Thoat
Set Rng = Range(RefEdit1)
If Rng.Rows.Count Then
For J = 1 To Rng.Columns.Count
If Rng(1, J).EntireColumn.Hidden = False Then
n = n + 1
ReDim Preserve aTmp(1 To n)
aTmp(n) = J
mypoints = Rng(1, J).Width
Str = IIf(Str = "", mypoints, Str & ";" & mypoints)
End If
Next J
ReDim sArr(1 To Rng.Rows.Count, 1 To n)
For i = 1 To Rng.Rows.Count
If Rng(i, 1).EntireRow.Hidden = False Then
K = K + 1
For J = LBound(aTmp) To UBound(aTmp)
sArr(K, J) = Rng(i, aTmp(J))
Next J
End If
Next i
ReDim dArr(1 To K, 1 To UBound(sArr, 2))
For i = 1 To K
idx = idx + 1
For J = 1 To UBound(sArr, 2)
dArr(idx, J) = sArr(i, J)
Next J
Next i
With ListBox1
.ColumnCount = n
.ColumnWidths = Str
.List() = dArr
End With
End If
Thoat:
End Sub