用ActiveSheet.PageSetup.PaperSize = xlPaperA4设置了页面大小为A4纸大小,用类似Selection.ColumnWidth = 25,这样设置4列刚好为A4纸宽,但因与A4纸的宽单位毫米不一致,一台电脑设好了换了电脑就可能不一样了,如这里的25要换成什么样的表达式才能通用ColumnWidth =?
限制了列宽,行高(RowHeight)也限制下。
还没验证是否可行,要不你试试:
Columns("A:D").AutoFit
‘AutoFit 可以根据内容调整最合适的列宽。
这可能还不够,字体大小也得控制下。
追问说了其它代码我已写好了,包括字体大小,页面大小为A4纸,居中等等 ,现在只是设置行高和列宽,要把这部分设置为A4纸一样大,打印出来要刚好一满张A4纸,解决不了
追答没具体代码也不好进行补充,一些想法:
行、列值固定
页边距固定(参考:pagesetup)
设置打印区域 (ActiveSheet.PageSetup.PrintArea ="$A$1:$D$30")
禁止缩放(.PageSetup.Zoom = false)
打印是允许缩放的(全部打在一张纸上,代码不知道怎么写.....)
你需要做一个debug的部分,打印相关的值(比如行高、列宽、页边距等等),在其他电脑上运行代码之后得到这些值,以便做出比较,哪些变了,哪些没变,哪些设置无效,就好控制了。
追问我现在的问题是:
用ActiveSheet.PageSetup.PaperSize = xlPaperA4
设置了页面大小为A4纸大小,如何在VB代码里提取出这个页面的长和宽,其它不用管,只要知道怎么表示这个长和宽了什么都可以解决了
长=?
宽=?
宽=行高*行数,长=列宽*列数。A4纸的长和宽全球都一样(百度下)注意单位换算。
换电脑之后不一致可能的原因:
1. 页边距不统一
2. 因分辨率导致的页面缩放
3. 字体、字号异常。
求宽高那里如果有不一样的单元格就不能那么算了,换成求所选区域的宽度和高度比较恰当。
追问你还是没懂我的意思啊,字体字号都不影响的,不管,页边距都设的0,因为A4纸的大小为210mm*297mm,但VB表示宽高时由于单位不同,分辨率不同,打印机DPI不同,导致换电脑了就变了,就是不知道这个单位应该如何处理才能通用?
ActiveSheet.PageSetup.PaperSize=xlPaperA4设置了页面大小为A4纸大小
如果用a代表A4纸宽度,则a=?不知道如何写,这样写出来的单位就应该是一致的
嗯,这确实不容易弄。
我想,打印条形码只要不发生断列或者跨行就ok的。
打印的时候把宽度锁定为始终缩放为一页纸(条形码不会断为左右两截),然后高度设置为自动,软件会自动处理减少或者增加行数,避免出现跨行打印的情况(条形码断成上下两截)。
我不知道你的条形码是一行一个,还是全部放在一格里面。如果是按行分布,那应该是可以的。
配置的代码:
' 加入到 .PageSetup 中。 这只适合列数较少刚好够一张纸容下的情形。我试了下,这样设置后,没有发生跨行打印的情况,这样可以保证一个条形码不会被撕成上下两半。
追问行高不同,row() mod 3=1 的行是班级姓名,固定较小行高,row() mod 3=2的行是条形码,固定较大行高,row() mod 3=0的行是数字考号,固定较小行高,每个人占1列3行,40个人就是4列30行,4列总宽度要等于A4纸的宽度,30行的总高度要等于A4纸的总高度,A4纸分成了40个小块不干胶打印纸,所以每块必须准确对位,每次打印有好几千张,只要对好1页后面的会自动对好的。
谢谢你,你提到的其它设置问题我已全部写好了的,如边距设为0,我现在的问题就是A4纸宽210mm,高297mm,如果4列平均分,则每列分得的宽为210mm/4,因为ColumnWidth的单位不是mm,ColumnWidth=?,不知道这里该如何表示,?处如何写,才能准确地给出ColumnWidth的具体值,且换了字体或是电脑或是打印机都是4列平均分,不会变化
。
你说的这个,我认为可以这样确定,你现在的电脑用EXCEL调整好,然后用右键看一下行高,在别人电脑上的时候,也调整成这个数字,就可以了,只要调整好,页边距与行高,打印时,是不会移位的,当然了,页边距的6个参数都要设定一下的,还要注意,不能设为0,设成一个适当的数值吧
本回答被提问者采纳这方法用过了,适应不了刚好A4纸那么大。我要做到刚好A4纸那么大,打条形码用,错位一点条形码就废了,必须准确对位好,这只是我代码的一部分,其余已写好,我是要导出数据至新工作簿,同时设置新工作簿工作表的行高和列宽,4列30行,刚好A4纸那么大,并且换了电脑换了打印机要不影响。
兄弟,答非所问啊,这样会让人讨厌的哦。
我的是3行一循环,30能调成一页,那60行就是两页,90行就是3页,为什么不行?