XJ_HE 发表于 2003-11-18 09:42:00

大侠,关于文本操作,指教。

本帖最后由 作者 于 2003-11-18 14:55:08 编辑

Sub p3()
Dim i As Single
Dim j As Single
Dim start As Integer
Dim ed As Integer
Dim str1 As String
Dim str2 As String
Dim a As String
j = ThisDrawing.Utility.GetReal(vbCrLf & "输入增加功率:")
Call selectobject
Dim e As AcadMText
For Each e In se
'将对象的字符给变量A
a = e.TextString
'获得截取字符串的首位置
start = InStr(1, a, "/")
'获得欲截取数据的结束位置
ed = InStr(1, a, "dBm")
'将前面的字符赋给S1
str1 = Mid(a, 1, start)
   '将后面的字符赋给S1
str2 = Mid(a, ed, 3)
'取出数据,并改变
i = Val(Mid(a, start + 1, ed - start))
(在这里出错,以前I的值就是一个数值,比如:39#-F13-A1/1.6dBm,I的值为1.6)
(但是最近在这里总是出错,它不仅取出了数值。I    竟然会是一个字串,里面有关于文本格式的说明。
每次我都要将文本改为gbc字体。才能继续下去。究竟是什么原因,请教各位。)

i = i + j
e.TextString = str1 & Format(i, "0.0") & str2
e.Update
Next e
End Sub

mccad 发表于 2003-11-18 12:33:00

你把原来整个字符串内容贴上来吧。
因为多行文字有格式符,有时你做更改时会不知不觉地加入了一些格式符,如字体及文字大小等内容。

XJ_HE 发表于 2003-11-18 15:07:00



这是我们的文件。每次去修改功率挺麻烦。我就写了一段小程序。希望可以轻松一些,以前挺好用。后来就出错。好象是有的文件可以,有的就出错,取回来的不仅是字串,还有字体等。也不太清楚,特迷惑。所以求救。

subtlation 发表于 2003-11-18 16:09:00

把selectobject过程也放上来,这样试用一下看会不会出问题

efan2000 发表于 2003-11-18 19:29:00

应该是多行文字控制的问题。
如果你能确定文字内容中的“/”是最后一个/符号,那么也可以使用InStrRev来获取它的位置,它的意思是从最后反向开始查找,而InStr是正向查找。如:39#-F13-A1/1.6dBm,那么两都返回的是一样的。而/c/x;39#-F13-A1/1.6dBm,两都就要区别了。

XJ_HE 发表于 2003-11-19 10:54:00

知道原因了!真是不可低级错误!发上来与各位共享。感谢大家帮助。

当然,如果有EFAN大侠的说法。
就可以改进程序的通用性了。更好。谢谢!

XJ_HE 发表于 2003-11-19 11:05:00

看一下这两张图片,原因不言而明。 我的STANDARD样式,字体为行楷。
第一个图是选择该样式下:0.5dB/5m


第二个图是选择单独修改了多行文本的字体。2.0dB/20m 出错。


公司里其它同事,可能对CAD不太熟悉。改字体时未通过样式来完成。
然后,用我这点儿小东东时就出错了。呵呵。

今晚打老虎 发表于 2003-11-20 11:06:00

楼主做布线的,握握手,同行~~~
页: [1]
查看完整版本: 大侠,关于文本操作,指教。