Excel精英培训网

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

[已解决]请教怎样把窗体中的变量引用到模块中

[复制链接]
发表于 2014-10-6 21:32 | 显示全部楼层 |阅读模式
本帖最后由 zhouyuma 于 2014-10-7 10:11 编辑

我在窗体命令按钮中建立一个数组:arrsh已设为全局变量了
Private Sub CommandButton1_Click()
    Dim arrsh As Variant
    arrsh = Array(TextBox1.Value, TextBox3.Value, TextBox5.Value, TextBox7.Value, TextBox9.Value, TextBox11.Value)
Unload Me
查看   ' 临时用的,原准备用来自制工作表的
End Sub


Sub 查看()
    For i = 0 To UBound(arrsh)
        If arrsh(i) <> "" Or arrsh(i) <> 0 Then
            MsgBox "第" & i + 1 & "数是:" & arrsh(i)
        End If
    Next i
End Sub
现在有两问题:
1、运行结果显示不匹配,请教怎样把窗体中的变量arrsh,引用到模块Sub 查看()中
2、组成这个数组的元素TextBox1~TextBox11有的可能为0或空,只查看不为空或0的元素。我把查看代码内容直接放到按钮代码中,不知道为什么不能把空或为0的元素过滤掉?
谢谢指教
最佳答案
2014-10-7 09:45
zhouyuma 发表于 2014-10-6 22:44
因文件中代码较多,所以就没上传附件,需要我就费点事重做一个传上来吧,使用过程我在附近中说了,多谢 ...

附件1.rar (369.16 KB, 下载次数: 4)
发表于 2014-10-6 21:46 | 显示全部楼层
1. 试试把arrsh改成,commandbutton1.arrsh
2. 自己做一个循环生成数组,比如controls("textbox"& i).value<>""
回复

使用道具 举报

发表于 2014-10-6 22:08 | 显示全部楼层
回复

使用道具 举报

发表于 2014-10-6 22:10 | 显示全部楼层
直接上传个附件不更好。
回复

使用道具 举报

 楼主| 发表于 2014-10-6 22:44 | 显示全部楼层
hwc2ycy 发表于 2014-10-6 22:10
直接上传个附件不更好。


因文件中代码较多,所以就没上传附件,需要我就费点事重做一个传上来吧,使用过程我在附近中说了,多谢帮忙

附件.rar

355.99 KB, 下载次数: 13

回复

使用道具 举报

发表于 2014-10-7 09:45 | 显示全部楼层    本楼为最佳答案   
zhouyuma 发表于 2014-10-6 22:44
因文件中代码较多,所以就没上传附件,需要我就费点事重做一个传上来吧,使用过程我在附近中说了,多谢 ...

附件1.rar (369.16 KB, 下载次数: 4)
回复

使用道具 举报

 楼主| 发表于 2014-10-7 10:03 | 显示全部楼层

请教怎样把窗体中的变量引用到模块中

这儿有肥猫 发表于 2014-10-6 21:46
1. 试试把arrsh改成,commandbutton1.arrsh
2. 自己做一个循环生成数组,比如controls("textbox"& i).valu ...


大师傅,谢谢你支招,按你意思,我重设:arrshe为全局变量了(public arrshe As Variant,模块中设置的,窗体中不给设置)
Private Sub CommandButton1_Click()
    ‘Dim arrshe As Variant'这句我试了,有没有都一样,我怕与全局变量冲突,就没用
    arrshe = Array(TextBox1.Value, TextBox3.Value, TextBox5.Value, TextBox7.Value, TextBox9.Value, TextBox11.Value)
Unload Me
查看   ' 临时用的,原准备用来自制工作表的
End Sub


Sub 查看()
    Dim arrsh As Variant
    arrsh = CommandButton1.arrshe   'COPYSH.CommandButton1.arrshe
    For i = 0 To UBound(arrsh)
        If arrsh(i) <> "" Or arrsh(i) <> 0 Then
            MsgBox "第" & i + 1 & "数是:" & arrsh(i)
        End If
    Next i
End Sub
现问题:1、arrsh = CommandButton1.arrshe   '运行错误424,要求对象。改COPYSH.CommandButton1.arrshe’编译错误,方法和数据未找到。
2、我是菜鸟,循环生成数组我不会做,有葫芦有时能画个瓢,还请多指教,谢谢。
回复

使用道具 举报

 楼主| 发表于 2014-10-7 10:10 | 显示全部楼层
zjdh 发表于 2014-10-7 09:45

回复了2楼,才看到你的答案,谢谢帮忙
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 18:28 , Processed in 0.402271 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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