EXCEL-VBA下拉框---根据单元格设置下拉框内容,并设置改变事件

u012819276 2013-11-30 03:40:09
问题:我想在VBA里面加一个下拉框,下拉框能选择的值来源于单元格(有一定规律)
且下拉框改变项的时候,会跳转到指定单元格显示相关信息
方法:我能想到的就两种方法,一种是数据有效性,一种是VBA 用户窗体的符合狂,还有一个在(office 2010)开发工具--》插入--》组合框(窗体控件)貌似特挺像的,现在我也不知道用那种方法能实现,那种方法好,故请大神指点迷津

例如:
在Sheet1中A3做一个下拉框
下拉的选项有“张明(3岁)、吴昊(5岁)、晨晨(6岁)”
如果选择张明,活动单元格就跳转到B3张明一列
如果选择吴昊,活动单元格就跳转到晨晨一列


而当工作表改变,sheet2激活为active的时候
在Sheet2中A3也是个下拉框
但是下拉选项就是按照Sheet2来了
下拉的选项有“王二(3岁)、;李静(5岁)、郭涛(6岁)”
选择人名跳转也是一样的



大体就是这样,下拉选项不能写死,因为后期sheet中可能还要继续加人名
谢谢大神了!
...全文
35815 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
u012819276 2013-12-09
  • 打赏
  • 举报
回复
引用 4 楼 Topc008 的回复:
Sub CreateList()
    ''创建下拉列表
    Dim i As Long, w1 As String
    w1 = ""
    With Sheet1
        ''首先创建下拉列表数据
        For i = 2 To 6 Step 2 ''至于最后一列请自定义
            w1 = w1 & IIf(w1 <> "", ",", "")
            w1 = w1 & Trim$(.Cells(3, i)) & "(" & Trim$(.Cells(4, i)) & ")"
        Next
        ''添加数据有效性
        With .Range("a3").Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:=w1
            .InCellDropdown = True
        End With
    End With
End Sub
'''下面是excel的事件
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(0, 0) = "A3" Then ''将事件限制在单元格a3的改变上
        Dim w1 As String
        w1 = Split(Target.Value, "(")(0) ''分解出人名
        Range("B3:Z3").Find(What:=w1).Activate ''利用excel的自动搜索功能
    End If
End Sub
亲,关注我一下,我想私信你一下,关于VBA下拉框的问题:http://bbs.csdn.net/topics/390656855
u012819276 2013-12-06
  • 打赏
  • 举报
回复
感谢五楼大神a814153a,谢谢了~
蓝天630902 2013-12-04
  • 打赏
  • 举报
回复

Private Sub 创建下拉列表框()
OLEObjects.Add ClassType:="Forms.ComboBox.1", Link:=True, DisplayAsIcon:=False, Left:=0, Top:=29, Width:=55, Height:=20
End Sub

Sub 添加列表数据()
Dim brr()
n = Range("IV3").End(xlToLeft).Column
ReDim brr(1 To n / 2)
For i = 2 To n Step 2
brr(i / 2) = Cells(3, i)
Next i
ComboBox1.List = brr
End Sub

Private Sub ComboBox1_Change()
Range("B3:IV3").Find(What:=ComboBox1.Value).Activate
End Sub



一如既往哈 2013-12-03
  • 打赏
  • 举报
回复
Sub CreateList()
    ''创建下拉列表
    Dim i As Long, w1 As String
    w1 = ""
    With Sheet1
        ''首先创建下拉列表数据
        For i = 2 To 6 Step 2 ''至于最后一列请自定义
            w1 = w1 & IIf(w1 <> "", ",", "")
            w1 = w1 & Trim$(.Cells(3, i)) & "(" & Trim$(.Cells(4, i)) & ")"
        Next
        ''添加数据有效性
        With .Range("a3").Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:=w1
            .InCellDropdown = True
        End With
    End With
End Sub
'''下面是excel的事件
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(0, 0) = "A3" Then ''将事件限制在单元格a3的改变上
        Dim w1 As String
        w1 = Split(Target.Value, "(")(0) ''分解出人名
        Range("B3:Z3").Find(What:=w1).Activate ''利用excel的自动搜索功能
    End If
End Sub
u012819276 2013-12-03
  • 打赏
  • 举报
回复
引用 2 楼 Topc008 的回复:
用VBA就可以完全解决。可以不用窗体....
那请问怎么解决呢,既要列出本工作表所有人,还要点击可以跳转
一如既往哈 2013-11-30
  • 打赏
  • 举报
回复
用VBA就可以完全解决。可以不用窗体....
舉杯邀明月 2013-11-30
  • 打赏
  • 举报
回复
用“数据有效性”,不能达到“单元格跳转”的功能吧! 这个可能还是得配以VBA代码来解决……

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧