我是vba的新手,我試圖創建一個簡單的宏來將一些數據導出到文本文件。然而,當用戶應用任何隱藏行的過濾器時,我只會將所有數據從第一行導出到最後一行,忽略任何過濾掉的內容。我已經搜遍遍了,但(可能是由於我缺乏vba的經驗),我無法找到任何可以與用戶的過濾器和他們的選擇一起工作的任何東西。事情是,我甚至不知道excel是否將過濾行視爲「隱藏」。我也嘗試了許多方法,而不是下面列出的方法,例如.AutoFilter和.SpecialCells(xlCellTypeVisible),但是它們都不適用於Selection。如何將用戶過濾器應用於excel vba中的選擇?
Sub old_export_for()
Dim myFile As String, rng As Range, cellValue As Variant, i As Integer, j As Integer
myFile = "C:\OUT\old_out_" + CStr(Format(Now(), "mmddhhmm")) + ".txt"
Set rng = Selection
Open myFile For Output As #1
For i = 1 To rng.Rows.Count
If Not rng.Rows.Hidden Then
j = 1
cellValue = rng.Cells(i, j).Value
Print #1, "Filename : " + CStr(cellValue)
j = 2
cellValue = rng.Cells(i, j).Value
Print #1, "File Size : " + CStr(cellValue)
j = 3
cellValue = rng.Cells(i, j).Value
Print #1, "Hostname : " + CStr(cellValue)
j = 4
cellValue = rng.Cells(i, j).Value
Print #1, "Date : " + CStr(cellValue)
j = 5
cellValue = rng.Cells(i, j).Value
Print #1, "Session ID : " + CStr(cellValue),
Print #1, vbNewLine + vbNewLine
End If
Next i
Close #1
End Sub
'SpecialCells'怎麼樣? 'Set rng = Selection.SpecialCells(xlCellTypeVisible)'應該這樣做(沒有隱藏的單元格會在'rng'中 –
我覺得應該可以,但是隻有第一個選定的行被導出 –
我添加了' SpecialCells' ......但要改變這個話題:更好地使用'&'而不是'+'來表示文本......只是爲了避免將來出現錯誤;) –