Excel精英培训网

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

[已解决]求助为什么生成试室时超过30个试室即出错

[复制链接]
发表于 2013-6-18 08:49 | 显示全部楼层 |阅读模式
求助为什么生成试室时超过30个试室即出错?(30以内正常)
求助.rar (42.08 KB, 下载次数: 11)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-6-18 08:58 | 显示全部楼层
    ReDim arr(1 To 30, 1 To 2)
这里定死了。
回复

使用道具 举报

发表于 2013-6-18 08:59 | 显示全部楼层
你改成这样试试吧。
ReDim arr(1 To 60, 1 To 2)
刚好60个控件。
回复

使用道具 举报

发表于 2013-6-18 09:00 | 显示全部楼层    本楼为最佳答案   
  1. Function CheckInput()
  2.     Dim objControl As Control
  3.     Dim str$
  4.     Dim strTemp
  5.     Dim arr(), i As Byte
  6.     ReDim arr(1 To 60, 1 To 2)
  7.     For Each objControl In Me.Controls

  8.         If TypeName(objControl) Like "CheckBox" Then
  9.             With objControl
  10.                 If .Value Then
  11.                 strTemp = Me.Controls(Replace(.Name, "CheckBox", "TextBox")).Text
  12.                     If Not IsNumeric(strTemp) Or strTemp Like "*[.-]*" Then
  13.                         str = str & .Name & " 后面的文本框输入的是非大于0的整数值" & vbCrLf
  14.                     Else
  15.                        i = i + 1
  16.                        arr(i, 1) = Mid(.Name, 9)
  17.                        arr(i, 2) = Val(strTemp)
  18.                     End If
  19.                 End If
  20.             End With
  21.         End If
  22.     Next
  23.     CheckInput = Not Len(str) > 0
  24.     If Not CheckInput Then
  25.         MsgBox str
  26.     Else
  27.         CheckInput = arr
  28.     End If
  29. End Function
复制代码

评分

参与人数 1 +3 收起 理由
qinhuan66 + 3 很给力!谢谢您老师

查看全部评分

回复

使用道具 举报

发表于 2013-6-18 09:01 | 显示全部楼层
当时做的时候,估计只有30个控件,所以给定了30.
回复

使用道具 举报

发表于 2013-6-18 09:09 | 显示全部楼层
楼主,看你选这么多控件给累的,,为什么不设置一个本列全选的选项呢,就象邮箱中的那样
回复

使用道具 举报

 楼主| 发表于 2013-6-18 09:10 | 显示全部楼层
hwc2ycy 发表于 2013-6-18 08:58
ReDim arr(1 To 30, 1 To 2)
这里定死了。

刚才我以为是2排,我改成1TO4,唉怎么忘记了是共30个试室呢.
ReDim arr(1 To 30, 1 To 4)

谢谢您了老师
回复

使用道具 举报

发表于 2013-6-18 09:14 | 显示全部楼层
妞叫七七 发表于 2013-6-18 09:09
楼主,看你选这么多控件给累的,,为什么不设置一个本列全选的选项呢,就象邮箱中的那样

应该还要来个自动填充那就更完美了。
回复

使用道具 举报

 楼主| 发表于 2013-6-18 09:24 | 显示全部楼层
hwc2ycy 发表于 2013-6-18 09:14
应该还要来个自动填充那就更完美了。

我已做全选了和不全选 了,老师自动填充怎么做呢?我也想到这个但不会弄只好作罢了.(就是输入人数就动打钩,是不是这样?)谢谢
Private Sub CommandButton2_Click()
    Dim objControl As Control
    For Each objControl In Me.Controls
        If TypeName(objControl) Like "CheckBox" Then
            objControl.Value = True
        End If
    Next
End Sub
Private Sub CommandButton4_Click()
Dim objControl As Control
    For Each objControl In Me.Controls
        If TypeName(objControl) Like "CheckBox" Then
            objControl.Value = False
        End If
    Next
End Sub

回复

使用道具 举报

发表于 2013-6-18 09:41 | 显示全部楼层
qinhuan66 发表于 2013-6-18 09:24
我已做全选了和不全选 了,老师自动填充怎么做呢?我也想到这个但不会弄只好作罢了.(就是输入人数就动打钩, ...
  1. '针对勾选的自动填充,你也可以改成对所有的填充。
  2.     Dim lNumber As Long
  3.     Dim objControl As Object
  4.     Dim blIsAutofill As Boolean
  5.     lNumber = Application.InputBox(prompt:="请输入要填入的数值[>0]:", Title:="自动填充", Default:=1, Type:=1)
  6.     If lNumber <= 0 Then MsgBox "数值不合要求": Exit Sub

  7.     For Each objControl In Me.Controls
  8.         If TypeName(objControl) Like "CheckBox" Then
  9.             With objControl
  10.                 If .Value Then
  11.                     blIsAutofill = True
  12.                     Me.Controls(Replace(.Name, "CheckBox", "TextBox")).Text = lNumber
  13.                 End If
  14.             End With

  15.         End If
  16.     Next
  17.     If blIsAutofill Then
  18.         MsgBox "填充完毕"
  19.     Else
  20.         MsgBox "没有选择的单元框"
  21.     End If
复制代码

评分

参与人数 1 +3 收起 理由
qinhuan66 + 3 很给力!谢谢您老师

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-23 22:59 , Processed in 0.211438 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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