VBA 循环将值粘贴到另一个 sheet

VBA loop to paste value in another sheet

希望你们中的一位能帮我解决这个问题:

在 Sheet1 中,我有一个名称从 "Sem1" 到 "Sem52" 的组合框。这些名称也对应于 sheet 个名称(因此 "Sem1"、"Sem2"、...)。根据在组合框中选择的文本,我想将 Sheet1 中的值粘贴到相关的 sheet。 我在此处向您展示了我起草的代码,我的想法是避免重复我的 IF 条件 52 次!我想我需要设置一个新变量(例如,将 i 调暗为整数,对于 i = 1 到 52),但我真的不知道该怎么做。

感谢您的帮助

Dim cmbx As ComboBox
Set cmbx = Sheets("Sheet1").ComboBox1

If cmbx.Text = "Sem1" Then

    Sheets("Sheet1").Select
    Range("c41:c42").Select
    Selection.Copy
    Sheets("Sem1").Select
    Range("p34").Select
    Selection.PasteSpecial Paste:=xlPasteValues

您可以使用 for 循环:

http://www.excel-easy.com/vba/loop.html

Dim i As Integer

For i = 1 To 6
    If cmbx.Text = ("Sem" && i) Then
       ...
Next i

您可以根据所选文本直接驱动您正在使用的sheet:

Dim cmbx As ComboBox
Set cmbx = Sheets("Sheet1").ComboBox1

Sheets("Sheet1").Range("c41:c42").Copy
Sheets(cmbx.Text).Range("p34").PasteSpecial Paste:=xlPasteValues

由于组合框中可用的选项都与相应 sheet 的名称相匹配,因此选择适当的 sheet(与用户选择的名称相匹配)然后进行操作。

您可以 PasteSpecial 在许多工作表中 而无需 循环。这是 2 个目的地的示例:

Sub dural()
    Sheets("Sheet1").Range("C40:C41").Copy
    Sheets(Array("Sem1", "Sem2")).Select
    Range("P34").Select
    Selection.PasteSpecial Paste:=xlPasteValues
End Sub