2014-10-10 134 views
1

我正在使用多个Excel文件(将主文件中的信息复制到更小的更具体的文件中进行报告),​​并且无法让我的主文件在放置区域文件时格式化其中的信息。下面是相关代码:从其他工作簿的VBA格式化Excel工作表

Dim xl As Excel.Application 
Dim I_workbook As Excel.Workbook 
Dim ws As Excel.Worksheet 
Set xl = CreateObject("Excel.Application") 
Set I_workbook = xl.Workbooks.Open("H:\....") 
Set ws = I_workbook.Sheets("Sheet1") 

'... Enter information into the ws. 
     'This part works so I know I have proper objects and such 



Dim rng As Range 
For Each rng In ws.Range("B2", "B" & (BotRow - TopRow + 2)) 
     rng.Select 
     Selection.NumberFormat = "General" 
     'rng.NumberFormat = "General" 
Next rng 

I_workbook.Save 
xl.Quit 

我试图采取我已经把信息到所有的细胞,并将它们格式化为一个数字。有时他们是数字,一次是数字,后跟一个字母。他们的来源是数据库中的文本字段,所以excel将它们读为文本,然后在拐角处放置一个令人讨厌的绿色三角形,令人恼火,因此我坐在这里...

注释行rng.NumberFormat = "General"是我没有工作。

感谢

回答

2

rng.Numberformat应该工作,除非有更多的故事,但你实际上并不需要循环做到这一点:

ws.Range("B2", "B" & (BotRow - TopRow + 2)).Numberformat = "General" 

就足够了。如果单元格中的数据是以文本形式存储的数字,则可以使用类似如下的内容:

With ws.Range("B2", "B" & (BotRow - TopRow + 2)) 
    .Numberformat = "General" 
    .Value2 = .Value2 
End With 
+0

没有骰子。 'ws.Range(“B2”,“B”&(BotRow - TopRow + 2))。NumberFormat =“General”'它可能与它从数据库链接粘贴在那里?当我打开它时,我可以使用格式警告手动执行它,但它不会使用右键单击 - >格式单元格 - >数字 - >常规来修复它。我觉得如果有什么方法应该工作。我尝试使用绿色三角形警告录制宏时,却什么也没有。谢谢 – Evan 2014-10-10 12:21:10

+0

代码将改变单元格格式。如果它不改变单元格中显示的数据,那就完全不同了 - 这意味着你有文本。看我的编辑。 – Rory 2014-10-10 12:31:06

+0

这样做,谢谢。为什么更改该值可以重新格式化? – Evan 2014-10-10 12:45:22

相关问题