永发信息网

请高手帮忙解释下面VBA代码的含义

答案:2  悬赏:10  手机版
解决时间 2021-03-10 20:24
  • 提问者网友:那叫心脏的地方装的都是你
  • 2021-03-10 05:23
Sub pengyx()
a = Sheet1.[a65536].End(3).Row
b = Sheet2.[a65536].End(3).Row
ar = Sheet1.Range("a2:c" & a)
br = Sheet2.Range("a2:d" & b)
Set d = CreateObject("Scripting.Dictionary")
ReDim cr(1 To UBound(ar) + 1, 1 To UBound(br))
s = -1
For i = 1 To UBound(br)
ky = br(i, 2)
For j = 1 To UBound(ar)
If ar(j, 1) = br(i, 1) Then
k = j
End If
Next
r = d(ky)
If r = "" Then
s = s + 2
d(ky) = s
cr(1, s) = "打印": cr(1, s + 1) = "后期"
cr(2, s) = ky: cr(2, s + 1) = ky
cr(k + 1, s) = br(i, 3): cr(k + 1, s + 1) = br(i, 4)
Else
cr(k + 1, r) = br(i, 3): cr(k + 1, r + 1) = br(i, 4)
End If
Next
Sheet3.Range("a12").Resize(UBound(ar), UBound(ar, 2)) = ar
Sheet3.Cells(11, UBound(ar, 2) + 1).Resize(UBound(ar) + 1, s + 1) = cr
End Sub
最佳答案
  • 五星知识达人网友:等灯
  • 2021-03-10 06:40
Sub pengyx()
a = Sheet1.[a65536].End(3).Row sheets1已非空的总行数
b = Sheet2.[a65536].End(3).Row sheets2已非空的总行数
ar = Sheet1.Range("a2:c" & a) 获取所有非空范围
br = Sheet2.Range("a2:d" & b) 获取所有非空范围
Set d = CreateObject("Scripting.Dictionary") 设置d为字典类型
ReDim cr(1 To UBound(ar) + 1, 1 To UBound(br)) 重新定义数组
s = -1
For i = 1 To UBound(br) 循环br范围
ky = br(i, 2)
For j = 1 To UBound(ar) 循环ar范围
If ar(j, 1) = br(i, 1) Then 判断当前单元格的值是否相等
k = j 将当前ar的行数赋值给k
End If
Next
r = d(ky) 字典d(ky)赋值r
If r = "" Then r为空
s = s + 2 s累计2
d(ky) = s 字典d(ky)为s的值
cr(1, s) = "打印": cr(1, s + 1) = "后期" 在cr(1,s)写上打印。cr(1, s + 1)写上后期
cr(2, s) = ky: cr(2, s + 1) = ky cr(2, s) 赋值 ky
cr(k + 1, s) = br(i, 3): cr(k + 1, s + 1) = br(i, 4) 赋值
Else
cr(k + 1, r) = br(i, 3): cr(k + 1, r + 1) = br(i, 4) 赋值
End If
Next
Sheet3.Range("a12").Resize(UBound(ar), UBound(ar, 2)) = ar
Sheet3.Cells(11, UBound(ar, 2) + 1).Resize(UBound(ar) + 1, s + 1) = cr
End Sub
全部回答
  • 1楼网友:零点过十分
  • 2021-03-10 08:00
private sub textbox1_change()'文本框的change事件,也就是textbox1发生任何改变就会触发这个事件 dim rng as range'定义一个range对象(代表一个单元格或是单元格区域) removedata‘你这个我不懂放在这里是一个变量名还是做什么用的 set x = sheets("sheet1").range("a1:a1000")‘实例化了x且是一个range对象(简单说也就是x代表了a1到a1000这段单元格) i = 0’给i赋值为0 for each rng in x'循环查用range对象rng之前定义的,在x里面(也就是a1到a1000单元格里面逐个查找) mycheck = rng like textbox1.text & "*" mycheck= rng 和文本框里内容相似的内容,如,王和王小三,王王小,王小五,注意小王五就不是了因为*号在后面所以是以文本框里的内容加上*号,*号代表任意个字符如果找到有这样的结果那么mycheck就等于true了,否则等于false if mycheck = true then '如果找到了上述的结果也就是查找到了匹配值那么就执行 listbox1.columncount = 6‘设定listbox1的总列数 listbox1.columnwidths = "40,120,0,0,60,60" 设定listbox1各列的宽度 listbox1.additem , i'添加首行 listbox1.list(i, 0) = rng‘添加查找到的单元格的第一个单元格,例如是 a7 下面依次添加 listbox1.list(i, 1) = rng(1, 2) listbox1.list(i, 2) = rng(1, 3) listbox1.list(i, 3) = rng(1, 4) listbox1.list(i, 4) = rng(1, 5) listbox1.list(i, 5) = rng(1, 6) i = i + 1‘ 增加listbox1的行号 end if activecell.value = userform1.listbox1.value next rng end sub
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯