ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 固定纸张大小,选择区域打印

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-8-12 13:48 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
请教一下,固定行数和列数,全部打印就刚好一张纸,现在想每次打印的时候选择区域,但这个区域打印出来在像整张纸打印一样的位置,比如A1到H30一张纸刚好打印完,现在我打印的时候选择区域A5到H8,那么打印出来的内容就在整张打印一样的第五行到8行那里,而不是从最上面开始打印,下面是一段选择区域代码,但这个代码只能是选择区域后从最上边开始打印,谢谢!


Sub SelectPrintArea()
    Dim selectedRange As Range
    On Error Resume Next
    Set selectedRange = Application.InputBox("请选择要打印的区域", "选择打印区域", Type:=8)
    If Err.Number <> 0 Then
        MsgBox "您未选择有效区域,操作取消。"
        Exit Sub
    End If
    With ActiveSheet.PageSetup
      .PrintArea = selectedRange.Address
      .FitToPagesWide = 1
      .FitToPagesTall = 1
    End With
    ActiveSheet.PrintOut
End Sub



补充内容 (2024-8-16 11:51):
已解决,代码下面有回复,大家有需要的自己去测试

指定打印.rar

10.19 KB, 下载次数: 20

TA的精华主题

TA的得分主题

发表于 2024-8-12 15:04 | 显示全部楼层
用隐藏和显示的方法打印,选择区域和表头表尾显示,其他区域隐藏,如果要布满整张纸,则要计算整张纸行高总像素,再除以总显示行数,为整张表头尾及中间显示匀称,一般表头表尾的行高要略比中间主表的行高要高一些,可按%增加行高值。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-12 16:25 | 显示全部楼层
hzruziniu 发表于 2024-8-12 15:04
用隐藏和显示的方法打印,选择区域和表头表尾显示,其他区域隐藏,如果要布满整张纸,则要计算整张纸行高总 ...

其实我想要的就是比如我A1:L30刚好一张A4纸,第一天打印了A1:L5,第二天我会继续登记需要打印A6:L10,就这样每天继续在一张纸上打印,每次打印不用去把之前的设置为白色字,直接选择区域就行了,不知道能不能实现,谢谢!

TA的精华主题

TA的得分主题

发表于 2024-8-12 16:36 | 显示全部楼层
ysjjess 发表于 2024-8-12 16:25
其实我想要的就是比如我A1:L30刚好一张A4纸,第一天打印了A1:L5,第二天我会继续登记需要打印A6:L10, ...

我是2003原始系统,你把后缀改为xls文件发一下,否则我打不开

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-13 12:23 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
hzruziniu 发表于 2024-8-12 16:36
我是2003原始系统,你把后缀改为xls文件发一下,否则我打不开

已更改,谢谢!

指定打印.rar

8.23 KB, 下载次数: 12

TA的精华主题

TA的得分主题

发表于 2024-8-13 12:47 | 显示全部楼层
我有个笨办法,复制出个相同的空白辅助表,搞个代码,每次要打印时将选中的区域复制到辅助表,打印区域还是全部

TA的精华主题

TA的得分主题

发表于 2024-8-13 14:58 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
ysjjess 发表于 2024-8-13 12:23
已更改,谢谢!


Private Sub CommandButton1_Click()
    Dim myRange As Range
    On Error Resume Next
    Set myRange = Application.InputBox(prompt:="请在工作表中选择打印区域:", Title:="====打印区选取窗口====", Type:=8)
    On Error GoTo 0
    If myRange Is Nothing Then
        MsgBox "您未选择有效区域,操作取消。"
        Exit Sub
    End If
    a = Range(myRange.Address).Cells(1).Row                            '选中的开始行行号
    b = Range(myRange.Address).Cells(Range(myRange.Address).Count).Row '选中的结束行行号
    'c = myRange.Rows.Count                                             '共选中几行
    r = Range("a65536").End(3).Row            '有效行最后一行行号
'=============================以下为打印区域设置
    If a > 4 Then  '如果选中行在第4行以下
        Rows("4:" & a - 1).EntireRow.Hidden = True '隐藏第4行至选中开始行的上一行区域
    End If
    If b < r Then  '如果选中区域最后行小于表中有数字的最后行
        Rows(b + 1 & ":" & r).EntireRow.Hidden = True '隐藏选中结束行以下的区域
    End If
    Range("a1:l" & r).PrintPreview               '打印预览
   'Range("a1:l" & r).PrintOut                   '直接打印
    Rows("4:" & r).EntireRow.Hidden = False      '打印好后取消全部行隐藏行
    '============如果需要按4设置存满整张表,则要另加代码
End Sub

指定打印.rar

17.7 KB, 下载次数: 20

TA的精华主题

TA的得分主题

发表于 2024-8-13 16:41 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
hzruziniu 发表于 2024-8-13 14:58
Private Sub CommandButton1_Click()
    Dim myRange As Range
    On Error Resume Next

测试了,选择下面行位置还是往上了,不能接着原来的资料往下打印

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-13 16:59 | 显示全部楼层
hzruziniu 发表于 2024-8-13 14:58
Private Sub CommandButton1_Click()
    Dim myRange As Range
    On Error Resume Next

谢谢!测试了还是不能达到我说的那种,我说的这种就像银行存折打印一样,在一页上多次打印,但又不重复打印以前的,后面打印的也不覆盖之前打印过的,现在代码能选择区域,但是就是不能把未选择的区域设置为空白而把选择的区域从纸张最上面开始打印

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-13 17:03 | 显示全部楼层
hzruziniu 发表于 2024-8-13 14:58
Private Sub CommandButton1_Click()
    Dim myRange As Range
    On Error Resume Next

我在想另外一种方式,但我不会,点打印的时候把未选择的区域用代码设置为白色,这样区域还在,选择的区域就正常打印,就相当于手工设置为白色改为代码设置
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-18 13:40 , Processed in 0.047375 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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