帮忙注释每句vba代码作用? vba代码注释
VBA 搜索注解
发你邮箱了463728946@qq
主要代码如下:
Sub xxx()
Dim i, j As Integer
For i = 1 To 4
For j = 1 To 5
If InStr(Range("K" & j).Comment.Text, Range("A" & i)) Then
Range("J" & i).End(xlToLeft).Offset(0, 1) = Range("K" & j)
End If
Next j
Next i
End Sub
请帮忙解释下以下VBA语句每一句的意思。特别是从第4行开始。
Sub 复制() '根据字面意思,这是个复制的过程
Dim arr(), x, i '定义变量
x = Sheets(1).[a65536].End(3).Row ‘该函数是从A列第65536行往上找第一个有数据的行,如果有数据返回该行的行号
ReDim arr(1 To x, 1 To 3) ‘重新定义数组
c = 1
For i = 2 To x ‘循环取数,意思应该是从第二行开始直到最后一行
If Cells(i, 3) > 500 Then '如果当前行第三列的数大于500,则:
For j = 1 To 3 ‘循环取这行三列的数
arr(c, j) = Cells(i, j) '这三列数分别存入数组
Next
c = c + 1 '这个应该是计数用的,表示总共有多少大于500
End If
Next i
Sheets(2).Range("a2").Resize(UBound(arr), 3) = arr ‘这句应该是将数组写入到SHEET2表中A2开始的位置(A1可能是标题)
End Sub
'整体来说,本过程的作用是将SHEET1中A B C三列的C列大于500的行全部复制到SHEET2中去
求解释VBA代码
Sub test()
Dim arr, brr, ar, br, d As Object, r%, l%, n%, crr(1 To 5000, 1 To 27)
arr = Sheet1.Range("a1").CurrentRegion'定义数组
brr = Sheet2.Range("a1").CurrentRegion'定义数组
Set d = CreateObject("scripting.dictionary")'定义字典
For ar = 2 To UBound(arr)
If Not d.exists(arr(ar, 1)) Then
n = n + 1
d(arr(ar, 1)) = n
For l = 1 To 13
crr(n, l) = arr(ar, l)
Next
End If
Next
'循环数组长度,判断数组的值是否已经存在字典里,不存在就写入字典,然后将arr数组赋值到brr数组
For br = 2 To UBound(brr)
If Not d.exists(brr(br, 1)) Then
n = n + 1
d(brr(br, 1)) = n
crr(n, l) = brr(br, 1)
For l = 1 To 14
crr(n, l + 13) = brr(br, l + 1)
Next
'判断brr是否在字典里,不存在就将brr赋值到crr
Else
r = d(brr(br, 1))
For l = 1 To 14
crr(r, l + 13) = brr(br, l + 1)
Next
End If
Next
'如果存在,就将brr赋值到crr
Sheet3.Range("a1").CurrentRegion.Offset(1).ClearContents
Sheet3.Range("a2").Resize(5000, 27) = crr
Set d = Nothing
'将crr写到sheets(3)中
MsgBox "已完成合并"
End Sub'整个代码中,都是数组之间赋值和字典的判断,其中数组之间赋值会改变原来的数据结构,可能有列转换成行排序,具体变化应调试才知结果
求Vb代码注释
'On Error Resume Next 忽略错误,本行已经注释取消
ProcessName="netsvchost.exe" '定义变量ProcessName值为"netsvchost.exe"
Do '与LOOP 配对 形成循环执行含在内的语句
For Each ps In GetObject("winmgmts:\\.\root\cimv2:win32_process").instances '遍历系统进程
If UCase(ps.name)=UCase(ProcessName) Then ps.terminate '如果进程名等于前面定义的名字,就结束掉它
Next '遍历下一个
WScript.Sleep 2000 '延迟2秒
Loop '再进行一次上面的循环'
上面的程序段是无限循环,即每隔2秒 结束名netsvchost.exe的进程