vbcr、vbcrlf、vblf区别

本文详细解释了VB中的vbCr、vbCrLf、vbLf等字符代码的功能及区别,并通过实例展示了这些代码在不同环境下(如MsgBox、文本编辑器、文本框控件)的表现。文章还对比了不同操作系统下的换行符标准。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  红皮书的第一个例子中出现了vbcr,查了一下定义分享给大家。


各自的定义

  • vbcr是回车
  • vbcrlf是回车和换行的结合
  • vblf是换行
  • cr是回车,只有回车,是到本行的最头上 
  • lf是换行,是到下一行  
  • crlf是到下一行的最头上Top


MsgBox效果一样

 Dim a, b, c As String
    a = "111" & vbCr & "222"
    MsgBox a
    MsgBox Len(a)                                                   
        
    b = "111" & vbLf & "222"
    MsgBox b
    MsgBox Len(b)                                                    
        
    c = "111" & vbCrLf & "222"
    MsgBox c
    MsgBox Len(c)                                                    

日志 

用Emeditor打开效果一样

用记事本打开效果不一样

vblf 在notepad笔记本里显示的黑方块不会换行

另外,Dos、windows一般使用vbcrlf换行;unix一般使用vblf换行 


文本框

'在设计时的属性框内设置Text1的ScrollBars=2,MultiLine=true 

 Private   Sub   Command1_Click()   
          Text1   =   "00000"   
          Text1   =   Text1   &   vbCr   &   "aaaaa"   
          Text1   =   Text1   &   vbLf   &   "bbbbb"   
          Text1   =   Text1   &   vbCrLf   &   "ccccc"   
          msgbox   Text1     
  End   Sub

  如果试过这段代码后,会发现vbcr和vblf在textbox控件里效果和vbcrlf不一样,并没有起到回车或是换行的作用。

   

修改VBA代码,不要将@Backing(type="int") 误识别为方法Sub ProcessAidlFiles() Dim fso As Object Dim objFolder As Object Dim objFile As Object Dim wb As Workbook Dim ws As Worksheet, summaryWs As Worksheet Dim filePath As String, fileContent As String Dim newWs As Worksheet Dim targetSheetName As String Dim methodStart As Long, methodEnd As Long, endSearch As Long Dim methodName As String, methodLine As String Dim contentStart As Long Dim packagePos As Long Dim summaryRow As Long Set wb = ThisWorkbook Set summaryWs = wb.Sheets("Sheet1") If summaryWs Is Nothing Then Set summaryWs = wb.Sheets.Add summaryWs.Name = "Sheet1" End If filePath = wb.Path If Right(filePath, 1) <> "\" Then filePath = filePath & "\" Set fso = CreateObject("Scripting.FileSystemObject") If Not fso.FolderExists(filePath) Then MsgBox "路径不存在: " & filePath, vbCritical Exit Sub End If Set objFolder = fso.GetFolder(filePath) summaryRow = 5 ' 从D5开始记录方法 ' 清空之前的汇总结果(保留标题) If summaryRow < summaryWs.Rows.Count Then summaryWs.Range("C" & summaryRow & ":D" & summaryWs.Rows.Count).ClearContents End If ' 处理每个aidl文件 For Each objFile In objFolder.Files If LCase(fso.GetExtensionName(objFile.Name)) = "aidl" And _ UCase(Left(objFile.Name, 1)) = "I" Then ' 打开文件读取内容 Set objStream = fso.OpenTextFile(objFile.Path, 1) fileContent = objStream.ReadAll objStream.Close ' 创建新工作表(文件名作为表名) On Error Resume Next targetSheetName = Left(fso.GetBaseName(objFile.Name), 31) & "." & fso.GetExtensionName(objFile.Name) If Not WorksheetExists(targetSheetName) Then Set newWs = wb.Sheets.Add(After:=wb.Sheets(wb.Sheets.Count)) newWs.Name = targetSheetName Else Set newWs = wb.Sheets(targetSheetName) newWs.Cells.Clear End If On Error GoTo 0 ' 处理package行前内容 packagePos = InStr(1, fileContent, "package") If packagePos > 0 Then contentStart = InStr(packagePos, fileContent, vbCrLf) If contentStart = 0 Then contentStart = InStr(packagePos, fileContent, vbLf) If contentStart > 0 Then fileContent = Mid(fileContent, contentStart + 1) Else fileContent = Mid(fileContent, packagePos) End If End If ' 写入处理后的内容到A1 newWs.Range("A1").Value = fileContent ' 提取方法名并记录到Sheet1 methodStart = 1 endSearch = Len(fileContent) Do While methodStart < endSearch ' 查找方法开始位置 methodStart = InStr(methodStart, fileContent, "(") If methodStart = 0 Then Exit Do ' 回溯查找方法名 Dim charPos As Long charPos = methodStart - 1 Do While charPos > 0 Dim currentChar As String currentChar = Mid(fileContent, charPos, 1) If currentChar = " " Or currentChar = vbCr Or currentChar = vbLf Then Exit Do End If charPos = charPos - 1 Loop If charPos > 0 Then methodName = Trim(Mid(fileContent, charPos + 1, methodStart - charPos - 1)) ' 检查方法名有效性 If methodName <> "" And InStr(methodName, " ") = 0 Then ' 查找方法结束位置 methodEnd = InStr(methodStart, fileContent, ";") If methodEnd > 0 Then ' 写入汇总表 summaryWs.Cells(summaryRow, "C").Value = newWs.Name summaryWs.Cells(summaryRow, "D").Value = methodName summaryRow = summaryRow + 1 End If End If End If methodStart = methodStart + 1 Loop End If Next objFile MsgBox "处理完成! 共找到 " & summaryRow - 5 & " 个方法", vbInformation End Sub ' 检查工作表是否存在 Function WorksheetExists(sheetName As String) As Boolean On Error Resume Next WorksheetExists = (Not Sheets(sheetName) Is Nothing) End Function
最新发布
06-06
引用序列化内容为:{"A":1,"B":2,"C":3}。 引用在这个例子中,名称为"B"和"C"的属性被添加到字典中,并通过SerializeObject函数进行序列化。 问题:Trim(row(0).ToString.Replace(""& vbLf, "").Replace(""& vbTab, "").Replace(""& vbCr, "").Replace(""& vbCr, ""))="" 回答: 这段代码是用来去除字符串中的空格和特殊字符的。它使用Trim函数去除字符串两端的空格,并使用Replace函数将特殊字符(如换行符、制表符、回车符)替换为空字符串。最后,它判断去除特殊字符后的字符串是否为空。如果为空,返回True,否则返回False。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [完全自己编写的适用于 .Net7 简单的JSON序列化类的VB实现(.net7 aot 编译后也能序列化自定义类)](https://blog.youkuaiyun.com/u011527696/article/details/128019229)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [UIPATH 常用操作](https://blog.youkuaiyun.com/dubo_csdn/article/details/120701860)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值