Excel精英培训网

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

[已解决]无效的next控件变量引用?

[复制链接]
发表于 2015-6-3 20:27 | 显示全部楼层 |阅读模式
各位老师晚上好!
我想吧a列满足"品名是B"的价格放到动态数组里去,于是有了这个代码,但是运行时为什么会提示
无效的next控件变量引用.rar (11.25 KB, 下载次数: 1)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2015-6-3 20:42 | 显示全部楼层
代码问题太多!!
1. 循环for....next 没有对应。
2. ReDim清除了以前的数据。
3. 循环只需要一个,为何写了2个?
4. 循环Y变量,取值却是X变量!
...............
回复

使用道具 举报

发表于 2015-6-3 20:48 | 显示全部楼层    本楼为最佳答案   
十分简单:
Sub a()
    Dim arr1(), x, k
    For x = 2 To 10
        Select Case Range("a" & x)
        Case "B"
            k = k + 1
            ReDim Preserve arr1(1 To k)
            arr1(k) = Range("b" & x)
        End Select
    Next
End Sub

Sub a()
    Dim arr1(), x, k
    For x = 2 To 10
        If Range("a" & x) = "B" Then
            k = k + 1
            ReDim Preserve arr1(1 To k)
            arr1(k) = Range("b" & x)
        End If
    Next
End Sub
回复

使用道具 举报

 楼主| 发表于 2015-6-3 20:58 | 显示全部楼层
额确实变量怎么多写了一个.但是我不理解 1. 循环for....next 没有对应。怎么理解?包括下面的代码为什么一定得把next y放在前面而不能把next x放在前面?否则也会无效的next控件变量引用?
Sub a()
Dim arr, x, y, temp
arr = Range("a1:a9")
For x = 1 To UBound(arr) - 1
For y = x + 1 To UBound(arr)
If arr(x, 1) > arr(y, 1) Then
temp = arr(x, 1)
arr(x, 1) = arr(y, 1)
arr(y, 1) = temp
End If
Next x
Next y


End Sub
回复

使用道具 举报

发表于 2015-6-3 21:35 | 显示全部楼层
markang 发表于 2015-6-3 20:58
额确实变量怎么多写了一个.但是我不理解 1. 循环for....next 没有对应。怎么理解?包括下面的代码为什么一定 ...

这你得补习一下循环语句啦!!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 22:31 , Processed in 0.286747 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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