ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 35157|回复: 16

如何用vba实现打印选择区域?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2007-4-19 21:55 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
如何用一个commandbutton实现打印对话框中的选择区域打印?[em06]

TA的精华主题

TA的得分主题

发表于 2007-4-19 22:10 | 显示全部楼层

欢迎qqboy1024 朋友!打印区域可以用PrintArea属性来设置。

PrintArea 属性

参阅应用于示例特性

返回或设置欲打印的区域,使用宏语言字符串中以 A1-样式的引用。String 类型,可读写。

说明

将本属性设置为 False 或空字符串 (""),就可打印整个工作表。

本属性仅适用于工作表页面。

示例

本示例将 sheet1 的打印区域设置为单元格区域 A1:C5。

Worksheets("Sheet1").PageSetup.PrintArea = "$A$1:$C$5"
  

本示例将 sheet1 的打印区域设置为当前区。注意使用 Address 属性返回 A1-样式的地址。

Worksheets("Sheet1").Activate
ActiveSheet.PageSetup.PrintArea = _
    ActiveCell.CurrentRegion.Address

  
[此贴子已经被作者于2007-4-19 22:11:01编辑过]

TA的精华主题

TA的得分主题

发表于 2007-4-19 22:18 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

如下,打印区域还可以随变量的变化而变化。昨天excelhome上朋友教的,现炒现卖!

ActiveSheet.PageSetup.PrintArea = Range(Cells(a, b), Cells(c, d)).Address

TA的精华主题

TA的得分主题

发表于 2007-4-19 22:21 | 显示全部楼层

    

    仅供参考:

   首先创建一个CommandButton,在设计模式下(控件工具条的一个状态按钮)双击该按钮,在END SUB之前填入以下代码即可。

    Range("A1:J24").Select'A1:J24是你想设置的打印区域
    ActiveSheet.PageSetup.PrintArea = "$A$44:$J$62"
    Selection.PrintOut Copies:=1, Collate:=True

实际上,也可以使用代码直接打印某一区域,而不需要进行页面设置:方法是在END SUB之前写入:

Activesheet.[A1:J24].PrintOut

TA的精华主题

TA的得分主题

发表于 2007-4-19 22:26 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
不好意思,没看清楼主的题目就回答了,“入孝出悌”的方法我测试了一下,好像不管用,程序不识别a,b,c,d

TA的精华主题

TA的得分主题

发表于 2007-4-19 22:33 | 显示全部楼层

Cells(a, b), Cells(c, d))

a,b,c,d 是行列数字的变量!

看cells 的帮助!

TA的精华主题

TA的得分主题

发表于 2007-4-19 22:34 | 显示全部楼层

Dim a, b, c, d
Private Sub CommandButton1_Click()
a = 1: b = 3: c = 5: d = 7        'a、b、c和d可以根据具体程序来自由决定
ActiveSheet.PageSetup.PrintArea = Range(Cells(a, b), Cells(c, d)).Address

End Sub

TA的精华主题

TA的得分主题

发表于 2007-4-20 00:24 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2007-4-20 18:40 | 显示全部楼层

感谢“zzq0101”、“入孝出悌”的指教。楼主的问题是“如何用一个commandbutton实现打印对话框中的选择区域打印?”也即按下commandbutton后跳出对话框,由用户选择一个范围,然后程序自动将其打印出来,如果在代码里事先指定好a,b,c,d,只能打印固定的这一部分区域,不能实现动态选择打印。因此还需要其它代码为a,b,c,d赋值。下面有拉广告的嫌疑,我也是不得已为之,现在已经玩不转了:请各位热心朋友去我发的主题贴看看,有什么解决方法没有?先谢谢了!

http://club.excelhome.net/viewthread.php?tid=233616&replyID=&skin=0

TA的精华主题

TA的得分主题

发表于 2007-4-20 20:44 | 显示全部楼层

qqboy1024的问题解决方案之一;

在主页面内放一个COMMANDBUTTON按钮,编写如下代码:

 Load UF1
 UF1.Show

在VBA编辑器里新建一个用户窗体,命名为UF1,添加三个控件:“确定按钮”、“取消按钮”和Refedit控件,调整它们的位置和大小。为“确定按钮”编写代码:

 Unload UF1
 ActiveSheet.Range(RefEdit1.Text).PrintOut Copies:=1, Collate:=True

为“取消按钮”编写代码:

Unload UF1

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-9-29 08:20 , Processed in 0.037384 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表