2023-02-14 12:25来源:m.sf1369.com作者:宇宇
if Application.WorksheetFunction.CountA(Range(A1:b1)) then
Range(c1)=Range(a1)*Range(b1)
end If
Range(B65536).End(xlUp).Row '返回B列的最后一个有数据单元格所在的行号,例如100
Range(B2:B & .Range(B65536).End(xlUp).Row) '选中从B2开始到最后一个有数据单元格的区域范围,例如(B2:B100)
SpecialCells(xlCellTypeBlanks) '选中某区域中的空白单元格
整段代码的意思是:将观察表中B2单元格的数据粘贴到二维表B列中的所有空单元格中(作用范围从B2开始到B列最后一个有数据的单元格)。
程序太长, 已将你的原代码收改, 同时加上,如果出现参考值为空的时候(或任何错误),停止运行VBA。
Private Sub CommandButton1_Click()
On Error GoTo 100
Dim i, ii As Integer, strImgPath As String
strImgPath = F:\VBA01\
For i = 0 To 41 ‘即原代码 1 – 42 行
For ii = 1 To 5 ‘即原代码 A – E 列
Cells(i * 4 + 1, ii).Select
ActiveSheet.Pictures.Insert(strImgPath & Trim(Cells(i * 4 + 1, ii)) & .jpg).Select
Selection.ShapeRange.LockAspectRatio = msoFalse
Selection.ShapeRange.Height = 110.25
Selection.ShapeRange.Width = 141.75
Next
Next
100:
End Sub
修改成:
Private Sub CommandButton1_Click()
On Error Resume Next
Dim i, ii As Integer, strImgPath As String
strImgPath = F:\VBA01\
For i = 0 To 41 ‘即原代码 1 – 42 行
For ii = 1 To 5 ‘即原代码 A – E 列
Cells(i * 4 + 1, ii).Select
ActiveSheet.Pictures.Insert(strImgPath & Trim(Cells(i * 4 + 2, ii)) & .jpg).Select
Selection.ShapeRange.LockAspectRatio = msoFalse
Selection.ShapeRange.Height = 110.25
Selection.ShapeRange.Width = 141.75
Next
Next
End Sub
有的,在工作表的CHANGE事件中写代码就可以,例如:
Private Sub Worksheet_Change(ByVal Target As Range)
MsgBox Target.Text
End Sub