EXCEL中的VBA问题,求高手解答

FunctionJS1(str)JS1=Evaluate("="&str)EndFunction我编了上面的函数JS1后,可以计算单元格纯公式的计算结果,然后我就编了下面... Function JS1(str)
JS1 = Evaluate("=" & str)
End Function
我编了上面的函数JS1后,可以计算单元格纯公式的计算结果,然后我就编了下面的代码
Function JS2(str)
Dim AAA As String
For i = 1 To Len(str)
If Mid(str, i) = "." Or Mid(str, i) = "(" Or Mid(str, i) = ")" Or Mid(str, i) = "%" Or Mid(str, i) = "*" Or Mid(str, i) = "/" Or Mid(str, i) = "+" Or Mid(str, i) = "-" Or (Asc(Mid(str, i)) > 47 And Asc(Mid(str, i)) < 58) Then
AAA = AAA & Mid(str, i)
End If
Next
JS2 = Evaluate("=" & AAA)
End Function
为什么运行错误呢,先循环找出1-9的数字和.+-*/%(),然后&连接起来,然后和JS1函数一样Evaluate,为什么总是错误呢
展开
 我来答
DreamMuse
2010-12-04 · TA获得超过989个赞
知道小有建树答主
回答量:344
采纳率:0%
帮助的人:376万
展开全部
像2楼说的,就是mid函数用错了而已,所有Mid(str, i)改为Mid(str, i,1)就可以了。
还有要注意调用JS2时,不能直接用表达式,比如调试时,如果用 JS2(1+10)这样的调用方式也会出错,必须是JS2("1+10")。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
传神捷报归来5
2010-12-05 · TA获得超过665个赞
知道答主
回答量:427
采纳率:0%
帮助的人:302万
展开全部
能力有限,没有找到控制“查找”对话框的方法,试了一下窗体,倒是可行的:
调用的过程:
Sub Find()
UserForm1.Show
End Sub

窗体代码:
Private Sub CommandButton1_Click()
UserForm1.Hide
End Sub

Private Sub TextBox1_Change()
On Error Resume Next
With TextBox1
If Len(.Value) >= 9 Then
Cells.Find(What:=.Value, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, MatchByte:=False, SearchFormat:=False).Activate
If Err.Number <> 0 Then
.Value = "未找到数据!"
End If
.SelStart = 0
.SelLength = Len(UserForm1.TextBox1)
End If
End With
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Vikjor8054kiki
2010-12-04 · TA获得超过2797个赞
知道小有建树答主
回答量:826
采纳率:71%
帮助的人:393万
展开全部
Mid 函数的使用方法不对
应有三个参数
mid(字符串,起始位置,长度)
如果只用一个字符,长度就用1, 当长度超出字符串尾时取到字符串尾.
此题可用 mid(str,i,1)
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
VB中手
2010-12-04 · 超过97用户采纳过TA的回答
知道答主
回答量:215
采纳率:0%
帮助的人:218万
展开全部
确实,MID函数错误
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式