以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  零的哪里去了?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=92402)

--  作者:hbhb
--  发布时间:2016/11/2 16:26:00
--  零的哪里去了?
大师:明明窗口中的表中数字有158.00,导出为excel后就变为158,零飞了。什么原因?CellStyle 已经设为true?
--  作者:有点蓝
--  发布时间:2016/11/2 16:59:00
--  
跟CellStyle 应该没有关系。在主表把这列属性固定位数设置为true试试

测试SetFormat对saveExcel无效

--  作者:hbhb
--  发布时间:2016/11/2 17:05:00
--  
我是临时增加的列,通过SetFormat 设置的小数位数,怎么搞?
--  作者:有点蓝
--  发布时间:2016/11/2 17:18:00
--  
用vba设置这列的格式咯
--  作者:hbhb
--  发布时间:2016/11/2 17:29:00
--  
狐表是好,什么都能实现!就是要折腾!
--  作者:hbhb
--  发布时间:2016/11/2 17:35:00
--  
a,c,f列数字设置为0.00格式怎么写代码?劳驾写一下如何?
--  作者:有点蓝
--  发布时间:2016/11/2 17:46:00
--  
NumberFormat

单元格格式是通过NumberFormat或NumberFormatLocal属性来完成的。例如:

Dim App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open("D:\\Report.xls")
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
Ws.Range("A1").NumberFormat = "G/通用格式" \'通用格式
Ws.Range("B1").NumberFormat = "0_ "   \'数值
Ws.Range("C1").NumberFormat = "#,##0.00_);[红色](#,##0.00)" \'货币
Ws.Range("D1").NumberFormat = "_ * #,##0.00_;_ * -#,##0.00_ ;_ * ""-""??_ ;_ @_ " \'会计专用
Ws.Range("E1").NumberFormat = "yyyy-m-d" \'日期
Ws.Range("F1").NumberFormat = "h:mm:ss"  \'时间
Ws.Range("G1").NumberFormat = "0.00%"    \'百分比
Ws.Range("H1").NumberFormat = "# ?/?"    \'分数
Ws.Range("I1").NumberFormat = "0.00E+00" \'科学记数
Ws.Range("J1").NumberFormat = "@"   \'文本
App.Visible = True

可在上述代码执行完毕后,在相应的单元格中输入数据以查看格式效果。
--  作者:hbhb
--  发布时间:2016/11/2 17:52:00
--  
区域或整列、整行怎么设置?
--  作者:有点蓝
--  发布时间:2016/11/2 18:04:00
--  
通过Range属性引用

这也是引用单元格最常用的方式,如:

Dim App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open("D:\\Report.xls")
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
Dim Rg As MSExcel.Range
Rg = Ws.Range("A5")  \'引用单个单元格
Rg = Ws.Range("A3:B5")   \'引用连续的单元格区域
Rg = Ws.Range("A1:D8,A20:C25,F6:G10")\'引用不连续的单元格区域
Rg = Ws.Range("B:B") \'引用单列,也可以Columns引用。如:Rg=Ws.Columns("B"),或者 Rg=Ws.Columns(2)
Rg = Ws.Range("B:D") \'引用连续的多列
Rg = Ws.Range("A:A,C:C,H:H") \'引用不连续的多列
Rg = Ws.Range("5:5") \'引用单行
Rg = Ws.Range("5:20")\'引用连续的多行
Rg = Ws.Range("1:1,3:3,5:5") \'引用不连续的多行
--  作者:hbhb
--  发布时间:2016/11/2 18:24:00
--  
那要不要判断是否为数字与汉字?