2014-03-27 209 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