Excel 如果满足条件,如何为复制数据编写代码

Excel 如果满足条件,如何为复制数据编写代码,excel,vba,Excel,Vba,代码每5秒复制一次数据,但我希望它仅在bu80时复制,若不满足条件,则不执行任何操作 这是密码 Sub UpdateData() If Hour(Time) >= 3 And Minute(Time) >= 1 Then Application.OnTime Now + TimeValue("0:0:5"), "UpdateData", False Else Application.OnTime Now + TimeValue("0:0

代码每5秒复制一次数据,但我希望它仅在bu80时复制,若不满足条件,则不执行任何操作

这是密码

Sub UpdateData()
    If Hour(Time) >= 3 And Minute(Time) >= 1 Then
        Application.OnTime Now + TimeValue("0:0:5"), "UpdateData", False
    Else
        Application.OnTime Now + TimeValue("0:0:5"), "UpdateData"
    CopyData
    End If
End Sub
Sub CopyData()
    Dim sht1 As Worksheet
    Dim sht2 As Worksheet
    Dim cRng As Range
    Dim dCol As Long
    Set sht1 = ThisWorkbook.Sheets("Sheet1")
    Set sht2 = ThisWorkbook.Sheets("Sheet2")
    Set cRng = sht1.Range("Bu1:bu8")
        dCol = sht2.Cells(2, Columns.Count).End(xlToLeft).Column + 1
        sht2.Range(Cells(2, dCol).Address, Cells(8, dCol + 1).Address) = cRng.Value
End Sub

您可以这样做:

Sub CopyData()
    Dim sht1 As Worksheet
    Dim sht2 As Worksheet
    Dim cRng As Range, c As Range
    Dim dCol As Long
    Set sht1 = ThisWorkbook.Sheets("Sheet1")
    Set c = sht1.Range("BU8")

    If c.Value <> 0 and Len(c.Value)>0 Then
        Set sht2 = ThisWorkbook.Sheets("Sheet2")
        Set cRng = sht1.Range("Bu1:bu8")
        sht2.Cells(2, Columns.Count).End(xlToLeft) _
                .Offset(0, 1).Resize(8 ,1).value = cRng.Value

    End If
End Sub
Sub-CopyData()
Dim sht1作为工作表
将sht2变暗为工作表
变暗cRng As范围,c As范围
将dCol设置为长
设置sht1=ThisWorkbook.Sheets(“Sheet1”)
设置c=sht1.范围(“BU8”)
如果c.值为0且Len(c.值)>0,则
Set sht2=ThisWorkbook.Sheets(“Sheet2”)
设置cRng=sht1.范围(“Bu1:bu8”)
sht2.Cells(2,Columns.Count).End(xlToLeft)_
.Offset(0,1)。调整大小(8,1)。值=cRng.value
如果结束
端接头

您可以执行以下操作:

Sub CopyData()
    Dim sht1 As Worksheet
    Dim sht2 As Worksheet
    Dim cRng As Range, c As Range
    Dim dCol As Long
    Set sht1 = ThisWorkbook.Sheets("Sheet1")
    Set c = sht1.Range("BU8")

    If c.Value <> 0 and Len(c.Value)>0 Then
        Set sht2 = ThisWorkbook.Sheets("Sheet2")
        Set cRng = sht1.Range("Bu1:bu8")
        sht2.Cells(2, Columns.Count).End(xlToLeft) _
                .Offset(0, 1).Resize(8 ,1).value = cRng.Value

    End If
End Sub
Sub-CopyData()
Dim sht1作为工作表
将sht2变暗为工作表
变暗cRng As范围,c As范围
将dCol设置为长
设置sht1=ThisWorkbook.Sheets(“Sheet1”)
设置c=sht1.范围(“BU8”)
如果c.值为0且Len(c.值)>0,则
Set sht2=ThisWorkbook.Sheets(“Sheet2”)
设置cRng=sht1.范围(“Bu1:bu8”)
sht2.Cells(2,Columns.Count).End(xlToLeft)_
.Offset(0,1)。调整大小(8,1)。值=cRng.value
如果结束
端接头

一些专家说您必须放置事件更改工作表,但我不知道这一点。一些专家说您必须放置事件更改工作表,但我不知道这一点。谢谢您的回复。它给错误运行时13不匹配,我想复制当细胞改变它的价值,正如所提到的价值是在几秒钟后自动由兰德计算功能改变。谢谢你的答复。它给出了错误运行时13不匹配,我想在单元格更改它的值时进行复制,正如所提到的,值在几秒钟后由rand计算函数自动更改。