【问题标题】:vba copy certain range and paste as picturevba复制一定范围并粘贴为图片
【发布时间】:2018-04-30 01:42:19
【问题描述】:

现在我可以将整个边框从 Sheet1 复制到 Sheet2,但我的问题是我无法复制特定范围,例如带有标题的最后 10 列值。例如,当在 O 列输入新值时,它只会复制并粘贴从 F 到 O 的标题。

Worksheets("sheet1").Select
Set startcell = Range("B2")
startcell.CurrentRegion.CopyPicture xlScreen, xlBitmap
Sheets("Sheet2").Select
Range("B2").Select
ActiveSheet.Paste

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    假设您可以手动(不使用 VBA)执行此任务,现在您想要自动化:

    使用宏记录器记录您手动完成此操作所采取的步骤,然后编辑 strong> 用于查看 VBA 代码的宏,删除任何无关的部分,您将得到您正在寻找的代码。

    此过程可用于您知道如何手动(使用 Excel 的)内置功能完成但您希望自动化的任何任务。

    这就是我今天学习 VBA 知识的前半部分的方式。这是开始使用 VBA 的一种很好的“骗子”方式。


    更多信息:

    【讨论】:

    • 虽然这些都是很好的建议,但它们并不能回答我担心的问题:)
    • 它解释了 OP 如何解决问题(和其他问题),而不是用“免费自定义编码”奖励研究不足的问题。 (有一个trend需要转过来。)
    【解决方案2】:

    试试这个:

    Sub CopyLastTenCols()
        'declaration of variables
        Dim sheet1 As Worksheet, sheet2 As Worksheet, lastCol As Long
        Set sheet1 = Worksheets("Sheet1")
        Set sheet2 = Worksheets("Sheet2")
        'here we determine last column to copy
        lastCol = sheet1.Cells(2, 2).End(xlToRight).Column
        'here, we union headers with last ten columns, then paste it to range
        'of appropriate size, starting in A1 cell
        Union(sheet1.Range("B2:B5"), sheet1.Range(sheet1.Cells(2, lastCol - 9), sheet1.Cells(5, lastCol))).Copy sheet2.Range("A1:K4")
    End Sub
    

    【讨论】:

    • 对不起,它可以工作,但如何将其粘贴为图片?我使用 .CopyPicture xlScreen,xlBitmap 它不起作用
    • 最后一个问题,当点击 sheet2(粘贴的工作表)并运行时,它会显示错误“1004”。但是当我在 sheet1 上运行没有选择列时,它将运行正常~tyty
    • 为什么我必须在工作表 1 上运行宏然后它会运行良好,如果我在工作表 2 上运行宏我会弹出错误 1004
    【解决方案3】:

    你可能会喜欢这个

    Sub main()
        With Worksheets("Sheet1").Range("B2").CurrentRegion
            If .Columns.Count > 11 Then .Columns(2).Resize(.Columns.Count - 11).EntireColumn.Hidden = True
            .CopyPicture xlScreen, xlBitmap
            Sheets("Sheet2").Range("B2").PasteSpecial
            .EntireColumn.Hidden = False
        End With
    End Sub
    

    【讨论】:

    • 显示错误无法获取范围类的currentregion属性
    • 那么您的数据与您在问题中显示的不一样。我根据您显示的数据编写了代码。您自己的代码在 Range B2 上使用 CurrentRegion...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-28
    相关资源
    最近更新 更多