Excel使用粘贴作为图片重复列

时间:2016-08-25 18:35:32

标签: excel vba excel-vba

我尝试过针对类似宏建议的一些代码。

我需要将列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

感谢。

2 个答案:

答案 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