我尝试过针对类似宏建议的一些代码。
我需要将列L中单元格中的信息单独粘贴为列M中的图片。我不想为数百个项目中的每一个一遍又一遍地手动执行此操作。
这是没有循环或重复的样子。只做两次手术。
Sub pasteaspicture()
pasteaspicture Macro
Range("L3").Select
Selection.Copy
Range("M3").Select
ActiveSheet.Pictures.Paste.Select
Range("L4").Select
Application.CutCopyMode = False
Selection.Copy
Range("M4").Select
ActiveSheet.Pictures.Paste.Select
End Sub
感谢。
答案 0 :(得分:1)
此代码应该从第3行循环到第L列的结尾,如果这不是您想要的,那么我可以为您编辑它。
Application.screenupdating = False
With ActiveSheet
LastRow = .Cells(.Rows.Count, "L").End(xlUp).Row
End With
For i = 3 To LastRow
Range("L" & i).Copy
Range("M" & i).Select
ActiveSheet.Pictures.Paste.Select
Next i
Application.screenupdating = true
此代码应该可以使用,但它包含一个select,这在VBA中是不受欢迎的,但由于我不知道如何使用图片粘贴,我使用您的代码作为模板。
答案 1 :(得分:0)
这是一种快速(但很长)的方法,没有循环。 它设置范围并查找列的最后一行。
你会发现Excel有很多方法可以使同样的坚果。希望这会有所帮助。
Sub CopyPic()
Dim lTopRow As Long
Dim lLeftColumn As Long
Dim lRightColumn As Long
Dim lLastRow As Long
With Sheets("Sheet1")
lTopRow = .Range("L3").Row
lLeftColumn = .Range("L3").Column
lLastRow = .Range("L:L").Find("*", , xlValues, , xlByRows, xlPrevious).Row
lRightColumn = lLeftColumn
Application.Goto .Range(Cells(lTopRow, lLeftColumn), Cells(lLastRow, lRightColumn)), scroll:=False
Selection.Copy
lLeftColumn = .Range("M3").Column
lRightColumn = lLeftColumn
Application.Goto .Range(Cells(lTopRow, lLeftColumn), Cells(lLastRow, lRightColumn)), scroll:=False
.Pictures.Paste.Select
End With
End Sub