Excel精英培训网

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

[已解决]求助各位老师,这两段代码怎样合并,谢谢

[复制链接]
发表于 2016-6-18 15:51 | 显示全部楼层 |阅读模式
求助各位老师,这两段代码怎样合并,谢谢
代码1:
Sub 计时()
    If b = True Then
        Application.OnTime Now + TimeValue("00:00:01"), "计时"
        Sheet1.[l12] = Time
        For i = 2 To 7
            If Sheet1.[l12] < arr(2, x) Then
                Sheet1.[l10] = ""
                Sheet1.[l11] = arr(2, 1)
            End If
            If arr(i, x) = Sheet1.[l12] Then
                Mp3name = ThisWorkbook.Path & "\" & arr(i, 1) & ".mp3"
                MPlay (Mp3name)
                Sheet1.[l10] = arr(i, 1)
                If i < 7 Then
                    Sheet1.[l11] = arr(i + 1, 1)
                Else
                    Sheet1.[l10] = ""
                End If
                t = arr(i, x) + TimeValue("00:02:10") '音乐播放20秒
            End If
        Next
        If t = Time Then MStop (Mp3name)
    End If
End Sub

代码2
Sub 计时开始()
    Dim t1 As Date, t2 As Date
    DoEvents
    On Error Resume Next
    With Sheets("时间表")
        c = .Range("b1:g1").Find([l9]).Column
        t1 = .Cells(5, c)
        t2 = .Cells(7, c)
    End With
    With Sheets("操作表")
    If Time <= t1 Then
        .[j6].Font.Color = vbBlue
       .[j6] = "距离考试开始时间还有"
       .[j7] = t1 - Time

    ElseIf Time <= t2 Then
        .[j6].Font.Color = vbRed
        .[j6] = "距离考试结束时间还有"
        .[j7] = t2 - Time

    Else
        .[j6].Font.Color = vbBlack
        .[j6] = "考试结束"
        .[j7] = "00:00:00"

    End If
    .[l12].Value = Time
    End With
    Application.OnTime Time + TimeSerial(0, 0, 1), "计时开始"
End Sub


谢谢


最佳答案
2016-6-18 16:55
试下这个代码吧,我是直接做了合并,我电脑上测试好像没出现这个问题,你再试一下下面的代码:
  1. Sub 计时()
  2.     Dim t1 As Date, t2 As Date
  3.     On Error Resume Next
  4.     If b = True Then
  5.         Application.OnTime Now + TimeValue("00:00:01"), "计时"
  6.         With Sheets("时间表")
  7.             c = .Range("b1:g1").Find(Sheet1.[l9]).Column
  8.             t1 = .Cells(5, c)
  9.             t2 = .Cells(7, c)
  10.         End With
  11.         With Sheets("操作表")
  12.             If Time <= t1 Then
  13.                 .[j6].Font.Color = vbBlue
  14.                 .[j6] = "距离考试开始时间还有"
  15.                 .[j7] = t1 - Time
  16.             ElseIf Time <= t2 Then
  17.                 .[j6].Font.Color = vbRed
  18.                 .[j6] = "距离考试结束时间还有"
  19.                 .[j7] = t2 - Time
  20.             Else
  21.                 .[j6].Font.Color = vbBlack
  22.                 .[j6] = "考试结束"
  23.                 .[j7] = "00:00:00"
  24.             End If
  25.             .[l12] = Time
  26.         End With
  27.         For i = 2 To 7
  28.             If Sheet1.[l12] < arr(2, x) Then
  29.                 Sheet1.[L10] = ""
  30.                 Sheet1.[L11] = arr(2, 1)
  31.             End If
  32.             If arr(i, x) = Sheet1.[l12] Then
  33.                 Mp3name = ThisWorkbook.Path & "" & arr(i, 1) & ".mp3"
  34.                 MPlay (Mp3name)
  35.                 Sheet1.[L10] = arr(i, 1)
  36.                 If i < 7 Then
  37.                     Sheet1.[L11] = arr(i + 1, 1)
  38.                 Else
  39.                     Sheet1.[L10] = ""
  40.                 End If
  41.                 t = arr(i, x) + TimeValue("00:00:10") '音乐播放20秒
  42.             End If
  43.         Next
  44.         If t = Time Then MStop (Mp3name)
  45.     End If
  46. End Sub
复制代码
发表于 2016-6-18 16:25 | 显示全部楼层
本帖最后由 老司机带带我 于 2016-6-18 16:26 编辑

下面代码是单纯的合并,目的也能实现了:
  1. Sub 计时()
  2.     Dim t1 As Date, t2 As Date
  3.     If b = True Then
  4.         Application.OnTime Now + TimeValue("00:00:01"), "计时"
  5.         With Sheets("时间表")
  6.             c = .Range("b1:g1").Find([l9]).Column
  7.             t1 = .Cells(5, c)
  8.             t2 = .Cells(7, c)
  9.         End With
  10.         With Sheets("操作表")
  11.             If Time <= t1 Then
  12.                 .[j6].Font.Color = vbBlue
  13.                 .[j6] = "距离考试开始时间还有"
  14.                 .[j7] = t1 - Time
  15.             ElseIf Time <= t2 Then
  16.                 .[j6].Font.Color = vbRed
  17.                 .[j6] = "距离考试结束时间还有"
  18.                 .[j7] = t2 - Time
  19.             Else
  20.                 .[j6].Font.Color = vbBlack
  21.                 .[j6] = "考试结束"
  22.                 .[j7] = "00:00:00"
  23.             End If
  24.             .[l12] = Time
  25.         End With
  26.         For i = 2 To 7
  27.             If Sheet1.[l12] < arr(2, x) Then
  28.                 Sheet1.[L10] = ""
  29.                 Sheet1.[L11] = arr(2, 1)
  30.             End If
  31.             If arr(i, x) = Sheet1.[l12] Then
  32.                 Mp3name = ThisWorkbook.Path & "" & arr(i, 1) & ".mp3"
  33.                 MPlay (Mp3name)
  34.                 Sheet1.[L10] = arr(i, 1)
  35.                 If i < 7 Then
  36.                     Sheet1.[L11] = arr(i + 1, 1)
  37.                 Else
  38.                     Sheet1.[L10] = ""
  39.                 End If
  40.                 t = arr(i, x) + TimeValue("00:00:10") '音乐播放20秒
  41.             End If
  42.         Next
  43.         If t = Time Then MStop (Mp3name)
  44.     End If
  45. End Sub
复制代码

0000000.rar

26.26 KB, 下载次数: 15

回复

使用道具 举报

 楼主| 发表于 2016-6-18 16:38 | 显示全部楼层
本帖最后由 huangjinyui 于 2016-6-18 16:42 编辑
老司机带带我 发表于 2016-6-18 16:25
下面代码是单纯的合并,目的也能实现了:

老师,你好,非常感谢你多次的帮助,但运行时还出现了一个小问题,运行时错误‘91’,对象变量或with块变量未设置,是什么原因?谢谢
Sub 计时()
    Dim t1 As Date, t2 As Date
    If b = True Then
        Application.OnTime Now + TimeValue("00:00:01"), "计时"
        With Sheets("时间表")
            c = .Range("b1:g1").Find([l9]).Column
            t1 = .Cells(5, c)
            t2 = .Cells(7, c)
        End With
        With Sheets("操作表")
            If Time <= t1 Then
                .[j6].Font.Color = vbBlue
                .[j6] = "距离考试开始时间还有"
                .[j7] = t1 - Time
            ElseIf Time <= t2 Then
                .[j6].Font.Color = vbRed
                .[j6] = "距离考试结束时间还有"
                .[j7] = t2 - Time
            Else
                .[j6].Font.Color = vbBlack
                .[j6] = "考试结束"
                .[j7] = "00:00:00"
            End If
            .[l12] = Time
        End With
        For i = 2 To 7
            If Sheet1.[l12] < arr(2, x) Then
                Sheet1.[L10] = ""
                Sheet1.[L11] = arr(2, 1)
            End If
            If arr(i, x) = Sheet1.[l12] Then
                Mp3name = ThisWorkbook.Path & "\" & arr(i, 1) & ".mp3"
                MPlay (Mp3name)
                Sheet1.[L10] = arr(i, 1)
                If i < 7 Then
                    Sheet1.[L11] = arr(i + 1, 1)
                Else
                    Sheet1.[L10] = ""
                End If
                t = arr(i, x) + TimeValue("00:00:10") '音乐播放20秒
            End If
        Next
        If t = Time Then MStop (Mp3name)
    End If
End Sub
回复

使用道具 举报

发表于 2016-6-18 16:55 | 显示全部楼层    本楼为最佳答案   
试下这个代码吧,我是直接做了合并,我电脑上测试好像没出现这个问题,你再试一下下面的代码:
  1. Sub 计时()
  2.     Dim t1 As Date, t2 As Date
  3.     On Error Resume Next
  4.     If b = True Then
  5.         Application.OnTime Now + TimeValue("00:00:01"), "计时"
  6.         With Sheets("时间表")
  7.             c = .Range("b1:g1").Find(Sheet1.[l9]).Column
  8.             t1 = .Cells(5, c)
  9.             t2 = .Cells(7, c)
  10.         End With
  11.         With Sheets("操作表")
  12.             If Time <= t1 Then
  13.                 .[j6].Font.Color = vbBlue
  14.                 .[j6] = "距离考试开始时间还有"
  15.                 .[j7] = t1 - Time
  16.             ElseIf Time <= t2 Then
  17.                 .[j6].Font.Color = vbRed
  18.                 .[j6] = "距离考试结束时间还有"
  19.                 .[j7] = t2 - Time
  20.             Else
  21.                 .[j6].Font.Color = vbBlack
  22.                 .[j6] = "考试结束"
  23.                 .[j7] = "00:00:00"
  24.             End If
  25.             .[l12] = Time
  26.         End With
  27.         For i = 2 To 7
  28.             If Sheet1.[l12] < arr(2, x) Then
  29.                 Sheet1.[L10] = ""
  30.                 Sheet1.[L11] = arr(2, 1)
  31.             End If
  32.             If arr(i, x) = Sheet1.[l12] Then
  33.                 Mp3name = ThisWorkbook.Path & "" & arr(i, 1) & ".mp3"
  34.                 MPlay (Mp3name)
  35.                 Sheet1.[L10] = arr(i, 1)
  36.                 If i < 7 Then
  37.                     Sheet1.[L11] = arr(i + 1, 1)
  38.                 Else
  39.                     Sheet1.[L10] = ""
  40.                 End If
  41.                 t = arr(i, x) + TimeValue("00:00:10") '音乐播放20秒
  42.             End If
  43.         Next
  44.         If t = Time Then MStop (Mp3name)
  45.     End If
  46. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2016-7-3 15:35 | 显示全部楼层
老司机带带我 发表于 2016-6-18 16:55
试下这个代码吧,我是直接做了合并,我电脑上测试好像没出现这个问题,你再试一下下面的代码:

老师,在吗?我修改了代码,不知怎么会运行慢了呢?可以帮我看看吗?谢谢

测试.rar

213.04 KB, 下载次数: 1

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 19:05 , Processed in 1.289127 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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