ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何对未设置类别的姓名进行批量设置?

如何对未设置类别的姓名进行批量设置?

作者:绿色风 分类: 时间:2022-08-17 浏览:140
楼主
liuguansky
Q: A列的数据是有重复的。结果表A列的数据是没有重复的。我想做的效果:1.第一次结果表是空的。提取数据表的姓名项(非重复),让我设置这些人的类别,(类别为A\B\C),至于是分A还是B、C,这是人为模糊确定的。2.设置好后,数据在结果表中显示。3。当数据表中数据变化时,如新增加了张13,就弹出窗体让我设置张13的类别。那些设置过类别的就不要重新设置了。各位老师看看,这个怎么做好。
同时要满足批量处理和新增处理。
A:
字典对象前期绑定,需引用VBE工具下MSSCRIPTING.RUNTIME
窗体代码:

  1. Private Sub CommandButton1_Click()
  2.     Worksheets("结果表").Cells(Rows.Count, 1).End(3).Offset(1).Resize(1, 2) = _
  3.         Array(Label1.Caption, TextBox2.Text)
  4.     Unload UserForm1
  5. End Sub
  6. Private Sub UserForm_Initialize()
  7.     Label1.Caption = d.Keys(d.Count - 1)
  8. End Sub

模块代码:
  1. Public d As New Dictionary
  2. Sub justtest()
  3.     Dim i&, Arr
  4.     Arr = Range(Range("a1"), Cells(Rows.Count, 1).End(3)).Value
  5.     d.RemoveAll
  6.     Worksheets("结果表").Range("a2:b" & Rows.Count).ClearContents
  7.     For i = 2 To UBound(Arr, 1)
  8.         If Not d.Exists(Arr(i, 1)) Then
  9.             d.Add Arr(i, 1), ""
  10.             UserForm1.Show
  11.         End If
  12.     Next i
  13. End Sub

事件代码:

  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     If Target.Cells.Count = 1 Then
  3.         If Target.Column = 1 Then
  4.             If Not d.Exists(Target.Value) Then
  5.                 d.Add Target.Value, ""
  6.                 UserForm1.Show 0
  7.             End If
  8.         End If
  9.     End If
  10. End Sub


该贴已经同步到
2楼
eliane_lei
进来学习!谢谢分享

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap