能否一次将所有文本的数值加上0.8,明总指点
本帖最后由 作者 于 2003-8-29 19:05:02 编辑能否一次将所有文本的数值加上一定的值?
Private Sub CommandButton1_Click()
Dim s As AcadSelectionSet
Dim A As String, I As Single
Dim start As Integer
Dim ed As Integer
Dim s1 As String
Dim s2 As String
Dim ft(0) As Integer
Dim fl(0) As Variant
ft(0) = 0
fl(0) = "text"
Set s = ThisDrawing.SelectionSets.Add("a2a2121")
Me.Hide
s.SelectOnScreen ft, fl
Dim e As AcadText
For Each e In s
'将对象的字符给变量A
A = e.TextString
'获得截取字符串的首位置
start = InStr(1, A, "/")
'获得欲截取数据的结束位置
ed = InStr(1, A, "dBm")
'将前面的字符赋给S1
s1 = Mid(A, 1, start)
'将后面的字符赋给S1
s2 = Mid(A, ed, 3)
'取出数据,并改变
I = Val(Mid(A, start + 1, ed - start))
I = I + 0.8
e.TextString = s1 & I & s2
e.Update
Next e
End Sub
字符串的格式:F1-A1/3.5dBm 楼层-天线/输出功率
F15-A1/-6.5dBm .....
要求,将输出功率加大0.8
请明总指点。 A = e.TextString
'获得截取字符串的首位置
start = InStr(1, A, "/")
'获得欲截取数据的结束位置
end = InStr(1, A, "dBm")
'将前面的字符赋给S1
s1 = Mid(A, 1, start)
'将后面的字符赋给S1
s2 = Mid(A, ed)
'取出数据,并改变
'长度应该是end-start-1,如:F1-A1/3.5dBm,start为6,end为10。
'I应该定义为Double型,如3.5是实数。
I = Val(Mid(A, start + 1, end - start-1))
I = I + 0.8
e.TextString = s1 & I & s2
e.Update 谢谢指点。不过在运行过程中并没有发生错误。是不是它只把数据读到了 I中,而对于字符就自动截断了。
为什么要将 I 定义为DOUBLE?SINGLE不也是浮点小数吗?(SINGLE的运行速度更快一些啊)
而且在这里它并不与CAD的计量单位发生关系。只是一次简单的小数运算罢了。 这个是Val的用法,它试着截取字符串的前部分,将它转化成数值。但是如果对于“-”开头的,则不能转化。详细的用法可以看帮助文件。最好使用类型转化,比如CDbl。
定义为Single也可,从编程的习惯来说,I一般是定义为整型的,它是Integer的开头字母,容易识别。
页:
[1]