Vba 代码中有什么错误,因为它不起作用
在我的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时保留值 此工作簿代码: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
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