String变量中能存换行符吗?如chr(10),chr(13),vbCr,vblf,vbCrlf

call_from_dream 2018-11-20 04:00:49
我想在一个字符串变量中,存一个换行的字符串,像下面这样:

“你好
我是XX”

我定义一个String变量,如下:
Const str_const As String = "你好" & Chr(10) & "我是XX"

但这样就报
编译错误:
要求常数表达式

请问哪位高手知道怎么做呢?
...全文
567 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
singlion 2018-11-28
  • 打赏
  • 举报
回复
vbNewLine=vbCr & vbLf
call_from_dream 2018-11-22
  • 打赏
  • 举报
回复
引用 5 楼 Runnerchin 的回复:
常量只能声明的时候赋值,不可以动态赋值。chr()本身是函数,chr(13)经过计算才能得到vbCr。
谢谢大神,受教了。 请收下分数。
call_from_dream 2018-11-22
  • 打赏
  • 举报
回复
引用 4 楼 Chen8013 的回复:
chr( ) 是“函数”,IDE都给你提示了:必须用“常数表达式”, 在定义常量时,那个“表达式”中是不允许有“函数”出现的,   即使“理论上函数值也是一个确定的结果”也不可以。 因此你的那个定义,要写成: Const str_const As String = "你好" & vbLf & "我是XX" 如果你要用于“显示”时起到换行效果,要注意“换行格式”。 在MsgBox (或API函数:MessageBox( ) )、Label控件、Print语句等中,   用1个vbLf、vbCr 或vbCrLf 的效果是一样的。 而“标准文本框控件”,你设置为“多行模式”后,要换行必须用 vbCrLf (即: 回车+换行),   单独的 vbCr 或 vbLf 都不能起到“强制换行”的作用;vbLf + vbCr (顺序反了)也照样不行。
这个答案最服气!!! 谢谢大神! 祝你心想事成,万事如意,岁岁有今日,年年有今朝!!!
Ekun_sky 2018-11-21
  • 打赏
  • 举报
回复
Sub yy()
Dim str_const As String
str_const = "你好" & Chr(10) & "我是XX"
Debug.Print str_const
End Sub
舉杯邀明月 2018-11-20
  • 打赏
  • 举报
回复
好像C/C++中,定义常量时可以使用“库函数”。
 不过我记不清楚了,印象中好像是可以。


VB 或VBA环境中,常量定义的赋值都不允许“函数”的,即使是“库函数”也不可以。
舉杯邀明月 2018-11-20
  • 打赏
  • 举报
回复
引用 3 楼 call_from_dream 的回复:
[quote=引用 2 楼 Runnerchin 的回复:]
Const str_const As String = "你好" & vblf & "我是XX"
在定义的时候,允许字符串拼接,但是每个部分都必须是常量,vblf(ascii 10, \n), vbcr(ascii 13, \r), vbcrlf都是常量, chr(xx)不是常量。
另外,不同操作系统的换行不一样,比如windows用cr + lf ( \r\n ), linux里用 lf( \n),苹果系统用cr( \r)


大神,弱弱的再问一句,
为啥chr(10),chr(13)是变量,而与它们等价的vbcr,vblf就是常量呢?
[/quote]
那不是“变量”, 是“函数”,函数要通过计算函数值才能得到结果。
而vbLf 、 vbCr 等,都是IDE环境中(工程中已经强行引用了相关tlb)已经定义好的常量。
X-i-n 2018-11-20
  • 打赏
  • 举报
回复
常量只能声明的时候赋值,不可以动态赋值。chr()本身是函数,chr(13)经过计算才能得到vbCr。
舉杯邀明月 2018-11-20
  • 打赏
  • 举报
回复
chr( ) 是“函数”,IDE都给你提示了:必须用“常数表达式”,
在定义常量时,那个“表达式”中是不允许有“函数”出现的,
  即使“理论上函数值也是一个确定的结果”也不可以。

因此你的那个定义,要写成:
Const str_const As String = "你好" & vbLf & "我是XX"
如果你要用于“显示”时起到换行效果,要注意“换行格式”。
在MsgBox (或API函数:MessageBox( ) )、Label控件、Print语句等中,
  用1个vbLf、vbCr 或vbCrLf 的效果是一样的。
而“标准文本框控件”,你设置为“多行模式”后,要换行必须用 vbCrLf (即: 回车+换行),
  单独的 vbCr 或 vbLf 都不能起到“强制换行”的作用;vbLf + vbCr (顺序反了)也照样不行。
call_from_dream 2018-11-20
  • 打赏
  • 举报
回复
引用 2 楼 Runnerchin 的回复:
Const str_const As String = "你好" & vblf & "我是XX" 在定义的时候,允许字符串拼接,但是每个部分都必须是常量,vblf(ascii 10, \n), vbcr(ascii 13, \r), vbcrlf都是常量, chr(xx)不是常量。 另外,不同操作系统的换行不一样,比如windows用cr + lf ( \r\n ), linux里用 lf( \n),苹果系统用cr( \r)
大神,弱弱的再问一句, 为啥chr(10),chr(13)是变量,而与它们等价的vbcr,vblf就是常量呢?
X-i-n 2018-11-20
  • 打赏
  • 举报
回复
Const str_const As String = "你好" & vblf & "我是XX" 在定义的时候,允许字符串拼接,但是每个部分都必须是常量,vblf(ascii 10, \n), vbcr(ascii 13, \r), vbcrlf都是常量, chr(xx)不是常量。 另外,不同操作系统的换行不一样,比如windows用cr + lf ( \r\n ), linux里用 lf( \n),苹果系统用cr( \r)
X-i-n 2018-11-20
  • 打赏
  • 举报
回复
const定义的是常量
用Dim

2,462

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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