使用 IF_THEN_ELSE 语句和复制粘贴操作创建函数

问题描述 投票:0回答:1
Function UC (x As String)

If x = "Not Yet Start" or _

x = "In-Progress" Then

UC = "N/a"

If x = "Complete" Then

UC= Format (Now, "dd-mm-yy hh:mm:ss")

Else

Cells(x).Copy

ActiveSheet.Cells(x).PasteSpecial

End If

End Function

enter image description here

我想创建一个函数,当我将“当前状态”设置为“尚未开始/进行中”时,“日期完成”列将显示为“不适用”,然后当我将“完成”设置为“完成日期”列时,日期将显示在“日期完成”列中。稍后当我想将当前状态更改为已发货时。我不希望 Date Complete 为空,因为当语句为 false 时,函数 IF_*THEN_*ELSE 会在其中进行操作,因此它会更改操作。所以,我想如果我复制“日期完成”中的日期,然后将特殊(仅值)粘贴到同一列(“日期完成”),那么日期将不会更改,那么该函数将被删除,因此它不会影响日期。

所以,现在的问题是,Vba编码有很多错误,有人可以帮忙吗?或者有什么更好的建议给我。如果我使用 Excel 公式 =today() 那么日期明天就会改变。这就是为什么我想使用 VBA 编码。

解决我的错误并确保该功能可以使用

excel vba copy-paste
1个回答
0
投票

将此代码放入工作表的代码模块中

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Columns("D")) Is Nothing Then
  If Target = "Not Yet Start" Or Target = "In-Progress" Then
    Target.Offset(0, 2) = "N/A"
  ElseIf Target = "Complete" Then
    Target.Offset(0, 2).NumberFormat = "dd-mm-yy hh:mm:ss"
    Target.Offset(0, 2) = Now
  Else
    Target.Offset(0, 2) = "Unknown Status!"
  End If
End If
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.