Dim i As Long, j
'定义变量
For i = 1 To Sheet8.Range("a65536").End(xlUp).Row
'运算从Sheet8的第一行到第一列的最后一个有内容的单元格所在列.
'对后面内容,你可以查找END()的帮助来理解
Sheet3.Cells(i, 1).Formula = "=MATCH(Sheet8!A" &i &",Sheet1!A:A,0)"
'本句为了节省代码,直接借用了EXCEL的公式来查找符合条件的单元格所在的行
'函数MATCH就是查找函数.
'否则,要自己编写查找循环代码,由于VBA是解释执行,会导致效率很低,
'Formula就是把后面的公式写到该单元格中并运算.
j = Sheet3.Cells(i, 1): Sheet3.Cells(i, 1) = ""
'找到后将值(也就是查找到的行)传递给变量j,
If IsNumeric(j) Then
Sheet1.Cells.Rows(j).Cut
Sheet3.Rows(i).Insert
Sheet1.Cells.Rows(j).Delete
End If
'IF语句用来将该行复制,粘贴在SHEET3的相关行中,结束后将该行删除.
'如果在同一工作表中,该三行语句可简化为: Cells.Rows(j).Cut Rows(i)
Next i
'运行下一行
用双击事件,我现在也正要类似的代码,我的是要在本单元格写入值之后,再将值写入所有表中的相同列的数据进行更新,其实公式就可以搞定的,boss偏要这样来,郁闷...,首先说下思路吧:
先记住单元格的行,列号
r = ActiveCell.Row
c = ActiveCell.Column
写在选择变动事件中
在改变事件中写入以下代码记住单元格的值
Cells(r, c).Value
你再写你的复杂计算式
再写入
Cells(r, c).Value=你计算后的值
这样,你鼠标都不用点了,,,,,
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)