2014-03-27 230 views
0

我在加載項中有以下代碼,這是從功能區調用的。它的目的是使所有線條從當前行到下一個可見行可見。線條被自動過濾器隱藏。Excel vba EntireRow.AutoFit不起作用

Sub Details4(control As IRibbonControl) 
ActiveSheet.Unprotect Password:="xxx" 
    SendKeys "+{DOWN}+ ", True 
    ActiveCell.Rows("1:" & Selection.Rows.Count).EntireRow.EntireRow.AutoFit 
End Sub 

它確實標記了我想要的操作,但自動擬合不起作用。當我雙擊行高(應該與autp-fit相同)時,我會希望這樣做。

任何人都可以看到問題嗎?我知道「sendkey」是不是在編程的最好的東西,但我沒有別的想法容易如何標記範圍達到下一個可見的行...

感謝 最大

回答

0

的代碼更改爲解決此:

For Each Row In ActiveCell.Rows("1:" & Selection.Rows.Count) 
    Row.EntireRow.AutoFit 
Next 

和刪除線

ActiveCell.Rows("1:" & Selection.Rows.Count).EntireRow.EntireRow.AutoFit 
當然

。 ..

0

您有一個額外的。 EntireRow呼叫。

Rows("9:13").EntireRow.autofit 

工作得很好。

爲了您sendkey問題,請嘗試這樣的事:

Range(Selection, Selection.End(xlDown)).Select 
+0

感謝您的回覆NTS!雙「wholeRow」是Excel在錄製宏時提出的;這也是沒有什麼區別的。 Selection.End(xlDown)選擇整個列表的其餘部分,而不僅僅是下一個可見單元格。 – Max

+0

@Max Wierd,我做了一個準確的自動調整代碼的測試,並且按照預期執行。必須有其他限制事物的東西。您正在使用新文件的文件,還是已經存在並且工作過很多的文件? –

+0

該文件是新的,我也做過圓頂測試:如果我手動隱藏線條,取消隱藏的作品,如果它們隱藏成組。只有在自動過濾器中它不起作用 - 儘管通過雙擊自動調整工作。 – Max