【问题标题】:Copy text from a sheet to another depending on where copy comes from根据副本的来源将文本从工作表复制到另一个工作表
【发布时间】:2016-12-01 15:46:02
【问题描述】:

我有一本包含许多表格的 excel 书,目前我有一个宏可以将两个单元格复制到另一张表格然后打印,

我现在想做的是取决于副本来自哪个工作表,然后将它们粘贴到专用工作表中,

就像我从一张表复制粘贴到表 11,从表 2 复制粘贴到表 12 等等,

下面的代码可以从我所在的任何工作表复制到一个工作表,我现在在顶部添加了 if 语句以尝试复制到专用工作表,但这不起作用并且有错误,

Sub Tag_75()

Application.ScreenUpdating = False

Sheets("lb").Visible = True

Dim lb As Worksheet
Dim sh As Worksheet
Set sh = ActiveSheet

If sh = "Sheet1" Then
    lb = "Sheet11"

ElseIf sh = "Sheet2" Then
    lb = "Sheet12"

ElseIf sh = "Sheet3" Then
    lb = "Sheet13"

ElseIf sh = "Sheet4" Then
    lb = "Sheet14"

End If

ActiveCell.Resize(1, 1).Copy Worksheets("lb").Range("A1")

ActiveCell.Offset(, 1).Resize(1, 1).Copy Worksheets("lb").Range("A2")

Sheets("lb").Select
    Range("A1:A2").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    Selection.Borders(xlEdgeLeft).LineStyle = xlNone
    Selection.Borders(xlEdgeTop).LineStyle = xlNone
    Selection.Borders(xlEdgeBottom).LineStyle = xlNone
    Selection.Borders(xlEdgeRight).LineStyle = xlNone
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone

Worksheets("lb").Range("A2").WrapText = True
Worksheets("lb").Range("A1:A2").Font.Size = 22
Worksheets("lb").Range("A1:A2").ShrinkToFit = True

Dim STDprinter As String

STDprinter = Application.ActivePrinter
'Application.ActivePrinter = "\\SBS2011\Xerox WorkCentre 7830 on Ne04:"
Application.ActivePrinter = "\\JCSP55J\DYMO LabelWriter 450 (Copy 2) on Ne03:"
ActiveSheet.PrintOut
Application.ActivePrinter = STDprinter

Sheets("lb").Visible = False

sh.Activate

End Sub

谁能解释一下 if 语句

谢谢

【问题讨论】:

    标签: vba excel macros


    【解决方案1】:

    将这个:If sh = "Sheet1" Then 改为这个:If sh.Name = "Sheet1" Then

    在您拥有Sheets("lb") 的任何地方,将其更改为Sheets(lb)

    编辑

    我将添加更新的代码,因为问题太多,无法单独列出

    Sub Tag_75()
    
    Application.ScreenUpdating = False
    
    Dim lb As String
    Dim sh As Worksheet
    Set sh = ActiveSheet
    
    lb = "Sheet" & CInt(Replace(sh.Name, "Sheet", "")) + 10
    
    Sheets(lb).Visible = True
    
    ActiveCell.Resize(1, 1).Copy Worksheets(lb).Range("A1")
    
    ActiveCell.Offset(, 1).Resize(1, 1).Copy Worksheets(lb).Range("A2")
    
    Sheets(lb).Select
        Range("A1:A2").Select
        Selection.Borders(xlDiagonalDown).LineStyle = xlNone
        Selection.Borders(xlDiagonalUp).LineStyle = xlNone
        Selection.Borders(xlEdgeLeft).LineStyle = xlNone
        Selection.Borders(xlEdgeTop).LineStyle = xlNone
        Selection.Borders(xlEdgeBottom).LineStyle = xlNone
        Selection.Borders(xlEdgeRight).LineStyle = xlNone
        Selection.Borders(xlInsideVertical).LineStyle = xlNone
        Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
    
    Worksheets(lb).Range("A2").WrapText = True
    Worksheets(lb).Range("A1:A2").Font.Size = 22
    Worksheets(lb).Range("A1:A2").ShrinkToFit = True
    
    Dim STDprinter As String
    
    STDprinter = Application.ActivePrinter
    'Application.ActivePrinter = "\\SBS2011\Xerox WorkCentre 7830 on Ne04:"
    Application.ActivePrinter = "\\JCSP55J\DYMO LabelWriter 450 (Copy 2) on Ne03:"
    ActiveSheet.PrintOut
    Application.ActivePrinter = STDprinter
    
    Sheets(lb).Visible = False
    
    sh.Activate
    
    End Sub
    

    【讨论】:

    • 感谢您的回复,我已经进行了这些更改,并且没有出现突出显示“Sheet11”的不匹配错误。
    • 如果现在有任何问题,请告诉我,因为我无法完全测试它
    • 仍然不高兴,这次它的对象从 Set sh = ThisWorkbook.Worksheets(sh) 中丢失了任何更多想法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多