我有以下作業代碼作為更大功能的一部分
Dim SheetToModify As Worksheet
Set SheetToModify = Sheets(strNewProjSheetName)
Dim x As Integer
For x = 1 To SheetToModify.UsedRange.Columns.Count
SheetToModify.Columns(x).EntireColumn.AutoFit
Next x
其中 strNewProjSheetName 是一個字串。
我想將 for 回圈提取到一個函式中。為此,我有
Public Function AutofitAllUsedColumns(mySheet As Worksheet)
Dim x As Integer
For x = 1 To mySheet.UsedRange.Columns.Count
mySheet.Columns(x).EntireColumn.AutoFit
Next x
End Function
并用以下方式呼叫它
Dim SheetToModify As Worksheet
Set SheetToModify = Sheets(strNewProjSheetName)
AutofitAllUsedColumns (SheetToModify)
不幸的是,這給出了錯誤物件不支持此屬性或方法,任何幫助將不勝感激。
uj5u.com熱心網友回復:
自動調整使用的列
注意
mySheet.Columns(x).EntireColumn.AutoFit
指作業表的列,如果使用的范圍從 column 開始,則僅與使用的范圍列相同
A
。正確的行是:mySheet.UsedRange.Columns(x).EntireColumn.AutoFit
函式回傳結果,而子函式不回傳。
AutofitAllUsedColumns
不是函式,是子函式。這種操作不需要回圈。沒有它,代碼效率更高。
因為它只有一行,所以它的目的是有問題的,即你可以使用
SheetToModify.UsedRange.EntireColumn.AutoFit
在呼叫程序中。
Option Explicit
Sub AutoFitTEST()
Const strNewProjSheetName As String = "Sheet1"
Dim wb As Workbook: Set wb = ThisWorkbook ' workbook containing this code
Dim SheetToModify As Worksheet
Set SheetToModify = wb.Worksheets(strNewProjSheetName)
AutofitAllUsedColumns SheetToModify
End Sub
Sub AutofitAllUsedColumns(ByVal mySheet As Worksheet)
mySheet.UsedRange.EntireColumn.AutoFit
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/503716.html
下一篇:用換行符提取文本中的粗體字