l_shiqiang 发表于 2006-3-4 21:35:00

请教高手怎样选择框内数字,并将他们相加,计算和是多少?

<P>我想选择闭合的线内的所有数字,并将他们进行相加,最终得出他们的和</P>
<P>目的就是求框内文字的计算和</P>
<P>谢!</P>

洋葱老爹 发表于 2006-3-4 22:48:00

给我你的邮箱,我可以发一个VBA的给你

storyst 发表于 2006-3-6 13:42:00

<P>楼上的兄弟贴出来啊。我也想学学的。</P>

GJY 发表于 2006-3-6 15:36:00

<P>'将选取的数字相加<BR>&nbsp;'本过程演示SelectOnScreen方法的使用&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp; On Error Resume Next<BR>&nbsp;&nbsp;&nbsp; If ThisDrawing.SelectionSets.count &lt;&gt; 0 Then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For I = 0 To ThisDrawing.SelectionSets.count - 1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set ssetObj = ThisDrawing.SelectionSets(I)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ssetObj.delete<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next<BR>&nbsp;&nbsp;&nbsp; End If</P>
<P>&nbsp;&nbsp;&nbsp; Set ssetObj = ThisDrawing.SelectionSets.Add("sset4")<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; Unload UserForm10<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; '让用户在屏幕上选择要加入选择集的图元<BR>&nbsp;&nbsp;&nbsp; ssetObj.SelectOnScreen<BR>&nbsp;&nbsp;&nbsp; '将选择集中的文本转变成数字后相加<BR>&nbsp;&nbsp;&nbsp; textvalue = 0<BR>&nbsp;&nbsp;&nbsp; For I = 0 To ssetObj.count - 1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If ssetObj.Item(I).ObjectName = "AcDbText" Then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'textvalue = textvalue * Val(ssetObj.Item(i).textstring)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'ssetObj.Item(i).textstring = textvalue<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; textvalue = textvalue + Val(ssetObj.Item(I).textstring)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; Next<BR>&nbsp;&nbsp;&nbsp; MsgBox "The result is:" &amp; textvalue<BR><BR></P>

mycad 发表于 2006-3-7 20:11:00

<P><A name=1575><FONT color=#000066><B>GJY</B></FONT></A>(楼上)的程序应该稍改动以下:</P>
<P>For I = 0 To ssetObj.count - 1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If ssetObj.Item(I).ObjectName = "AcDbText"&nbsp; and Val(ssetObj.Item(i).textstring)&lt;&gt; 0 Then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'textvalue = textvalue * Val(ssetObj.Item(i).textstring)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'ssetObj.Item(i).textstring = textvalue<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; textvalue = textvalue + Val(ssetObj.Item(I).textstring)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If</P>
<P>'如果ssetObj.Item(i).textstring="0" 在单独处理</P>
<P>经过以上改动是否更好啊?<BR></P>

xinghesnak 发表于 2006-3-8 08:47:00

我觉得用IsNumber再判断一下是不是数字更好!(在if语句里)

storyst 发表于 2006-3-8 10:37:00

<P>确实有必要IsNumber判断数字。几位说的这样选取的是所有的文字,如果是框外也有文字呢?</P>

xinghesnak 发表于 2006-3-8 11:50:00

判断是不是在框内,应该是用户在选取时自己判断吧?这个程序不是交互式程序吗?还是自动得到框内所有的文字?

l_shiqiang 发表于 2006-3-8 17:42:00

<P><A href="mailto:liushiqiang813203@sina.com" target="_blank" >liushiqiang813203@sina.com</A></P>
<P>&nbsp;各位高手这是我的邮箱,有空希望各位高手多多指教</P>
<P>谢</P>
<P>!!</P>

mycad 发表于 2006-3-8 20:46:00

好象IsNumber在vba中还没有定义的函数吧?
页: [1] 2
查看完整版本: 请教高手怎样选择框内数字,并将他们相加,计算和是多少?