VB如何调整excel表格行高和列宽

用ActiveSheet.PageSetup.PaperSize=xlPaperA4设置了页面大小为A4纸大小,用类似Selection.ColumnWidth=25,这... 用ActiveSheet.PageSetup.PaperSize = xlPaperA4设置了页面大小为A4纸大小,用类似Selection.ColumnWidth = 25,这样设置4列刚好为A4纸宽,但因与A4纸的宽单位毫米不一致,一台电脑设好了换了电脑就可能不一样了,如这里的25要换成什么样的表达式才能通用ColumnWidth =? 展开
 我来答
学点笔记
2019-05-24 · 长路漫漫,分享为上。
学点笔记
采纳数:646 获赞数:1552

向TA提问 私信TA
展开全部

限制了列宽,行高(RowHeight)也限制下。

还没验证是否可行,要不你试试:

Columns("A:D").AutoFit

‘AutoFit 可以根据内容调整最合适的列宽。

这可能还不够,字体大小也得控制下。

更多追问追答
追问
说了其它代码我已写好了,包括字体大小,页面大小为A4纸,居中等等 ,现在只是设置行高和列宽,要把这部分设置为A4纸一样大,打印出来要刚好一满张A4纸,解决不了
追答

没具体代码也不好进行补充,一些想法:

  • 行、列值固定

  • 页边距固定(参考:pagesetup

  • 设置打印区域 (ActiveSheet.PageSetup.PrintArea ="$A$1:$D$30")

  • 禁止缩放(.PageSetup.Zoom = false)

  • 打印是允许缩放的(全部打在一张纸上,代码不知道怎么写.....)

你需要做一个debug的部分,打印相关的值(比如行高、列宽、页边距等等),在其他电脑上运行代码之后得到这些值,以便做出比较,哪些变了,哪些没变,哪些设置无效,就好控制了。

bcatv
2019-05-25 · TA获得超过4433个赞
知道大有可为答主
回答量:4763
采纳率:77%
帮助的人:563万
展开全部
其实A4纸的大小是定死的,也就是210*297毫米
你的问题其实可以归结为:
1,单元格行宽与列宽的设定,(按照前边所说的A4大小,调整好单元格 列宽与行高,
行高是RowHeight 列宽是ColumnWidth)
2、打印时的页边距设定,
3、打印时纸张大小的设定(这一步你已做好)
4、打印时是否缩放的设定
------
Worksheets("Sheet1").PageSetup. CenterVertically = True’将工作表设置成垂直居中
Worksheets("Sheet1").PageSetup.CenterHorizontally = True’将工作表设置成水平居中
TopMargin:以磅为单位返回或设置上边距的大小
BottomMargin:以磅为单位返回或设置底端边距的大小
FooterMargin:以磅为单位返回或设置页脚到页面底端的距离
HeaderMargin:以磅为单位返回或设置页面顶端到页眉的距离
RightMargin:以磅为单位返回或设置右边距的大小
LeftMargin:以磅为单位返回或设置左边距的大小
禁止缩放(.PageSetup.Zoom = false)
--------------------
追问

谢谢你,你提到的其它设置问题我已全部写好了的,如边距设为0,我现在的问题就是A4纸宽210mm,高297mm,如果4列平均分,则每列分得的宽为210mm/4,因为ColumnWidth的单位不是mm,ColumnWidth=?,不知道这里该如何表示,?处如何写,才能准确地给出ColumnWidth的具体值,且换了字体或是电脑或是打印机都是4列平均分,不会变化


追答
你说的这个,我认为可以这样确定,你现在的电脑用EXCEL调整好,然后用右键看一下行高,在别人电脑上的时候,也调整成这个数字,就可以了,只要调整好,页边距与行高,打印时,是不会移位的,当然了,页边距的6个参数都要设定一下的,还要注意,不能设为0,设成一个适当的数值吧
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
叫之以情
2019-05-24 · 超过11用户采纳过TA的回答
知道答主
回答量:35
采纳率:83%
帮助的人:6.5万
展开全部
vba设置excel的行高和列宽,方法很简单 在excel环境,使用录制宏的办法,以OFFICE2010为例,过程如下: 1,使用菜单,【试图】--【宏】--【录制宏】; 2,然后,你随意设置几个行高,和列宽。
追问
这方法用过了,适应不了刚好A4纸那么大。我要做到刚好A4纸那么大,打条形码用,错位一点条形码就废了,必须准确对位好,这只是我代码的一部分,其余已写好,我是要导出数据至新工作簿,同时设置新工作簿工作表的行高和列宽,4列30行,刚好A4纸那么大,并且换了电脑换了打印机要不影响。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
文夜南零碎1u
2019-05-24 · TA获得超过6224个赞
知道大有可为答主
回答量:1.3万
采纳率:80%
帮助的人:605万
展开全部
首先在VB中引用microsoft excel object library
假设c盘根目录下有个1.xls的文件
…………
问题补充:
你的要求很简单,
一行指令恐怕不行,
最少要三行
代码如下:
Private Sub Form_Load()
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim i As Integer
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("C:\1.xls")
Set xlSheet = xlBook.Worksheets(1) '引用第1张工作表
For i = 3 To 100 Step 3 '想到哪行就把100改成几
xlSheet.Range(Cells(i, 1), Cells(i, 2)).Merge '合并a1:b2单元格
Next
xlSheet.Rows(10).RowHeight = 100 '把第10行高度设为100
xlBook.Save
xlApp.Application.Quit
Set xlApp = Nothing '表忘释放引用
End Sub
运行一下,看看满足要求否。
追问
兄弟,答非所问啊,这样会让人讨厌的哦。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
linxiwell
2019-05-25 · TA获得超过409个赞
知道小有建树答主
回答量:1164
采纳率:46%
帮助的人:331万
展开全部
不可能正好是A4大小的,如果行高不一样,有的可能会多几行,有的会少几行。
追问
我的是3行一循环,30能调成一页,那60行就是两页,90行就是3页,为什么不行?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式