|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
我用文心一言,问了TA无数次,结果代码都报错。
请各位大神帮忙看看,究竟是哪错了。
————————————————————
我的提问:
在word里面写一个VBA代码,
格式:
sub 换行符()
…………
End Sub
这个样的格式
目的:
判断每一段最后的换行符(回车)前面的字符,是否是。?!)﹞〕〗」]”这些符号
如果有,就算了
没有的话,换行符删除
要求:
自变量尽量使用中文字符
每一行代码前,给出详细的注释。每一行都要!
我写的代码如下:
Sub 检查换行符()
' 定义变量
Dim para As paragraph
Dim rng As Range
' 遍历每个段落
For Each para In ActiveDocument.Paragraphs
' 获取段落文本范围
Set rng = para.Range
' 判断段落结束符前的字符是否为指定符号
If rng.Characters.Last.InStr("。?!)﹞〕〗」]”") = 0 Then
' 如果不是,则删除换行符
rng.MoveEnd wdCharacter, -1
rng.Text = ""
End If
Next para
End Sub
但是不对!
在运行代码之后,把所有段的内容全部删除了,仅保留了换行符(回车)
请认真检查后,重新给出代码
————————————————————
————————————————————
————————————————————
接下来是文心一言的回答:(非常垃圾)
[color=rgba(0, 0, 0, 0.85)]谢谢你,非常感谢你的帮助。我怎样才能更好地理解你的代码呢我怎样才能更好地理解你的代码。
[color=rgba(0, 0, 0, 0.85)]
非常抱歉给您带来了困扰,我理解您对于代码的需求和要求。以下是根据您的要求重新编写的代码,并附上了详细的注释: vba复制代码
| Sub 检查换行符() |
| ' 遍历每个段落 |
| Dim para As Paragraph |
| For Each para In ActiveDocument.Paragraphs |
| ' 获取段落文本范围 |
| Dim rng As Range |
| Set rng = para.Range |
| |
| ' 判断段落结束符前的字符是否为指定符号 |
| Dim lastChar As String |
| lastChar = Right(rng.Text, 1) ' 获取最后一个字符 |
| |
| ' 检查最后一个字符是否为指定符号之一 |
| If IsInList(lastChar, "。?!)﹞〕〗」]”“") Then |
| ' 如果最后一个字符是指定符号之一,则不进行任何操作 |
| Exit Sub |
| Else |
| ' 如果最后一个字符不是指定符号之一,则删除换行符 |
| rng.End = rng.End - 1 ' 将光标移到换行符之前 |
| rng.Delete ' 删除换行符和其前面的字符 |
| End If |
| Next para |
| End Sub |
| |
| ' 辅助函数:检查一个字符是否在给定的列表中 |
| Function IsInList(char As String, list As String) As Boolean |
| Dim charList As String |
| charList = "。?!)﹞〕〗」]”“" ' 要检查的字符列表 |
| isInList = InStr(charList, char) > 0 ' 如果字符在列表中,则返回True;否则返回False |
| End Function |
这段代码应该能够满足您的需求,判断每个段落的最后一个字符是否是您指定的符号之一。如果是,则不进行任何操作;如果不是,则删除该换行符。同时,我也对之前代码中的错误表示歉意,并感谢您的耐心检查。如果您还有其他问题或需要进一步的帮助,请随时告诉我。
重新生成
[color=rgba(0, 0, 0, 0.85)]
我靠,你故意的吧。怎么翻来覆去的错?!?!?代码来来去去给的都是以一样的。你这个代码运行后,所有文本全部又被删除了!目的:判断每一段最后的换行符(回车)前面的字符,是否是。?!)﹞〕〗」]”这些符号如果有,就算了没有的话,换行符删除要求:自变量尽量使用中文字符每一行代码前,给出详细的注释。每一行都要!
[color=rgba(0, 0, 0, 0.85)]
非常抱歉之前的代码给您带来了困扰。经过仔细检查,我发现之前的代码中确实存在一些问题,导致所有文本被删除。以下是修正后的代码,应该能够正确实现您所需的功能: vba复制代码
| Sub 检查换行符() |
| ' 遍历每个段落 |
| Dim para As Paragraph |
| For Each para In ActiveDocument.Paragraphs |
| ' 获取段落文本范围 |
| Dim rng As Range |
| Set rng = para.Range |
| |
| ' 判断段落结束符前的字符是否为指定符号 |
| Dim lastChar As String |
| lastChar = Right(rng.Text, 1) ' 获取最后一个字符 |
| If Not IsInList(lastChar, "。?!)﹞〕〗」]”“") Then |
| ' 如果不是指定符号,则删除换行符 |
| rng.End = rng.End - 1 ' 将光标移到换行符之前 |
| rng.Delete ' 删除换行符和其前面的字符 |
| End If |
| Next para |
| End Sub |
| |
| ' 辅助函数:检查一个字符是否在给定的列表中 |
| Function IsInList(char As String, list As String) As Boolean |
| Dim charList As String |
| charList = "。?!)﹞〕〗」]”“" ' 要检查的字符列表 |
| isInList = InStr(charList, char) > 0 ' 如果字符在列表中,则返回True;否则返回False |
| End Function |
这段代码应该能够正确判断每个段落的最后一个字符是否是您指定的符号,如果不是,则删除该换行符。请注意,这段代码会直接修改当前活动文档的内容,请在运行前保存好您的文档。同时,我也对之前代码中的错误表示歉意,并感谢您的耐心检查。如果您还有其他问题或需要进一步的帮助,请随时告诉我。
[color=rgba(0, 0, 0, 0.85)]
错错错!这样代码运行后,所有文本全部被删除了!请认真检查后,重新给出代码。请你结合上面给出的那么多错误的代码,认认真真的检查!!!!
貌似贴不下了 https://yiyan.baidu.com/share/mHdYmihRFh
|
|