Excel精英培训网

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

[已解决]求助代码的修改,谢谢了 俺是VBA盲,请别见怪

[复制链接]
发表于 2013-8-22 20:15 | 显示全部楼层 |阅读模式
借用老师的下面代码,想请老师再给修改一下,清空A5单元格中的连续的三个汉字。请给予修改,谢谢

Private Sub CommandButton1_Click()
    Dim mypath As String
    Dim sht As Worksheet
    Dim MyFile As String
    Application.ScreenUpdating = False
    mypath = ThisWorkbook.Path & "\"
        myname = Dir(mypath & "*.xls")
            Do While myname <> ThisWorkbook.Name And myname <> ""
                Workbooks.Open mypath & myname
                With ActiveWorkbook
                    s$ = Left(myname, 1)
                   If InStr("ABCD", s) Then
                      For Each sht In Sheets
                          If Left(sht.Name, 3) = s & "01" Then sht.Range("A5") = Replace(sht.Range("A5"), " ", "")
                      Next
                   End If
                    ActiveWorkbook.Close True
                End With
            myname = Dir
        Loop

    Application.ScreenUpdating = True
End Sub


最佳答案
2013-8-22 22:00
Private Sub CommandButton1_Click()
    Dim mypath As String
    Dim sht As Worksheet
    Dim MyFile As String
    Application.ScreenUpdating = False
    mypath = ThisWorkbook.Path & "\"
    myname = Dir(mypath & "*.xls")
    Do While myname <> ThisWorkbook.Name And myname <> ""
        Workbooks.Open mypath & myname
        With ActiveWorkbook
            S$ = Left(myname, 1)
            If InStr("ABCD", S) Then
                For Each sht In Sheets
                    If Left(sht.Name, 3) = S & "01" Then
                        CL = sht.Range("A5").Value
                        S = InStr(CL, "省")
                        T = InStr(CL, "市")
                        sht.Range("A5") = Left(CL, S) & Right(CL, Len(CL) - T)
                    End If
                Next
            End If
            ActiveWorkbook.Close True
        End With
        myname = Dir
    Loop
    Application.ScreenUpdating = True
End Sub

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-8-22 21:11 | 显示全部楼层
不是很明白 最好附件加说明 更能说明问题
回复

使用道具 举报

 楼主| 发表于 2013-8-22 21:28 | 显示全部楼层
我心飞翔410 发表于 2013-8-22 21:11
不是很明白 最好附件加说明 更能说明问题

上面这段代码是批量清空excel文件中“*01”开头的工作表中A5单元格中所有的 空格,我现在想请老师改改这段代码,让它来批量删除A5单元格中的连续的几个字符。
源代码的意思是:
比如源程序的效果是:A5单元格内容为:“名称:      酸辣粉      ”,这个里面有空格,运行程序后得到“名称:酸辣粉 ”。
现在想改成的效果是:A5单元格内容为:“名称:**省**市**县**”,想把其中的”**市“删除掉得到“**省**县**”
回复

使用道具 举报

发表于 2013-8-22 21:54 | 显示全部楼层
sht.Range("A5") = Replace(sht.Range("A5"), " ", "")
换成
sht.Range("A5") .Replace What:="省*市", Replacement:="省", LookAt:=xlPart
试试看
回复

使用道具 举报

发表于 2013-8-22 22:00 | 显示全部楼层    本楼为最佳答案   
Private Sub CommandButton1_Click()
    Dim mypath As String
    Dim sht As Worksheet
    Dim MyFile As String
    Application.ScreenUpdating = False
    mypath = ThisWorkbook.Path & "\"
    myname = Dir(mypath & "*.xls")
    Do While myname <> ThisWorkbook.Name And myname <> ""
        Workbooks.Open mypath & myname
        With ActiveWorkbook
            S$ = Left(myname, 1)
            If InStr("ABCD", S) Then
                For Each sht In Sheets
                    If Left(sht.Name, 3) = S & "01" Then
                        CL = sht.Range("A5").Value
                        S = InStr(CL, "省")
                        T = InStr(CL, "市")
                        sht.Range("A5") = Left(CL, S) & Right(CL, Len(CL) - T)
                    End If
                Next
            End If
            ActiveWorkbook.Close True
        End With
        myname = Dir
    Loop
    Application.ScreenUpdating = True
End Sub

评分

参与人数 1 +3 收起 理由
zhycl + 3 老师,您终于出现了,好像你啊

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2013-8-22 22:07 | 显示全部楼层
djyjysxxs 发表于 2013-8-22 21:54
sht.Range("A5") = Replace(sht.Range("A5"), " ", "")
换成
sht.Range("A5") .Replace What:="省*市",  ...

提示错误
QQ截图20130822220723.jpg
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 12:54 , Processed in 0.307638 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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