ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
12
返回列表 发新帖
楼主: 二两米粉

请问如何把world中出现的算式自动计算出答案-小学数学老师

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-6-4 00:08 | 显示全部楼层
二两米粉 发表于 2017-6-3 22:29
膜拜了!这回都计算出来了,是加减符号全角半角的关系啊,

Sub 计算或者隐藏答案()
    Dim str$, D As Object, W As Object
    k = InputBox("输入0隐藏答案;输入1计算答案")
    If k = "" Or (k <> 1 And k <> 0) Then Exit Sub
    Set D = CreateObject("HTMLFILE"): Set W = D.parentWindow
    D.write "<Script></Script>"
    sr$ = "0123456789"
    With ActiveDocument.Range(0, 0)
        Do While .MoveUntil("=")
            .MoveStartWhile sr & "++--", wdBackward
            str = Replace(Replace(.Text, "+", "+"), "-", "-")
            .Collapse 0: .Move , 1: .MoveEndWhile sr
            If k = 1 Then
                .Text = W.eval("" & str & "")
                .Font.ColorIndex = wdAuto
            ElseIf k = 0 Then
                .Text = W.eval("" & str & "")
                .Font.Color = RGB(255, 255, 255)
            End If
            .Collapse 0
        Loop
    End With
    MsgBox IIf(k = 1, "计算答案完毕!", "隐藏答案完毕!")
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-6-4 09:03 | 显示全部楼层
duquancai 发表于 2017-6-4 00:08
Sub 计算或者隐藏答案()
    Dim str$, D As Object, W As Object
    k = InputBox("输入0隐藏答案; ...

早上打开电脑,有一次惊喜了,再次感谢,刚接触vba,什么都不懂,感谢阿杜老师的热心,我打算好好学习下,先读懂您的程序,vba处理world真是方便啊!

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-6-5 19:10 | 显示全部楼层

请问如何把world中出现的算式自动计算出答案

做成窗体了,支持四则运算,显示,隐藏以及删除答案,再次感谢阿杜老师的帮助。

  1. Sub 批量计算(ss)

  2. Dim n, t, str$, D As Object, W As Object
  3.     Set D = CreateObject("HTMLFILE"): Set W = D.parentWindow
  4.     D.write "<Script></Script>"
  5.     sr$ = "0123456789()."
  6.     With ActiveDocument.Range(0, 0)
  7.     n = 0
  8.     t = Timer
  9.         Do While .MoveUntil("=")
  10.             .MoveStartWhile sr & "++--*×X÷/", wdBackward
  11.             str = Replace(Replace(.Text, "+", "+"), "-", "-")
  12.             str = Replace(str, "X", "*")
  13.             str = Replace(str, "÷", "/")
  14.             str = Replace(str, "/", "/")
  15.             
  16.             .Collapse 0: .Move , 1: .MoveEndWhile sr
  17.             
  18.             If ss = 1 Then '计算答案
  19.             'MsgBox (str)
  20.             
  21.              'MsgBox (W.eval("" & str & ""))
  22.              .Text = W.eval("" & str & "")
  23.              .Font.ColorIndex = wdRed
  24.             
  25.              CommandButton3.Visible = True
  26.              CommandButton2.Visible = True
  27.              CommandButton3.Caption = "隐藏答案"
  28.             
  29.             
  30.             
  31.             ElseIf ss = 2 Then
  32.             .Text = ""  '删除答案
  33.             CommandButton3.Visible = False
  34.             CommandButton2.Visible = False
  35.                
  36.             ElseIf ss = 3 Then .Font.Color = RGB(255, 255, 255) '隐藏答案
  37.             
  38.             ElseIf ss = 4 Then .Font.Color = RGB(221, 3, 13)     '显示答案
  39.                  
  40.             End If
  41.                
  42.             .Collapse 0
  43.             n = n + 1
  44.         Loop
  45.     End With
  46.    
  47.     Call Fonts
  48.         
  49.     Label1.Caption = "共" & n & "题;用时" & Timer - t
  50.    
  51. End Sub


  52. Private Sub CommandButton1_Click()
  53.     Call 批量计算(1)
  54. End Sub

  55. Private Sub CommandButton2_Click()
  56.     Call 批量计算(2)
  57. End Sub


  58. Private Sub CommandButton3_Click()

  59.     If CommandButton3.Caption = "隐藏答案" Then
  60.        Call 批量计算(3)
  61.        CommandButton3.Caption = "显示答案"
  62.     Else
  63.        Call 批量计算(4)
  64.        CommandButton3.Caption = "隐藏答案"
  65.     End If


  66. End Sub

  67. Sub Fonts()
  68. With Selection
  69.     .WholeStory
  70.     .Font.Size = 12
  71. End With
  72. End Sub

复制代码

UserForm1.zip

666 Bytes, 下载次数: 30

TA的精华主题

TA的得分主题

发表于 2017-6-6 00:33 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
怪哉!你这新人这么厉害,还会做窗体?——我来此论坛6年了,还不大会做。——杜先生 是本坛大神!

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-6-6 11:47 | 显示全部楼层
413191246se 发表于 2017-6-6 00:33
怪哉!你这新人这么厉害,还会做窗体?——我来此论坛6年了,还不大会做。——杜先生 是本坛大神!

我也是照葫芦画瓢啊,----杜先生大神 名副其实

TA的精华主题

TA的得分主题

发表于 2017-6-7 09:53 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
能计算复杂的公式就更完美了

TA的精华主题

TA的得分主题

发表于 2017-6-7 10:23 | 显示全部楼层
leedun 发表于 2017-6-7 09:53
能计算复杂的公式就更完美了

关键在于 等号的 左边  的“数学表达式”就是你说的复杂计算的 表达式要规范(比如:加减乘除乘方开方微分积分数学函数等 都必须规范表达!!!)并且word中排版规范!!!!

TA的精华主题

TA的得分主题

发表于 2017-6-10 19:34 | 显示全部楼层
duquancai 发表于 2017-6-7 10:23
关键在于 等号的 左边  的“数学表达式”就是你说的复杂计算的 表达式要规范(比如:加减乘除乘方开方微 ...

谢谢杜先生关注,如果数学表达式规范、排版规范,并且一个表达式是一行,但是数据可能有小数,代码应该怎么写?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-12 21:57 , Processed in 0.023697 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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