MS Project:如何获取TimescaleEdit方法设置的值?
获取MS Project时间刻度缩放级别解决方案
MS Project的TimescaleEdit方法仅用于设置时间刻度参数(如通过Enlarge参数调整缩放级别),它是一个无返回值的Sub过程,无法直接通过它读取已设置的缩放状态。要获取当前时间刻度的数值化状态,可通过以下两种方式实现:
1. 获取当前绝对缩放级别(整数结果)
使用Application.TimescaleLevel属性直接返回当前时间刻度的级别数值,该值对应不同的时间单位(数值越小,时间跨度越大):
' 在VBA立即窗口或代码中执行 Dim currentScale As Integer currentScale = Application.TimescaleLevel Debug.Print currentScale
示例返回值对应关系(参考MS Project对象模型):
- 1 = 年
- 2 = 半年
- 3 = 季度
- 4 = 月
- 5 = 周
- 6 = 天
- 7 = 小时
- 8 = 分钟
2. 获取精确刻度参数(单位+数量)
如果需要更细致的刻度设置信息(比如每个上级单位包含的当前刻度数),可读取ActiveWindow.View.Timescale的相关属性:
' 获取主要刻度单位与数量 Dim majorUnit As PjTimescaleUnit Dim majorCount As Integer majorUnit = ActiveWindow.View.Timescale.MajorUnit majorCount = ActiveWindow.View.Timescale.MajorCount ' 输出数值化结果(单位枚举值转整数) Debug.Print "主要刻度单位数值:" & CInt(majorUnit) Debug.Print "主要刻度数量:" & majorCount ' 同理可获取次要刻度参数 Dim minorUnit As PjTimescaleUnit Dim minorCount As Integer minorUnit = ActiveWindow.View.Timescale.MinorUnit minorCount = ActiveWindow.View.Timescale.MinorCount Debug.Print "次要刻度单位数值:" & CInt(minorUnit) Debug.Print "次要刻度数量:" & minorCount
补充说明
TimescaleEdit Enlarge:=TheValue中的Enlarge参数是相对调整量:
Enlarge:=1表示放大1级Enlarge:=-1表示缩小1级
调整后的最终级别可通过Application.TimescaleLevel直接读取。
内容的提问来源于stack exchange,提问作者FloMSD
相关产品推荐
相关产品推荐

