Vba 代码中有什么错误,因为它不起作用

Vba 代码中有什么错误,因为它不起作用,vba,excel,Vba,Excel,在我的Excel工作簿中,从C到p有14列,范围为C1:P200。第1行包含时间值。示例:C1=2014年9月27日上午8:42:34;D1=2014年9月27日上午9:12:25等等……直到P1 所需输出:C2:C200应立即变为无公式,并在系统时间>=C1时保留值。同样,D2:200应变为无公式,并在系统时间>=D1时保留值,依此类推,直到p列,即P2:P200应变为无公式,并在系统时间>=P1时保留值 此工作簿代码: Private Sub Workbook_Open() Dim

在我的Excel工作簿中,从C到p有14列,范围为C1:P200。第1行包含时间值。示例:C1=2014年9月27日上午8:42:34;D1=2014年9月27日上午9:12:25等等……直到P1

所需输出:C2:C200应立即变为无公式,并在系统时间>=C1时保留值。同样,D2:200应变为无公式,并在系统时间>=D1时保留值,依此类推,直到p列,即P2:P200应变为无公式,并在系统时间>=P1时保留值

此工作簿代码:

Private Sub Workbook_Open()
    Dim cl As Range

    For Each cl In ThisWorkbook.Sheets("Sheet1").Range("A1:P1")
        Application.OnTime cl.Value, "'ConvertFormulasToValues """ & cl.Range("A2:A199").Address & """'"
    Next cl
End Sub
然后我创建了一个子系统,如下所示:

Private Sub ConvertFormulasToValues(RngToConvertAddress As String)
Dim rng As Range
    Set rng = Range(RngToConvertAddress)
    rng.Value = rng.Value
End Sub
我犯了什么错误,因为代码不符合要求。

两件事:

a。将
Private
一词从
Sub
之前删除可能是解决方案

b。您提到的14列是C到P。但是您的代码包含
范围(“A1:P1”)
是否应该是
范围(“C1:P1”)

顺便说一下,如果过程中出现任何错误消息,您应该发布

附加:

Private Sub Workbook_Open()
Dim cl As Range

For Each cl In ThisWorkbook.Sheets("Sheet1").Range("C1:P1")
Application.OnTime cl.Value, "'ConvertFormulasToValues """ & cl.Range("A2:A199").Address & """'"  
Next cl
End Sub

附加图像:范围。范围说明


您需要将以下内容放入“模块”中,并将
Private
更改为
Public

Public Sub ConvertFormulasToValues(RngToConvertAddress As String)
Dim rng As Range
    Set rng = Range(RngToConvertAddress)
    rng.Value = rng.Value
End Sub
以下内容可以保留在“ThisWorkbook”下:


测试并运行。

“未按要求运行”的确切含义是什么?在这里不需要喊。要求:C2:C200应该立即成为无公式,并在系统时间>=C1时保留该值,D2:200应成为无公式,并在系统时间>=D1时保留值,依此类推,直到P列,即P2:P200应成为无公式,并在系统时间>=P1时保留值。我认为问题很清楚。但是我不知道那叫喊的事。所以向上投票并给出了答案。如果调用和被调用的子例程位于同一个位置,则私有模块也可以工作module@sam,调用位置是此工作簿部分,不应存在所谓的sub。对吗?Sam,请详细说明此代码需要粘贴的位置:作为工作表事件代码;此工作簿或模块?Sam,代码有效,但只需纠正1项操作:在“截止”时间触发后,单元格P2:P199(最后一个数据列)被“边框”覆盖。不需要覆盖P2:P199,因此需要在代码中进行一些修改。Sam,如果我再清楚一点的话:代码可以工作,但在触发后,P2:P199的范围会自动“选择”,即P2:P199被边缘的“行进蚂蚁”覆盖。请通过修改代码删除最后一个操作。可以让光标停留在C2吗?我已经更新了我的代码..并为回复得太晚表示歉意sam。我已经将此代码粘贴到ws中,带有名为“F24”的选项卡。Excel工作簿中还有两个ws,其选项卡名为“A4”和“7”A4'包含工作表事件代码和使用实时源更新的“7”代码。我的问题:“F24”中的新代码是否会影响“A4”或“7”的工作?
Sub t()

For Each cell In Range("c1:p1")
    If Now >= cell.Value Then
        Call timer1(cell.Column)
    End If
 Application.CutCopyMode = false
 Range("c1").select

Next cell

End Sub


Sub timer1(col As Integer)
With Sheets("Sheet1")
    .Range(.Cells(2, col), .Cells(199, col)).Copy
    .Cells(2, col).PasteSpecial (xlPasteValues)
End With

End Sub
Private Sub Workbook_Open()
    Dim cl As Range

    For Each cl In ThisWorkbook.Sheets("Sheet1").Range("A1:P1")
        Application.OnTime cl.Value, "'ConvertFormulasToValues """ & cl.Range("A2:A199").Address & """'"
    Next cl
End Sub
Sub t()

For Each cell In Range("c1:p1")
    If Now >= cell.Value Then
        Call timer1(cell.Column)
    End If
 Application.CutCopyMode = false
 Range("c1").select

Next cell

End Sub


Sub timer1(col As Integer)
With Sheets("Sheet1")
    .Range(.Cells(2, col), .Cells(199, col)).Copy
    .Cells(2, col).PasteSpecial (xlPasteValues)
End With

End Sub