vb 关于查找替换的问题,谢谢
发布网友
发布时间:2022-05-15 10:55
我来回答
共2个回答
热心网友
时间:2023-10-21 06:41
查找替换所选字符
--------------------------------------------------------------------------------
' SearchLine is input, SearchFor is what to search for, ReplaceWith is the replacement
Function sReplace(SearchLine As String, SearchFor As String, ReplaceWith As String)
Dim vSearchLine As String, found As Integer
found = InStr(SearchLine, SearchFor): vSearchLine = SearchLine
If found <> 0 Then
vSearchLine = ""
If found > 1 Then vSearchLine = Left(SearchLine, found - 1)
vSearchLine = vSearchLine + ReplaceWith
If found + Len(SearchFor) - 1 < Len(SearchLine) Then _
vSearchLine = vSearchLine + Right$(SearchLine, Len(SearchLine) - found - Len(SearchFor) + 1)
End If
sReplace = vSearchLine
End Function
Replace函数
描述
返回一个字符串,该字符串中指定的子字符串已被替换成另一子字符串,并且替换发生的次数也是指定的。
语法
Replace(expression, find, replacewith[, start[, count[, compare]]])
Replace函数语法有如下几部分:
部分 描述
expression 必需的。字符串表达式,包含要替换的子字符串。
find 必需的。要搜索到的子字符串。
replacewith 必需的。用来替换的子字符串。
start 可选的。在表达式中子字符串搜索的开始位置。如果忽略,假定从1开始。
count 可选的。子字符串进行替换的次数。如果忽略,缺省值是 –1,它表明进行所有可能的替换。
compare 可选的。数字值,表示判别子字符串时所用的比较方式。关于其值,请参阅“设置值”部分。
设置值
compare参数的设置值如下:
常数 值 描述
vbUseCompareOption –1 使用Option Compare语句的设置值来执行比较。
vbBinaryCompare 0 执行二进制比较。
vbTextCompare 1 执行文字比较。
vbDatabaseCompare 2 仅用于Microsoft Access。基于您的数据库的信息执行比较。
返回值
Replace的返回值如下:
如果 Replace返回值
expression长度为零 零长度字符串("")。
expression为Null 一个错误。
find长度为零 expression的复本。
replacewith长度为零 expression的复本,其中删除了所有出现的find 的字符串。
start > Len(expression) 长度为零的字符串。
count is 0 expression.的复本。
说明
Replace函数的返回值是一个字符串,但是,其中从start所指定的位置开始,到expression字符串的结尾处的一段子字符串已经发生过替换动作。并不是原字符串从头到尾的一个复制。
建议你用vb的RichText控件,里边有内置的find函数,下边主要是替换的方法,如何查找,包含在替换里边,你自己稍微修改一下就可以用了
'找到的位置
Dim intFoundPos As Integer
'查找的字符
dim strFind As String
'替换的字符
dim as strReplace As String
Do While intFoundPos >= 0
'查找字符并返回位置,同时高亮显示已经找到的字符
intFoundPos = RichText1.Find(strFind)
'如果找到了
If intFoundPos >= 0 Then
'选择要高亮显示字符的位置
rtxtInitialize.SelStart = intFoundPos
'高亮显示字符的长度
rtxtInitialize.SelLength = len(strFind)
'替换动作发生
rtxtInitialize.SelText = strReplace
'重新定义查找位置,再往下继续查找
intFoundPos = intFoundPos + Len(strReplace)
End If
Loop
热心网友
时间:2023-10-21 06:42
用vb打开excel然后每一个sheet每一行的读取 然后再循环到下一个excel 好像是只能这么做了!~
很麻烦的!~