Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1326|回复: 2

[已解决]正则表达式在循环中的应用

[复制链接]
发表于 2021-9-20 16:58 | 显示全部楼层 |阅读模式
Set WB = Workbooks.Open(Path & File)
    k = k + 1
    ss = ActiveWorkbook.Sheets(1).Range("a1")
    m = InStr(1, ss, "热心人", vbTextCompare)
    ThisWorkbook.Sheets("sheet1").Range("a" & k + 1) = Mid(ss, m + 6, 10)
    ThisWorkbook.Sheets("sheet1").Range("b" & k + 1) = Mid(ss, m + 55, 4)
  Set reg = CreateObject("VBScript.RegExp")
         sr = ActiveWorkbook.Sheets(1).Range("d4").Value & ActiveWorkbook.Sheets(1).Range("i4").Value
         With reg
           .Global = True
            .Pattern = "帅"
           If .test(sr) Then ThisWorkbook.Sheets("sheet1").Range("c" & k + 1) = ActiveWorkbook.Sheets(1).Range("b4")
           If .test(sr) And Range("b4") = "" Then
           .Pattern = "\d\.?\d"
           If .test(sr) Then
             Set ma = .Execute(sr)
           For Each z In ma
            ThisWorkbook.Sheets("sheet1").Range("c" & k + 1) = Val(z)
              Next z
           Else
            ThisWorkbook.Sheets("sheet1").Range("c" & k + 1) = Right(ActiveWorkbook.Sheets(1).Range("c4"), 4)
              End If
              End If
            .Pattern = "丑"
           If .test(sr) Then ThisWorkbook.Sheets("sheet1").Range("c" & k + 1) = ""
         End With

上面程序对单个工作薄运行可以达到预期效果,多工作薄遍历执行后就不行,没有报错,只是标红代码没有达到预期效果,望大家指点一下,是什么原因导致的,或遇到类似问题,如何解决的

最佳答案
2021-9-20 18:21
在可疑的语句前后前后打上断点,就可以知道程序代码是否运行到指定位置。然后单步调试。利用立即窗口(ctrl+G)直接调试便可快速找到问题所在。
 楼主| 发表于 2021-9-20 18:04 | 显示全部楼层
If .test(sr) And Range("b4") = "" Then    找到原因了
回复

使用道具 举报

发表于 2021-9-20 18:21 | 显示全部楼层    本楼为最佳答案   
在可疑的语句前后前后打上断点,就可以知道程序代码是否运行到指定位置。然后单步调试。利用立即窗口(ctrl+G)直接调试便可快速找到问题所在。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-3-29 04:13 , Processed in 0.354873 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表