Excel精英培训网

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

[已解决]数据有效性和控件能不能结合起来

[复制链接]
发表于 2015-12-5 09:54 | 显示全部楼层 |阅读模式
我在B1单元格设置了数据有效性输入;
我想实现的是使用控件或者VBA能不能在其他任意单元格按照B1选择输入;
比如B3输入白班;D3输入中班;这些能使用控件或者VBA实现吗?
最佳答案
2015-12-5 12:37
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim r, c, n
    With Target
        r = .Row: c = .Column: n = .Count
    End With
    With ListBox1
        If r > 4 And r < 58 And c > 3 And c < [ai1].Column And r Mod 2 = 1 And n = 1 Then
            .Left = Cells(r, c + 1).Left
            .Top = Cells(r, c).Top
            .Visible = True
        Else
            .Visible = False
        End If
    End With
End Sub

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    ActiveCell.Value = ListBox1.Text
    ActiveCell.Select
    ListBox1.Visible = False
End Sub

Private Sub Workbook_Open()
    With Sheets(1).ListBox1
        .List = Sheets(1).Range("AQ5:AQ34").Value
        .Height = .ListCount * 10    '自动调整行高
    End With
End Sub




15年10月考勤(翁忠明)4.rar (42.5 KB, 下载次数: 6)
 楼主| 发表于 2015-12-5 09:56 | 显示全部楼层
附件中在B1设置了有效性,想在表中的其它单元格中能点击输入,该怎么设置?

15年10月考勤(翁忠明).rar

26.98 KB, 下载次数: 5

回复

使用道具 举报

发表于 2015-12-5 11:00 | 显示全部楼层
bcvb.gif

15年10月考勤(翁忠明)2.rar (28.06 KB, 下载次数: 3)
回复

使用道具 举报

 楼主| 发表于 2015-12-5 11:08 | 显示全部楼层
爱疯 发表于 2015-12-5 11:00

版主的设置和我的题意不符,我的意思是用控件实现,就像您做的那个日历控件一样;
只要选中单元格,就能使用控件输入数值;
您的方法也让我学到了怎么样批量设置和引用;
就是数据有效性结合控件的意思!
回复

使用道具 举报

发表于 2015-12-5 12:37 | 显示全部楼层    本楼为最佳答案   
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim r, c, n
    With Target
        r = .Row: c = .Column: n = .Count
    End With
    With ListBox1
        If r > 4 And r < 58 And c > 3 And c < [ai1].Column And r Mod 2 = 1 And n = 1 Then
            .Left = Cells(r, c + 1).Left
            .Top = Cells(r, c).Top
            .Visible = True
        Else
            .Visible = False
        End If
    End With
End Sub

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    ActiveCell.Value = ListBox1.Text
    ActiveCell.Select
    ListBox1.Visible = False
End Sub

Private Sub Workbook_Open()
    With Sheets(1).ListBox1
        .List = Sheets(1).Range("AQ5:AQ34").Value
        .Height = .ListCount * 10    '自动调整行高
    End With
End Sub




15年10月考勤(翁忠明)4.rar (42.5 KB, 下载次数: 6)
回复

使用道具 举报

 楼主| 发表于 2015-12-5 15:59 | 显示全部楼层
爱疯 发表于 2015-12-5 12:37
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim r, c, n
    With Target

版主:
我的意思是这个表格中的单元格都能用一个控件去控制输入;
就像您以前做的那个日历的加载项一样的;
这个能实现吗?
回复

使用道具 举报

发表于 2015-12-5 17:35 来自手机 | 显示全部楼层
1)这个表格中的单元格都能用一个什么控件去控制输入?
2)为什么你希望一定要用很多控件的方式?
3)很多控件,具体来说不少于多少个?工作表中控件总个数越多,就会越卡,文件大小也越大。
回复

使用道具 举报

 楼主| 发表于 2015-12-7 09:18 | 显示全部楼层
爱疯 发表于 2015-12-5 17:35
1)这个表格中的单元格都能用一个什么控件去控制输入?
2)为什么你希望一定要用很多控件的方式?
3)很多 ...

你做的那个日历控件就是控制所有单元格的;
不如点击任何一个单元格,就可以在控件中选择文本点击输入;
这样就不会有很多单元格都有这个控件了;
版主强大,对于这个应该是小菜一碟;
回复

使用道具 举报

发表于 2015-12-7 10:32 | 显示全部楼层
“不如点击任何一个单元格,就可以在控件中选择文本点击输入;”
不理解这是什么意思


另外建议,在结果效果差不多的情况下,能简单就尽量简单处理
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 01:54 , Processed in 0.361920 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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