没有合适的资源?快使用搜索试试~ 我知道了~
笔者在用access开发询问笔录时,发现access报表的文本框无法将英文单词从中间断行,造成打印时每行字数不同,相当难看。 除了将记录导出到word方法外(word要把“允许西文在单词中间换行"勾上),笔者写了一个自定义函数,可将字符按用户指定的字节长度参数分割成等长字符,调用时用test(字符串,字节长度)即可,比如字符为”CSDN是个好网站,大家都喜欢",现在需要按3个字节分割,结果如下,不足3字节的会用半角空格补齐: CSD N是 个 好 网 站 另外,由于windows里大部分中文字体不等宽,用户在设置报表字段字体时还需要设置为“幼圆”等宽字体,在此不表。
资源推荐
资源详情
资源评论
Function test(zf As Variant, n As Integer)
On Error Resume Next '当N为奇数时
Dim tmp As String
Dim m As Integer, i As Integer
For i = 1 To Len(zf)
tmp = tmp & Mid(zf, i, 1)
Select Case Asc(Mid(zf, i, 1))
Case Is > 0
a = a + 1 '英文字符
Case Else
a = a + 2 '中文字符
End Select
If a = n Then test = test & tmp & vbCrLf: tmp = "": a = 0
If a = n - 1 Then If Asc(Mid(zf, i + 1, 1)) < 0 Then test = test & tmp & " " & vbCrLf: tmp = "": a = 0
If i = Len(zf) And a < n - 1 And a <> 0 Then test = test & tmp & Space(n - a): a = 0
'最后一段如果不够字节长度N时
On Error Resume Next '当N为奇数时
Dim tmp As String
Dim m As Integer, i As Integer
For i = 1 To Len(zf)
tmp = tmp & Mid(zf, i, 1)
Select Case Asc(Mid(zf, i, 1))
Case Is > 0
a = a + 1 '英文字符
Case Else
a = a + 2 '中文字符
End Select
If a = n Then test = test & tmp & vbCrLf: tmp = "": a = 0
If a = n - 1 Then If Asc(Mid(zf, i + 1, 1)) < 0 Then test = test & tmp & " " & vbCrLf: tmp = "": a = 0
If i = Len(zf) And a < n - 1 And a <> 0 Then test = test & tmp & Space(n - a): a = 0
'最后一段如果不够字节长度N时
资源评论
hdragon0513
- 粉丝: 5
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功