Excel精英培训网

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

[已解决]求助IF嵌套语句

[复制链接]
发表于 2014-1-12 13:02 | 显示全部楼层 |阅读模式
求助高手帮我看看下面的语句到底哪里出错了:

一共想执行三个假设:1,如果输入YES,自己输入alpha beta gamma值。2. 如果输入NO,从原始Sheet上直接复制粘贴到分页上。3.其他输入,弹出msgbox


Sub SmoothValueChoose()

Dim statement As String
statement = InputBox("Do you want input your own value? Please enter 'YES' or 'NO'")

If statement = "YES" Then
Sheets("Final Result").Activate
Range("SmoothValue").Select

ActiveCell.Offset(1, 1).Value = InputBox("Please enter the 'Alpha' value, 0<Alpha<1 ")

Range("Alpha").Select
Selection.Copy
    Sheets("H-W Update Mul").Select
    Range("Alpha1").Select
    ActiveSheet.Paste
    Sheets("H-W Update Addi").Select
    Range("Alpha2").Select
    ActiveSheet.Paste


Sheets("Final Result").Activate
Range("SmoothValue").Select
ActiveCell.Offset(1, 2).Value = InputBox("Please enter the 'Beta' value, 0<Beta<1")

Range("Beta").Select
Selection.Copy
    Sheets("H-W Update Mul").Select
    Range("Beta1").Select
    ActiveSheet.Paste
    Sheets("H-W Update Addi").Select
    Range("Beta2").Select
    ActiveSheet.Paste


Sheets("Final Result").Activate
Range("SmoothValue").Select
ActiveCell.Offset(1, 3).Value = InputBox("Please enter the 'Gamma' value, 0<Gamma<1")

Range("Gamma").Select
Selection.Copy
    Sheets("H-W Update Mul").Select
    Range("Gamma1").Select
    ActiveSheet.Paste
    Sheets("H-W Update Addi").Select
    Range("Gamma2").Select
    ActiveSheet.Paste
     
Else: If statement = "NO" Then Sheets("Final Result").Activate
    Range("Alpha").Select
    Selection.Copyvalue
       Sheets("H-W Update Mul").Select
       Range("Alpha1").Select
       ActiveSheet.Paste
       Sheets("H-W Update Addi").Select
       Range("Alpha2").Select
       ActiveSheet.Paste

    Range("Beta").Select    '一直提示这里出错
    Selection.Copyvalue
       Sheets("H-W Update Mul").Select
       Range("Beta1").Select
       ActiveSheet.Paste
       Sheets("H-W Update Addi").Select
       Range("Beta2").Select
       ActiveSheet.Paste

    Range("Gamma").Select
    Selection.Copyvalue
       Sheets("H-W Update Mul").Select
       Range("Gamma1").Select
       ActiveSheet.Paste
       Sheets("H-W Update Addi").Select
       Range("Gamma2").Select
       ActiveSheet.Paste

Else: MsgBox "Please make your Choice"

End If

End Sub

最佳答案
2014-1-12 13:59
直接赋值,那些select语句都是多余的.
  1. Sub SmoothValueChoose()
  2.     Dim statement As String
  3.     Dim a, b, g
  4.     Sheets("Final Result").Activate
  5.     statement = InputBox("Do you want input your own prameters? Please enter 'YES' or 'NO'")
  6.     Select Case statement
  7.     Case "YES"
  8.         a = InputBox("Please enter the 'Alpha' value, 0<Alpha<1 ")
  9.         b = InputBox("Please enter the 'Beta' value, 0<Beta<1")
  10.         g = InputBox("Please enter the 'Gamma' value, 0<Gamma<1")
  11.         ValueInput a, b, g
  12.     Case "NO"
  13.         a = Range("Alpha").Value
  14.         b = Range("Beta").Value
  15.         g = Range("Gamma").Value
  16.         ValueInput a, b, g
  17.     Case Else
  18.         MsgBox "Please make your Choice"
  19.     End Select
  20. End Sub

  21. Sub ValueInput(a, b, g)
  22.         Range("Alpha").Value = a
  23.         Sheets("H-W Update Mul").Range("Alpha1").Value = a
  24.         Sheets("H-W Update Addi").Range("Alpha2").Value = a
  25.         
  26.         Range("Beta").Value = b
  27.         Sheets("H-W Update Mul").Range("Beta1").Value = b
  28.         Sheets("H-W Update Addi").Range("Beta2").Value = b
  29.         
  30.         Range("Gamma").Value = g
  31.         Sheets("H-W Update Mul").Range("Gamma1").Value = g
  32.         Sheets("H-W Update Addi").Range("Gamma2").Value = g
  33. End Sub
复制代码
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-1-12 13:09 | 显示全部楼层
你看看有没有beta名称,另外,名称引用的工作簿是不是当前工作簿。
回复

使用道具 举报

发表于 2014-1-12 13:13 | 显示全部楼层
发贴总是这样,你都用的名称,叫大家如何帮你测试。
传个附件很难么?
回复

使用道具 举报

发表于 2014-1-12 13:13 | 显示全部楼层
range("bate")如果不是activesheet的range,那么红色那句才会出错.
在选择range之前,需要先选择该sheet.

另外 看你的代码更像是录制的宏,很多地方可以简化.
绝大多数的select语句可以不要,直接给range赋值就好.其次复制粘贴也可以用赋值来代替.

如果你上传一个附件并说明目的,可能会得到更好的答案.
回复

使用道具 举报

 楼主| 发表于 2014-1-12 13:15 | 显示全部楼层
hwc2ycy 发表于 2014-1-12 13:09
你看看有没有beta名称,另外,名称引用的工作簿是不是当前工作簿。

这两个都是对的, 难道每个赋值前都要加上工作薄选择吗( If statement = "NO" Then Sheets("Final Result").Activate?), 但是这三个值都是在同一个工作薄上的。
回复

使用道具 举报

发表于 2014-1-12 13:18 | 显示全部楼层
子夜蜘蛛 发表于 2014-1-12 13:15
这两个都是对的, 难道每个赋值前都要加上工作薄选择吗( If statement = "NO" Then Sheets("Final Resul ...

你传个附件,哪需要你一个个去解释嘛。


回复

使用道具 举报

 楼主| 发表于 2014-1-12 13:18 | 显示全部楼层
Zipall 发表于 2014-1-12 13:13
range("bate")如果不是activesheet的range,那么红色那句才会出错.
在选择range之前,需要先选择该sheet.

...

感谢您的解答,但是我的附件暂时无法传,里面有些是公司的资料不能直接传到网上。 只能麻烦各位看着这个宏帮忙解决了。
目前我这alpha beta gamma都已经赋值,也都在同一个工作薄上,不知道为什么就老是出错
回复

使用道具 举报

发表于 2014-1-12 13:29 | 显示全部楼层
子夜蜘蛛 发表于 2014-1-12 13:18
感谢您的解答,但是我的附件暂时无法传,里面有些是公司的资料不能直接传到网上。 只能麻烦各位看着这个宏 ...

我举个简单的例子给你.

Sub test()
    Sheet1.Select
    Sheet2.Range("A1").Select
End Sub


因为sheet1不是activesheet,所以第二个select语句会出错.
必须在它之前增加一句 sheet2.select 才能让这句正常运行.
回复

使用道具 举报

发表于 2014-1-12 13:33 | 显示全部楼层
子夜蜘蛛 发表于 2014-1-12 13:18
感谢您的解答,但是我的附件暂时无法传,里面有些是公司的资料不能直接传到网上。 只能麻烦各位看着这个宏 ...

对象可以直接操作,不需要选再复制

你的  Range("Beta").Select  出错,一般是你激活的工作表里没有 Beta 这个地址
比如说它是在Sheet1 里,而你激活的却是Sheet3  这时候就会出错

Range("Beta").Select       
Selection.Copyvalue   
      Sheets("H-W Update Mul").Select
        Range("Beta1").Select
        ActiveSheet.Paste

而一般情况下,我们可以直接 修改为
sheet1.range("Beta").copy Sheets("H-W Update Mul").range("Beta1")

上面代码中直接指定了地址,所以不在需要来回选择工作表和单元格了
你的 Copyvalue   是什么呢??  ms 在 VBA里没有这属性??
回复

使用道具 举报

 楼主| 发表于 2014-1-12 13:37 | 显示全部楼层
Zipall 发表于 2014-1-12 13:29
我举个简单的例子给你.

Sub test()

我把信息删除了一下,麻烦您帮我看看这个附件的宏要怎么更改哪

多谢了!!

if语句问题.rar

28.89 KB, 下载次数: 5

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-21 10:16 , Processed in 0.381334 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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