明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1524|回复: 3

能否一次将所有文本的数值加上0.8,明总指点

[复制链接]
发表于 2003-8-29 18:01:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 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

请明总指点。
发表于 2003-8-29 20:16:00 | 显示全部楼层
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
 楼主| 发表于 2003-8-30 10:42:00 | 显示全部楼层
谢谢指点。不过在运行过程中并没有发生错误。是不是它只把数据读到了 I  中,而对于字符就自动截断了。

为什么要将 I 定义为DOUBLE?SINGLE不也是浮点小数吗?(SINGLE的运行速度更快一些啊)
而且在这里它并不与CAD的计量单位发生关系。只是一次简单的小数运算罢了。
发表于 2003-8-30 16:52:00 | 显示全部楼层
这个是Val的用法,它试着截取字符串的前部分,将它转化成数值。但是如果对于“-”开头的,则不能转化。详细的用法可以看帮助文件。最好使用类型转化,比如CDbl。
定义为Single也可,从编程的习惯来说,I一般是定义为整型的,它是Integer的开头字母,容易识别。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-28 14:47 , Processed in 0.244914 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表