非常具体的问题。我得到了一个学习vba的任务,但是我真的找不到任何解决我的问题的东西。
项目
截图基本上如果列"Sammelvorgang"表示"Nein",列"Text7"应该包含"Nr.">
我正在寻找VBA的基础知识,但我找不到针对特定列或特定行的解决方案。
Sub schedule_Number()
Dim tsk As Task
For Each tsk In ActiveProject.Tasks
If Not (tsk Is Nothing) Then
If (tsk.Sammelvorgang.Value = "Nein") Then
tsk.Text7 = tsk.Nr
End If
End If
Next tsk
End Sub
Thanks for the help
显示的值(总是字符串)和存储的值(日期、字符串、数字等)之间存在差异。在VBA中,使用存储值更简单。在本例中,Sammelvorgang是Summary(我相信),它是一个布尔值,因此代码可以这样编写:
Sub schedule_Number()
Dim tsk As Task
For Each tsk In ActiveProject.Tasks
If Not (tsk Is Nothing) Then
If Not tsk.Summary Then
tsk.Text7 = tsk.ID
End If
End If
Next tsk
不幸的是,在VBA中,对象名称,属性,方法都是英文的。可以使用Application对象的FieldNameToFieldConstant方法从本机语言字段名派生字段ID。(然而,我没有任何非英语版本来测试这一点)。
然后使用字段ID, GetField方法可以用来返回显示值(字符串)。
这里是英文文档:FieldNameToFieldConstant和GetField。