2012-08-31 37 views
0

我正在運行一個宏來設置一組單元格的格式。在宏中設置邊框時出錯

Public LastRow as Integer 
Sub Formatting() 
    LastRow = 20 
    With ThisWorkbook.Sheets("Sheet1").Range("A15:" & "AA" & LastRow) 
     .Borders.Weight = xlThin 
    End With 
End Sub 

當我運行宏第一次它的工作原理,但在我收到以下錯誤 運行時錯誤「1004」第二次: 無法設置邊框類的權重屬性。

此外,我無法手動更改受影響的單元格的邊界。我不確定發生了什麼事。我正在2010

感謝高強提前,

+2

的錯誤彈出。檢查可能保護工作表的任何其他代碼。例如,Worksheet_Change,Worksheet_Calculate或類似程序中的任何程序,可能會在第一次運行該程序後自動觸發並保護工作表。 – CaBieberach

回答

1

幾件事情

  1. 不要使用這個Function。使用Sub。您可以使用Function當你想返回的東西
  2. 完全限定的變量/對象
  3. 我沒有看到你設置的LastRow價值的任何地方。

嘗試,因爲你的表是保護這個

Sub Formatting() 
    Dim LastRow As Long 
    LastRow = 20 

    '~~> Change Sheet1 to the relevant sheetname or use Code Name 
    With ThisWorkbook.Sheets("Sheet1").Range("A15:" & "AA" & LastRow) 
     .Borders.Weight = xlThin 
    End With 
End Sub 
+0

我運行了你的代碼,它第一次運行,但第二次運行它時我得到了同樣的錯誤。 LastRow也是在宏的另一部分設置的公共整數。我編輯了我原來的帖子,使之更清晰 – Scavenger

+0

'1'從更新後的代碼中,我仍然看到你沒有考慮到我提到的前兩個建議:)'2'同樣在運行時,調試代碼並看看'LastRow'的價值是什麼? –

+0

我已經更新了代碼,運行了兩次,同樣的問題依然存在。我在一個新的工作簿中運行相同的代碼,它工作正常。這個問題必須在代碼的其他地方創建,但是這個子程序是唯一能改變格式的例程 – Scavenger