vba校对统计不同工作薄(2)

Option Explicit

Sub Find()
Dim myWorkbook As Workbook
Dim ws As Worksheet
Dim rg As Range, rg2 As Range
Dim rgFirst As Range
Dim nLength As Integer, i As Integer
Dim strTmp As String
Dim strFilePath As String '第三方2文件夹中导入xml文件名
Dim nNum As Integer  '销售件数
Dim s() As String
'nLength = 0
strTmp = ""
On Error GoTo errEx

Set rgFirst = Cells(ActiveCell.Row, ActiveCell.Column)

Do While rgFirst.Value <> ""  '*************循环**********************************

nLength = 0
strTmp = rgFirst.Value

s() = Split(strTmp, ".")
If UBound(s) <> 1 Then
    MsgBox (strTmp & "选择有误!")
    Exit Sub
End If
strTmp = "2013-" & s(0) & "-" & s(1)

Set ws = ThisWorkbook.Sheets(3)
ws.Columns("E:E").NumberFormatLocal = "yyyy-m-d"
ws.Columns("G:G").NumberFormatLocal = "yyyy-m-d"
Set rg2 = ws.Cells(rgFirst.Row, 1)
rg2 = s(0)
rg2.Offset(0, 1) = rgFirst.Offset(0, 1)  '发货地
rg2.Offset(0, 4) = strTmp                '发货日期
rg2.Offset(0, 7) = rgFirst.Offset(0, 3)  '发货件数
rg2.Offset(0, 12) = rgFirst.Offset(0, 4)

'strFilePath = ThisWorkbook.Path & "/四川科伦每天销售发货明细.xls"
'nNum = rgFirst.Offset(0, 2)

Set myWorkbook = Workbooks.Item("四川科伦每天销售发货明细.xls")
'Set myWorkbook = ActiveWorkbook

For i = 2 To myWorkbook.Sheets.Count '''''''''''

Set ws = myWorkbook.Worksheets(i)
Set rg = ws.Cells(1, 1)
Do While rg.Row <> ws.UsedRange.Rows.Count + ws.UsedRange.Row - 1 + 1
   If InStr(rg.Offset(0, 4).Value, rg2.Offset(0, 1)) > 0 And _
   rg.Offset(0, 8).Value = rg2.Offset(0, 4) And _
   rg.Offset(0, 5).Value = rg2.Offset(0, 7) Then

        rg2.Offset(0, 2) = rg.Offset(0, 4) '收货地详细地址
        rg2.Offset(0, 3) = rg.Offset(0, 3)  '收货单位
        rg2.Offset(0, 5) = rg.Offset(0, 1)  '发货单号
        rg2.Offset(0, 6) = rg.Offset(0, 0)  '单据日期
        Exit For
    End If
    Set rg = rg.Offset(1, 0)
Loop

Next ''''''''''''''''''''''''''

  If rg.Row = ws.UsedRange.Rows.Count + ws.UsedRange.Row Then
    MsgBox strTmp & "销售单没找到!可能错误!"
     rg2.EntireRow.Interior.Color = 65535
     Exit Sub
  End If

  Set rgFirst = rgFirst.Offset(1, 0)
  rgFirst.Select
  
Loop          ' *************循环**********************************

  Exit Sub
errEx:
 MsgBox (strTmp & "的执行有错误,请检查!")
End Sub

Sub Macro1()
Application.OnKey "^+g", "Find"
End Sub

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VBA中批量替换工作字符串可以通过以下步骤实现: 1. 打开目标工作,可以使用Open方法打开或者直接使用Workbooks集合中的目标工作。 2. 遍历目标工作的所有工作表,可以使用For Each循环遍历Worksheets集合。 3. 在每个工作表中,使用Range对象的Replace方法来替换指定的字符串。 4. 确定要替换的字符串以及替换后的字符串。可以使用InputBox获取用户输入的字符串,或者在VBA代码中提前指定。 以下是一个示例代码: ```vba Sub 批量替换工作字符串() Dim wb As Workbook Dim ws As Worksheet Dim findStr As String Dim replaceStr As String ' 打开目标工作 Set wb = Workbooks.Open("目标工作路径") ' 获取要替换的字符串 findStr = InputBox("请输入要替换的字符串:") ' 获取替换后的字符串 replaceStr = InputBox("请输入替换后的字符串:") ' 遍历所有工作表 For Each ws In wb.Worksheets ' 替换工作表中的字符串 ws.Cells.Replace What:=findStr, Replacement:=replaceStr, LookAt:=xlPart, _ MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False Next ws ' 关闭保存工作 wb.Close SaveChanges:=True End Sub ``` 运行上述代码后,程序会先弹出两个输入框分别让您输入要替换的字符串和替换后的字符串,然后会逐个替换目标工作中的每个工作表中的字符串。最后,工作会自动关闭并保存修改。请确保目标工作的文件路径和名称正确填写。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值