50分求单元格内容打印最精简代码.

杨哥儿 2009-07-02 09:35:50

Private Sub CellPrint(s As String, x As Integer, y As Integer, h As Integer, w As Integer)
's 打印字串,x,y坐标点,h行高度,w列宽度
'默认字体为五号宋体
'字符串长度不定,格式大约为:
'"7月2日已批示,同意该同志去法国考察。需转陈秘书。"
'问题:要将内容打印在参数所固定的方格中,难题是字符串中有半角数字和半角标点,我不知道在哪个字符前折行?
'我的代码如下,但总不能对齐。特请教各位!
Dim a_st, i As Integer, n As Integer, l As Integer, j As Integer, k As Integer, lw As Integer
a_st = Split(s, vbCrLf)
n = UBound(a_st)
k = 0
lw = 6 '每行容纳字符数
For i = 0 To n
l = Len(a_st(i))
For j = 0 To l \ lw
Printer.CurrentX = x
Printer.CurrentY = y + k * h
Printer.Print Mid(a_st(i), j * lw + 1, lw)
k = k + 1
Next
Next
Exit Sub

...全文
37 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
舉杯邀明月 2009-07-03
  • 打赏
  • 举报
回复
你的6个字符指的是汉字,还是西文字符呀?

打印前对每个字符判断一下全角/半角,计算所需宽度吧。
Tiger_Zhao 2009-07-03
  • 打赏
  • 举报
回复
Private Sub CellPrint(s As String, x As Integer, y As Integer, h As Integer, w As Integer)
Dim aLines() As String
Dim sText As String
Dim i As Long, k As Long
Dim jMax As Long, j1 As Long, j2 As Long
Dim lw As Long

k = 0
aLines = Split(s, vbCrLf)
For i = 0 To UBound(aLines)
sText = aLines(i)
jMax = Len(sText)

j1 = 1
While j1 <= jMax
For j2 = j1 + 1 To jMax
lw = Printer.TextWidth(Mid$(sText, j1, j2 - j1 + 1))
If lw > w Then Exit For
Next

Printer.CurrentX = x
Printer.CurrentY = y + k * h
Printer.Print Mid$(sText, j1, j2 - j1)
k = k + 1

j1 = j2
Wend
Next
End Sub
杨哥儿 2009-07-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 chen8013 的回复:]
你的6个字符指的是汉字,还是西文字符呀?

打印前对每个字符判断一下全角/半角,计算所需宽度吧。

[/Quote]
每个字符判断一下, 太麻烦了吧?
lyserver 2009-07-03
  • 打赏
  • 举报
回复
使用DrawTextEx函数,可以将字符串显示在指定的矩形内部,超出部分可以选择截断或溢出。
杨哥儿 2009-07-03
  • 打赏
  • 举报
回复
Printer.TextWidth(Mid$(sText, j1, j2 - j1 + 1))
就这句起作用!
高手就不一样!
贝隆 2009-07-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 uself 的回复:]
我不想用现成的报表控件,所以才有这样的情况.
[/Quote]
只是间接使用
sky13800 2009-07-02
  • 打赏
  • 举报
回复
帮顶
杨哥儿 2009-07-02
  • 打赏
  • 举报
回复
我不想用现成的报表控件,所以才有这样的情况.
贝隆 2009-07-02
  • 打赏
  • 举报
回复
楼主,给你一个思路,将你要打印的东西转换为填写入Excel中,在用代码调用:PrintOut语句,一条语句搞定

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧