ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何弹出窗体选择、空行分隔合并、记录去重工作表记录?

如何弹出窗体选择、空行分隔合并、记录去重工作表记录?

作者:绿色风 分类: 时间:2022-08-17 浏览:91
楼主
liuguansky
Q:如何弹出窗体选择、空行分隔合并、记录去重工作表记录?
有多个工作表,只需要提取选定的工作表中的几项不重复内容,合成一个新表格。表格内容间以空行间隔。
A:用如下窗体代码:

  1. Private Sub CommandButton1_Click()
  2.     Dim str1$, i&, arrt(), k&
  3.     If ListBox1.ListCount >= 1 Then
  4.         For i = 0 To ListBox1.ListCount - 1
  5.             If ListBox1.Selected(i) = True Then
  6.                 k = k + 1: ReDim Preserve arrt(1 To 2, 1 To k)
  7.                 arrt(1, k) = i: arrt(2, k) = ListBox1.List(i)
  8.             End If
  9.         Next i
  10.         For i = 1 To k
  11.             ListBox1.RemoveItem arrt(1, i) + 1 - i
  12.             ListBox2.AddItem arrt(2, i)
  13.         Next
  14.     End If
  15. End Sub
  16. Private Sub CommandButton2_Click()
  17.     Dim str1$, i&, arrt(), k&
  18.     If ListBox2.ListCount >= 1 Then
  19.         For i = 0 To ListBox2.ListCount - 1
  20.             If ListBox2.Selected(i) = True Then
  21.                 k = k + 1: ReDim Preserve arrt(1 To 2, 1 To k)
  22.                 arrt(1, k) = i: arrt(2, k) = ListBox2.List(i)
  23.             End If
  24.         Next i
  25.         For i = 1 To k
  26.             ListBox2.RemoveItem arrt(1, i) + 1 - i
  27.             ListBox1.AddItem arrt(2, i)
  28.         Next
  29.     End If
  30. End Sub
  31. Private Sub CommandButton3_Click()
  32.     Dim i&, arr, d, k&, j&, col&, dd, temp&, str1$
  33.     Set d = CreateObject("scripting.dictionary")
  34.     UserForm1.Hide
  35.     On Error Resume Next
  36.     Application.ScreenUpdating = False
  37.     Application.DisplayAlerts = False
  38.     If ListBox2.ListCount >= 1 Then
  39.         Sheets("结果").Delete
  40.         Sheets.Add after:=Sheets(Sheets.Count)
  41.         With ActiveSheet
  42.             .Name = "结果"
  43.             .Cells(1, 1).Resize(1, 4) = Array("宗地号", "点号", "x", "y")
  44.             col = 1
  45.             For i = 0 To ListBox2.ListCount - 1
  46.                 str1 = ListBox2.List(i)
  47.                 With Sheets(str1)
  48.                     k = .Cells(.Rows.Count, 2).End(3).Row - 9
  49.                     arr = .Cells(10, 2).Resize(k, 3).Value
  50.                     For j = 1 To k Step 2
  51.                         If arr(j, 1) <> "" Then
  52.                             If Not d.exists(arr(j, 1)) Then
  53.                                 d.Add arr(j, 1), Application.Index(arr, j, 0)
  54.                             End If
  55.                         End If
  56.                     Next j
  57.                 End With
  58.                 temp = col
  59.                 For Each dd In d.keys
  60.                     col = col + 1
  61.                     .Cells(col, 2).Resize(1, 3) = d(dd)
  62.                     If col = temp + 1 Then .Cells(col, 1) = "'" & str1
  63.                 Next
  64.                 col = col + 1
  65.             Next
  66.         End With
  67.         Else: MsgBox "未选择表,请选择。": UserForm1.Show
  68.     End If
  69.     Unload UserForm1
  70.     Application.DisplayAlerts = True
  71.     Application.ScreenUpdating = True
  72.     Set d = Nothing
  73. End Sub
  74. Private Sub CommandButton4_Click()
  75.     Call justsoso
  76. End Sub
  77. Private Sub UserForm_Initialize()
  78.     UserForm1.Caption = "请选择要汇总的工作表表名:"
  79.     Call justsoso
  80. End Sub
  81. Sub justsoso()
  82.     Dim i%, st
  83.     ListBox1.Clear
  84.     ListBox2.Clear
  85.     ListBox1.MultiSelect = fmMultiSelectExtended
  86.     ListBox2.MultiSelect = fmMultiSelectExtended
  87.     For i = 1 To Sheets.Count
  88.         st = Sheets(i).Name
  89.         If VBA.IsNumeric(str1) And Len(CStr(st)) = 10 Then
  90.             ListBox1.AddItem Sheets(i).Name
  91.         End If
  92.     Next i
  93. End Sub

2楼
rhr2008
谢谢老师分享,看着有点晕。
3楼
余方方
谢谢老师分享
4楼
tieqilin
谢谢老师分享,看着有点晕。

免责声明

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

评论列表
sitemap