Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2204|回复: 6

[已解决]能不能帮我看看这题怎么做

[复制链接]
发表于 2016-12-7 20:59 | 显示全部楼层 |阅读模式
用消息框的循环做,写了一点点不知道该怎么继续写了,能不能帮忙看一下?
最佳答案
2016-12-8 14:30
  1. Sub tt()
  2.     x = 10: xmax = 20: xmin = 1
  3. 100:
  4.     yn1 = MsgBox(x & "是你选的数字吗?", vbYesNo)
  5.     If yn1 = vbYes Then
  6.         Exit Sub
  7.     Else
  8.         yn2 = MsgBox("比" & x & "大吗?", vbYesNo)
  9.         If yn2 = vbYes Then
  10.             x = x + Int((xmax - x) / 2)
  11.         Else
  12.             x = x - Int((x - xmin) / 2)
  13.         End If
  14.         GoTo 100
  15.     End If
  16. End Sub
复制代码

练习.zip

9.44 KB, 下载次数: 6

练习题

发表于 2016-12-8 08:32 | 显示全部楼层

  1. Public Sub tt()
  2.     minN = 1
  3.     MaxN = 20
  4.     Randomize (Timer)
  5.     x = Int(20 * Rnd) + 1
  6.     Debug.Print x

  7.    
  8.     Do
  9.         n = n + 1
  10.         If n = 10 Then Exit Do
  11.         inputN = Application.InputBox("惪桝擖" & minN & "-" & MaxN & "斖殹揑澤帋帋" & Chr(10) & msg, "惪桝擖擛澤", , , , , , 1)
  12.         If inputN < x Then
  13.             msg = "彫椆"
  14.         ElseIf inputN > x Then
  15.             msg = "戝椆"
  16.         Else
  17.             MsgBox "嗳洈椆"
  18.             Exit Do
  19.         End If

  20.     Loop Until x = inputN

  21. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2016-12-8 08:53 | 显示全部楼层

谢谢啊,不过你理解错意思了 ,不是inputbox,不能告诉你选的是哪个数字,就是一直缩小范围猜。

回复

使用道具 举报

发表于 2016-12-8 14:30 | 显示全部楼层    本楼为最佳答案   
  1. Sub tt()
  2.     x = 10: xmax = 20: xmin = 1
  3. 100:
  4.     yn1 = MsgBox(x & "是你选的数字吗?", vbYesNo)
  5.     If yn1 = vbYes Then
  6.         Exit Sub
  7.     Else
  8.         yn2 = MsgBox("比" & x & "大吗?", vbYesNo)
  9.         If yn2 = vbYes Then
  10.             x = x + Int((xmax - x) / 2)
  11.         Else
  12.             x = x - Int((x - xmin) / 2)
  13.         End If
  14.         GoTo 100
  15.     End If
  16. End Sub
复制代码

练习.rar

16.78 KB, 下载次数: 3

回复

使用道具 举报

发表于 2016-12-8 14:35 | 显示全部楼层
要改进一下,范围设置不合理。
  1. Sub tt()
  2.     x = 10: xmax = 20: xmin = 1
  3. 100:
  4.     yn = MsgBox(x & "是你选的数字吗?", vbYesNo)
  5.     If yn = vbYes Then Exit Sub
  6.     yn = MsgBox("比" & x & "大吗?", vbYesNo)
  7.     If yn = vbYes Then
  8.         xmin = x
  9.         x = x + Int((xmax - x) / 2)
  10.     Else
  11.         xmax = x
  12.         x = x - Int((x - xmin) / 2)
  13.     End If
  14.     GoTo 100
  15. End Sub
复制代码
回复

使用道具 举报

发表于 2016-12-8 15:21 | 显示全部楼层
4楼答案有误,5楼的才是正确的。
回复

使用道具 举报

发表于 2016-12-9 09:20 | 显示全部楼层
边界的问题。
  1. Sub tt()
  2.     x = 10: xmax = 20: xmin = 1
  3. 100:
  4.     yn = MsgBox(x & "是你选的数字吗?", vbYesNo)
  5.     If yn = vbYes Then Exit Sub
  6.     yn = MsgBox("比" & x & "大吗?", vbYesNo)
  7.     If yn = vbYes Then
  8.         xmin = x
  9.         x = IIf(xmax - x = 1, x + 1, x + Int((xmax - x) / 2))
  10.     Else
  11.         xmax = x
  12.         x = IIf(x - xmin = 1, x - 1, x - Int((x - xmin) / 2))
  13.     End If
  14.     GoTo 100
  15. End Sub
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-26 10:34 , Processed in 0.390128 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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