excel vba 求助
请代码我的客户名称组合框是可以调用工作表3A2:A列的,当我选择一个客户时客户代码组合框自动显示客户代码(工作表3C2:C列)客户余额文本框自动显示客户余额,(在工作表3...
请代码 我的 客户名称组合框是可以调用工作表3A2:A列的,当我选择一个 客户时
客户代码组合框自动显示客户代码(工作表3C2:C列) 客户余额文本框自动显示客户余额,(在工作表3DD2:D列)。调用客户代码组合框,客户名称及余额框同样能自动显示。我是初学者望高手赐教实现代码 展开
客户代码组合框自动显示客户代码(工作表3C2:C列) 客户余额文本框自动显示客户余额,(在工作表3DD2:D列)。调用客户代码组合框,客户名称及余额框同样能自动显示。我是初学者望高手赐教实现代码 展开
2个回答
展开全部
给点资料你参考一下。或者你去“Excel Home”,或“Excel精英培训”里去发个贴试试。
在使用多个组合框输入数据时,往往希望后一个组合框中的条目能根据前一个组合框的内容有所不同,如示例中第二个选择城市的组合框根据第一个选择省份的组合框所选择的不同省份加载不同的县市名称,示例代码如下:
#001 Private Sub UserForm_Initialize()
#002 Dim col As New Collection
#003 Dim arr As Variant
#004 Dim rng As Range
#005 Dim i As Integer
#006 On Error Resume Next
#007 For Each rng In Range("A2:A" & Sheet1.Range("A65536").End(xlUp).Row)
#008 If rng <> "" Then col.Add rng, CStr(rng)
#009 Next
#010 ReDim arr(1 To col.Count)
#011 For i = 1 To col.Count
#012 arr(i) = col(i)
#013 Next
#014 ComboBox1.List = arr
#015 ComboBox1.ListIndex = 0
#016 CommandButton1.Accelerator = "D"
#017 End Sub
#018 Private Sub ComboBox1_Change()
#019 Dim myAddress As String
#020 Dim rng As Range
#021 Dim mymsg As Integer
#022 ComboBox2.Clear
#023 With Sheet1.Range("A:A")
#024 Set rng = .Find(What:=ComboBox1.Text)
#025 If Not rng Is Nothing Then
#026 myAddress = rng.Address
#027 Do
#028 ComboBox2.AddItem rng.Offset(, 1)
#029 Set rng = .FindNext(rng)
#030 Loop While Not rng Is Nothing And rng.Address <> myAddress
#031 End If
#032 End With
#033 ComboBox2.ListIndex = 0
#034 End Sub
代码解析:
第1行到第17行代码窗体的Initialize事件过程,在窗体显示时将工作表A列中的省份名称去除重复后加载到组合框中。
其中第7行到第13行代码把工作表A列中的省份名称使用Add方法去除重复后加载到组合框中,应用于Collection 对象的Add方法添加一个成员对象,请参阅技巧110 。
第15行代码设置组合框的ListIndex属性为0,选中组合框的第一行条目。ListIndex属性指定当前选中的列表框或组合框条目,语法如下:
object.ListIndex [= Variant]
参数Variant是可选的,控件中当前被选的条目。
ListIndex 属性包含列表中被选行的索引,取值范围为 -1 到列表总行数减 1(即ListCount - 1)之间的数值。当用户没有选中行时,ListIndex 返回 -1。列表中第一行的 ListIndex值是0,第二行的ListIndex 值是1,依此类推。
第16行代码设置窗体中按钮的Accelerator属性值。Accelerator属性设置或检索控件的加速键,语法如下:
object.Accelerator [= String]
参数String是可选的,用作加速键的字符。
先按住 Alt 再紧接着按加速键,会将焦点定位到该对象上,并初始化与该对象关联的一个或多个事件,也就是说窗体显示后按Alt+D组合键将会执行“关闭”按钮中的代码关闭窗体。
第18行到第34行代码ComboBox1的Change事件过程,使用Find方法将所有属于ComboBox1所选择的省份的县市加载到ComboBox2中。
在使用多个组合框输入数据时,往往希望后一个组合框中的条目能根据前一个组合框的内容有所不同,如示例中第二个选择城市的组合框根据第一个选择省份的组合框所选择的不同省份加载不同的县市名称,示例代码如下:
#001 Private Sub UserForm_Initialize()
#002 Dim col As New Collection
#003 Dim arr As Variant
#004 Dim rng As Range
#005 Dim i As Integer
#006 On Error Resume Next
#007 For Each rng In Range("A2:A" & Sheet1.Range("A65536").End(xlUp).Row)
#008 If rng <> "" Then col.Add rng, CStr(rng)
#009 Next
#010 ReDim arr(1 To col.Count)
#011 For i = 1 To col.Count
#012 arr(i) = col(i)
#013 Next
#014 ComboBox1.List = arr
#015 ComboBox1.ListIndex = 0
#016 CommandButton1.Accelerator = "D"
#017 End Sub
#018 Private Sub ComboBox1_Change()
#019 Dim myAddress As String
#020 Dim rng As Range
#021 Dim mymsg As Integer
#022 ComboBox2.Clear
#023 With Sheet1.Range("A:A")
#024 Set rng = .Find(What:=ComboBox1.Text)
#025 If Not rng Is Nothing Then
#026 myAddress = rng.Address
#027 Do
#028 ComboBox2.AddItem rng.Offset(, 1)
#029 Set rng = .FindNext(rng)
#030 Loop While Not rng Is Nothing And rng.Address <> myAddress
#031 End If
#032 End With
#033 ComboBox2.ListIndex = 0
#034 End Sub
代码解析:
第1行到第17行代码窗体的Initialize事件过程,在窗体显示时将工作表A列中的省份名称去除重复后加载到组合框中。
其中第7行到第13行代码把工作表A列中的省份名称使用Add方法去除重复后加载到组合框中,应用于Collection 对象的Add方法添加一个成员对象,请参阅技巧110 。
第15行代码设置组合框的ListIndex属性为0,选中组合框的第一行条目。ListIndex属性指定当前选中的列表框或组合框条目,语法如下:
object.ListIndex [= Variant]
参数Variant是可选的,控件中当前被选的条目。
ListIndex 属性包含列表中被选行的索引,取值范围为 -1 到列表总行数减 1(即ListCount - 1)之间的数值。当用户没有选中行时,ListIndex 返回 -1。列表中第一行的 ListIndex值是0,第二行的ListIndex 值是1,依此类推。
第16行代码设置窗体中按钮的Accelerator属性值。Accelerator属性设置或检索控件的加速键,语法如下:
object.Accelerator [= String]
参数String是可选的,用作加速键的字符。
先按住 Alt 再紧接着按加速键,会将焦点定位到该对象上,并初始化与该对象关联的一个或多个事件,也就是说窗体显示后按Alt+D组合键将会执行“关闭”按钮中的代码关闭窗体。
第18行到第34行代码ComboBox1的Change事件过程,使用Find方法将所有属于ComboBox1所选择的省份的县市加载到ComboBox2中。
追问
我发到你邮箱你给我做做咋样?拜托老兄
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询