Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2678|回复: 6

[已解决]改成文本控件

[复制链接]
发表于 2014-4-12 12:25 | 显示全部楼层 |阅读模式
VBA批量打印人员信息表-改成文本控件

想把这个改成文本控件形式的,请老师们帮帮忙,谢谢大家了!

VBA批量打印人员信息表-改成文本控件.rar (45.31 KB, 下载次数: 14)
发表于 2014-4-12 13:02 | 显示全部楼层
工作表界面输入多方便,干嘛要用文本框?
  1. Sub 批量打印人员信息表()
  2. Dim rng As Range, c As Range
  3. On Error Resume Next
  4. Set rng = Application.InputBox("请选择需要打印的人员" & vbCrLf & vbCrLf & "可按CTRL键选择不连续的人员", "提示", , Type:=8)
  5. If rng Is Nothing Then Exit Sub
  6. If MsgBox("将有" & rng.Count & "条数据被打印,请确定是否打印!", vbYesNo + vbInformation, "系统提示") = vbNo Then Exit Sub
  7. For Each c In rng
  8.     Sheets("Template").Activate
  9.     ActiveSheet.Shapes("TXTa").Select
  10.     Selection.Text = c
  11. '其他类推
  12.     ActiveSheet.UsedRange.PrintOut
  13. Next
  14. MsgBox "操作完毕!", vbInformation + vbOKOnly, "提示"
  15. Sheets("Data").Activate
  16. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2014-4-12 13:07 | 显示全部楼层
dsmch 发表于 2014-4-12 13:02
工作表界面输入多方便,干嘛要用文本框?

谢谢老师了,但打印出来全是空白页呀!

万分的感谢老师!

点评

ActiveSheet.UsedRange.PrintOut 改为具体单元格范围试试[a1:e20]  发表于 2014-4-12 13:16
回复

使用道具 举报

 楼主| 发表于 2014-4-13 12:35 | 显示全部楼层
dsmch 发表于 2014-4-12 13:02
工作表界面输入多方便,干嘛要用文本框?

老师,再请教你下,

    .Shapes("TXTb").DrawingObject.Caption = c.offset(0, 3) '向右偏移3格      

    .Shapes("TXTc").DrawingObject.Caption = c.offset(0, 5)

    .Shapes("TXTd").DrawingObject.Caption = c.offset(0, 8)

问题:
    .Shapes("TXTc").DrawingObject.Caption = c.offset(0, 5)    '向右偏移5格      ,这不用向右偏移3格的表示方法 ,想改成       就直接设置成      E列,  也就是   C行对应的E列数据

点评

h=c.row cells(h,"e")  发表于 2014-4-13 13:00
回复

使用道具 举报

发表于 2014-4-13 18:50 | 显示全部楼层    本楼为最佳答案   
  1. Sub 批量打印人员信息表()
  2. Dim rng As Range, c As Range, h&
  3. On Error Resume Next
  4. Set rng = Application.InputBox("请选择需要打印的人员" & vbCrLf & vbCrLf & "可按CTRL键选择不连续的人员", "提示", , Type:=8)
  5. If rng Is Nothing Then Exit Sub
  6. If MsgBox("将有" & rng.Count & "条数据被打印,请确定是否打印!", vbYesNo + vbInformation, "系统提示") = vbNo Then Exit Sub
  7. With Sheets("Template")
  8.     For Each c In rng
  9.         h = c.Row
  10.         .Shapes("TXTc").DrawingObject.Caption = Cells(h, "e")
  11.         '其他类推
  12.         .[a1:h25].PrintOut
  13.     Next
  14. End With
  15. MsgBox "操作完毕!", vbInformation + vbOKOnly, "提示"
  16. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2014-4-13 21:16 | 显示全部楼层
dsmch 发表于 2014-4-13 18:50

        .Shapes("TXTc").DrawingObject.Caption = Cells(h, "h")


得到的日期,格式不对,我在数据表中,设置了日期格式,

得到的  不是日期格式,这个怎么解决 呀朋友,麻烦你了!

点评

CDate(Cells(h, "h"))或者 Format(Cells(h, "h"), "yyyy-mm-dd")  发表于 2014-4-13 21:31
回复

使用道具 举报

 楼主| 发表于 2014-4-13 21:46 | 显示全部楼层
dsmch 发表于 2014-4-13 18:50

朋友你好,感谢了


CDate(Cells(h, "h"))或者 Format(Cells(h, "h"), "yyyy-mm-dd")

CDate(Cells(h, "h"))  这样可以,但显示的格式是    5/1/2007  这样的,,想显示成    2007-01-05  可以不


Format(Cells(h, "h"), "yyyy-mm-dd")   这样不行,显示工程没有找到
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-25 08:26 , Processed in 0.302267 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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