2011-05-18 134 views
1

我正在使用以下宏將文本轉換爲所有值的數字。 由於鏈接的服務器正在加載xls,所以格式變得混亂。 列已經格式化,例如,會計,百分比,數字....等,但即使 一切都保存爲文本。excel宏beforeclose事件

所以我決定在工作簿之前運行宏。 宏是這樣的:

Private Sub Workbook_BeforeClose(Cancel As Boolean) 
    Cells.Select 
    Range("D1").Activate 
    Cells.SpecialCells(xlCellTypeLastCell).Offset(1, 1).Copy 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlPasteSpecialOperationAdd 
    With Selection 
    .VerticalAlignment = xlTop 
    .WrapText = False 
    End With 
    ActiveWorkbook.SaveAs "test.xls" 
    ActiveWorkbook.Close 
End Sub 

但事實是,如果我想保存更改,它會彈出窗口詢問, 我怎樣才能解決這個問題。

上面的宏需要稍長的時間才能執行!

我有固定的列(直到D1),但valiable行。

有人可以幫我弄清楚。

+0

'我有固定的列(至D1),但valiable rows.'我不明白你的意思是什麼。 – jonsca 2011-05-18 00:25:47

+0

這意味着我想將所有文本轉換爲數字,我的範圍是從A1到D1。我有固定的列數,但可以有任何行的麻木者 – user234194 2011-05-18 00:31:13

+0

我要更新我的答案,但簡短的答案是你需要的使用'CDec()'函數 – jonsca 2011-05-18 00:41:26

回答

0

但事實是,如果我要保存更改它彈出窗口 問,如何 我可以解決這個問題。

ActiveWorkbook.SaveAs "test.xls"之後加入ActiveWorkbook.Saved = True。還有一些其他選項here(涉及抑制警報,但也可能會影響其他任何打開的工作簿)。

選擇任何你想要的列:

+0

我試過,但我得到:運行時錯誤'1004';應用程序定義的錯誤或對象定義的錯誤在這一行:Cells.SpecialCells(xlCellTypeLastCell)_ .Offset(1,1).Copy – user234194 2011-05-18 00:29:19

+0

@ user234194你想用該行做什麼?我認爲應該爲'ActiveRange'對象而不是'Cells'運行該方法,但是使用該偏移量,您將從當前對象獲取對角線。 – jonsca 2011-05-18 00:36:19

+0

可否請你幫我修改上面的宏,因爲我是新的。 – user234194 2011-05-18 00:38:24