ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] select case报错疑问麻烦大佬帮忙看看

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-7-18 14:52 | 显示全部楼层 |阅读模式
本帖最后由 libinice 于 2018-7-18 15:32 编辑

我想用该代码计算表格2中出现在某个数值区间的个数,然后把这个数值赋值给表格1中对应的单元格。但一直调试失败,第一次写VBA麻烦帮忙看下。
(调试说明红字体代码有错)

Sub 计算n个随机数在各个区间出现的次数()
    Dim i As Integer, a As Integer, b As Integer, c As Integer, d As Integer, e As Integer, f As Integer, g As Integer, h As Integer, n As Integer, j As Integer, k As Integer, l As Integer
    i = 1
    a = 0
    b = 0
    c = 0
    d = 0
    e = 0
    f = 0
    g = 0
    h = 0
    i = 0
    n = 0
    k = 0
    l = 0
    Do While i <= 1000
        Select Case Worksheets("Sheet2").Cells(i, "A").Value
            Case Is <= 300
                a = a + 1
            Case Is <= 1000
                b = b + 1
            Case Is <= 1500
                c = c + 1
            Case Is <= 2000
                d = d + 1
            Case Is <= 3000
                e = e + 1
            Case Is <= 4000
                f = f + 1
            Case Is <= 5000
                g = g + 1
            Case Is <= 6000
                h = h + 1
            Case Is <= 7000
                n = n + 1
            Case Is <= 8000
                j = j + 1
            Case Is <= 9000
                k = k + 1
            Case Is <= 10000
                l = l + 1
         End Select
    i = i + 1
    Loop
    Worksheets("Sheet1").Range("H2").Value = a
    Worksheets("Sheet1").Range("H3").Value = b
    Worksheets("Sheet1").Range("H4").Value = c
    Worksheets("Sheet1").Range("H5").Value = d
    Worksheets("Sheet1").Range("H6").Value = e
    Worksheets("Sheet1").Range("H7").Value = f
    Worksheets("Sheet1").Range("H8").Value = g
    Worksheets("Sheet1").Range("H9").Value = h
    Worksheets("Sheet1").Range("H10").Value = n
    Worksheets("Sheet1").Range("H11").Value = j
    Worksheets("Sheet1").Range("H12").Value = k
    Worksheets("Sheet1").Range("H13").Value = l
End Sub




VBA.rar

54.84 KB, 下载次数: 2

统计Sheet2表格中,某个数值出现的个数,并把该统计的数值返回给表格1的单元格上

TA的精华主题

TA的得分主题

发表于 2018-7-18 15:12 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Select Case Worksheets("Sheet2").Cells("A"&i).Value

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-7-18 15:19 | 显示全部楼层
  i = 1
    a = 0
    b = 0
    c = 0
    d = 0
    e = 0
    f = 0
    g = 0
    h = 0
    i = 0
    n = 0
    k = 0
    l = 0

i=1
下面又i=0
當然錯誤了
還有變量一開始就是0
不用這樣

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-7-18 15:23 | 显示全部楼层
chis3 发表于 2018-7-18 15:19
i = 1
    a = 0
    b = 0

下面的是 L,不是i,这个应该没有问题。我想应该是 单元格的值是不是非 数值引起的。建议楼主上传出错的附件。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-18 15:33 | 显示全部楼层
lv_king_2017 发表于 2018-7-18 15:12
Select Case Worksheets("Sheet2").Cells("A"&i).Value

试了,这一句还是报错。 已上传代码和表格,有空麻烦帮忙看下

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-18 15:33 | 显示全部楼层
不知道为什么 发表于 2018-7-18 15:23
下面的是 L,不是i,这个应该没有问题。我想应该是 单元格的值是不是非 数值引起的。建议楼主上传出错的附 ...

已上传,麻烦帮忙看下

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-18 15:34 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
chis3 发表于 2018-7-18 15:19
i = 1
    a = 0
    b = 0

谢谢指导,但错误还不止这个地方,已上传代码,麻烦有空帮忙看看

TA的精华主题

TA的得分主题

发表于 2018-7-18 15:44 | 显示全部楼层
libinice 发表于 2018-7-18 15:34
谢谢指导,但错误还不止这个地方,已上传代码,麻烦有空帮忙看看

這樣啊

Select Case Worksheets("Sheet2").Cells(i, "a").Value

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-7-18 15:54 | 显示全部楼层
這樣好了
Sub test()
    Dim i As Integer, arr, brr(1 To 12, 1 To 1)
    Sheets(2).Activate
    arr = [a1].CurrentRegion
    For i = 1 To UBound(arr)
        Select Case arr(i, 1)
            Case Is <= 300
                brr(1, 1) = brr(1, 1) + 1
            Case Is <= 1000
                brr(2, 1) = brr(2, 1) + 1
            Case Is <= 1500
                brr(3, 1) = brr(3, 1) + 1
            Case Is <= 2000
                brr(4, 1) = brr(4, 1) + 1
            Case Is <= 3000
                brr(5, 1) = brr(5, 1) + 1
            Case Is <= 4000
                brr(6, 1) = brr(6, 1) + 1
            Case Is <= 5000
                brr(7, 1) = brr(7, 1) + 1
            Case Is <= 6000
                brr(8, 1) = brr(8, 1) + 1
            Case Is <= 7000
                brr(9, 1) = brr(9, 1) + 1
            Case Is <= 8000
                brr(10, 1) = brr(10, 1) + 1
            Case Is <= 9000
                brr(11, 1) = brr(11, 1) + 1
            Case Is <= 10000
                brr(12, 1) = brr(12, 1) + 1
         End Select
    Next i
    Sheets(1).Activate
    [h2].Resize(12, 1) = brr
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-18 15:58 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
chis3 发表于 2018-7-18 15:44
這樣啊

Select Case Worksheets("Sheet2").Cells(i, "a").Value

感谢,已经解决了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-10 02:14 , Processed in 0.025302 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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