如何在VBA中的多个工作表中选择相同的范围?

时间:2016-09-14 11:46:38

标签: excel-vba vba excel

我有4张纸,说......,

 STP1
 STP2
 STP3
 STP4
 STP5

我想同时更新所有5张纸张中的所有D3单元格。

我正在尝试这种方式..,

  Worksheets(Array("STP1", "STP2", "STP3", "STP4", "STP5")).Select
  Worksheets(Array("STP1", "STP2", "STP3", "STP4",   "STP5")).Range("D3").Select
  If Worksheets(Array("STP1", "STP2", "STP3", "STP4", "STP5").Range("D3").Offset(0, 0) = "" Then
  Worksheets(Array("STP1", "STP2", "STP3", "STP4", "STP5")).Range("D3").Select.End(xlDown).Select
  End If
  ActiveCell.Offset(0, 0).Select
  ActiveCell.Value = Eng

但这没有成功...... 有人可以帮我吗...

2 个答案:

答案 0 :(得分:1)

考虑:

Sub Macro1()
    Sheets(Array("STP1", "STP2", "STP3", "STP4", "STP5")).Select
    Sheets("STP1").Activate
    Range("D3").Select
    ActiveCell.Value = "whatever"
End Sub

(但我会使用循环而不是Selects

答案 1 :(得分:1)

此代码是否太长(循环遍历所有表格),使用Select Case,您可以根据需要添加任意数量的工作表。

(最好避免选择细胞)

Option Explicit

Sub SelectSheets()

Dim Sht             As Worksheet

For Each Sht In ThisWorkbook.Sheets
    Select Case Sht.Name
        Case "STP1", "STP2", "STP3", "STP4", "STP5"

            If Sht.Range("D3") = "" Then
                Sht.Range("D" & Sht.Cells(Sht.Rows.Count, "D").End(xlUp).Row).Value = Eng
            Else
                Sht.Range("D3").Value = Eng
            End If

    End Select

Next Sht

End Sub