Excel精英培训网

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

[已解决]如何实现这种动态的数据有效性----我做的错在哪里

[复制链接]
发表于 2013-7-3 11:25 | 显示全部楼层 |阅读模式
本帖最后由 股网千王 于 2013-7-3 11:59 编辑

动态数据有效性.zip (14.87 KB, 下载次数: 13)

动态数据有效性.zip

14.87 KB, 下载次数: 7

 楼主| 发表于 2013-7-3 12:00 | 显示全部楼层
这是我做的,错在哪里

动态数据有效性.zip

14.87 KB, 下载次数: 4

回复

使用道具 举报

发表于 2013-7-3 12:11 | 显示全部楼层
股网千王 发表于 2013-7-3 12:00
这是我做的,错在哪里

1 不能实现动态
2 Case "电机" 不应该是Case "装电机"
3 Case "泵头",不应该是 Case "装泵头"

回复

使用道具 举报

发表于 2013-7-3 12:11 | 显示全部楼层
本帖最后由 爱疯 于 2013-7-3 12:14 编辑

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim d, A, i, x
   
    If Target.Column = 1 Or Target.Count > 1 Then End
    x = Target.Offset(0, -1)
    If x = "" Then End
    A = Sheet1.Range("A1").CurrentRegion
    Set d = CreateObject("Scripting.Dictionary")
    For i = 1 To UBound(A)
        If x = A(i, 1) Then
            d(A(i, 2)) = ""
        End If
    Next i
    With Target.Validation
        .Delete
        .Add Type:=xlValidateList, Formula1:=Join(d.keys, ",")
    End With
End Sub
动态数据有效性2.rar (14.64 KB, 下载次数: 11)
回复

使用道具 举报

 楼主| 发表于 2013-7-3 12:23 | 显示全部楼层
那么的帅 发表于 2013-7-3 12:11
1 不能实现动态
2 Case "电机" 不应该是Case "装电机"
3 Case "泵头",不应该是 Case "装泵头"

问题不在这里,就是按照你说的改过来也不行的
回复

使用道具 举报

 楼主| 发表于 2013-7-3 13:01 | 显示全部楼层
{:301:}
回复

使用道具 举报

发表于 2013-7-3 13:07 | 显示全部楼层
动态数据有效性.rar (16.2 KB, 下载次数: 14)
回复

使用道具 举报

 楼主| 发表于 2013-7-3 13:07 | 显示全部楼层
爱疯 发表于 2013-7-3 12:11
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim d, A, i, x
   

爱疯老师,十分感谢您的回复,我测试了一下你的代码,若点击c列就会出现“应用程序或对象定义错误”
回复

使用道具 举报

 楼主| 发表于 2013-7-3 13:18 | 显示全部楼层
wp8680 发表于 2013-7-3 13:07

老师您好,我测试了你的代码,若直接点击B列就会出现1004的错误”不能取得worksheetFounction的match属性“的错误

点评

哦我忘了加防错措施了,当A列为空时,是会出错了。  发表于 2013-7-3 16:14
回复

使用道具 举报

 楼主| 发表于 2013-7-3 13:41 | 显示全部楼层
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim d, A, i, x
   
    If Target.Column = 1 Or Target.Column <> 2 Or Target.Count > 1 Then End
    x = Target.Offset(0, -1)
    If x = "" Then End

    A = Sheet1.Range("A1").CurrentRegion
    Set d = CreateObject("Scripting.Dictionary")
    For i = 1 To UBound(A)
        If x = A(i, 1) Then
            d(A(i, 2)) = ""
        End If
    Next i
    With Target.Validation
        .Delete
        .Add Type:=xlValidateList, Formula1:=Join(d.keys, ",")
    End With
End Sub
这是爱疯老师的代码我修改了一下,测试应该没问题。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 01:03 , Processed in 0.392866 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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