1. 首页 > 科技

帮忙注释每句vba代码作用? vba代码注释

帮忙注释每句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的进程