复制并粘贴到工作表中谁的名字不等于列表中的值?

时间:2018-11-24 04:01:03

标签: excel vba excel-vba

我正在尝试将信息复制并粘贴到某些工作表。我已经知道大多数工作表的名称,但是可能会添加一个新工作表,而我不知道其名称。

有3个我不想更改的工作表(我们称它们为WorkSheet1,WorkSheet2和WorkSheet3)。我想从WorkSheet2复制一些值并将它们粘贴到除1-3之外的所有工作表中。到目前为止,我在工作表中有一个IF语句,我知道这些工作表的名称(WorksheetX,Y和Z)。我在不知道工作表名称的最后一个实例中遇到了麻烦。我一直在考虑使用Or。这是我到目前为止的内容:

Dim ws As Worksheet
Dim og As Worksheet
Set og = Sheets("WorkSheet2")
For Each ws In Worksheets
If ws.Name = "WorkSheetX" Then
    og.Range("A1").Copy
    Sheets("WorkSheetX").Range("L4").PasteSpecial
ElseIf ws.Name = "WorkSheetY" Then
    og.Range("A1").Copy
    Sheets("WorkSheetY").Range("L4").PasteSpecial
ElseIf ws.Name = "WorkSheetZ" Then
    og.Range("A1").Copy
    Sheets("WorkSheetZ").Range("L4").PasteSpecial

'This is where I am having trouble. I won't know the name of the new sheet
'Just that it wont be WorkSheet1,2,3,X,Y, or Z
ElseIf (ws.Name <> "WorkSheet1" Or ws.Name <> "WorkSheet2" 
Or ws.Name  <> "WorkSheet3" Or ws.Name <> "WorkSheetX" Or
ws.Name <> "WorkSheetY" Or ws.Name <> "WorkSheetZ") Then
    og.Range("A1").Copy
    ws.Range("L4").PasteSpecial
End If
Next

2 个答案:

答案 0 :(得分:2)

这是完成任务的简单代码。

Dim ws As Worksheet

'Change the sheet names you don't want to perform you copy_paste
Sheets(Array("Sheet1", "Sheet2", "Sheet4", "Sheet_n")).Visible = False

    For Each ws In Application.ThisWorkbook.Worksheets
            If ws.Visible = True Then
                ws.Range("L4").Value = ws.Range("A1").Value
            End If
    Next ws

Sheets(Array("Sheet1", "Sheet2", "Sheet4", "Sheet_n")).Visible = True

答案 1 :(得分:1)

少量工作表

Option Explicit

Sub AFewWorksheets()

  Dim ws As Worksheet
  Dim og As Worksheet

  Set og = Sheets("WorkSheet2")

  For Each ws In Worksheets

    Select Case ws.Name
      Case "Worksheet1", "Worksheet2", "Worksheet3"
      Case Else
        og.Range("A1").Copy
        ws.Range("L4").PasteSpecial
    End Select

  Next

End Sub