VBA循环粘贴另一个工作表中的值

时间:2015-02-06 15:04:05

标签: vba excel-vba excel-2010 excel

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

在Sheet1中,我有一个名为“Sem1”到“Sem52”的组合框。这些名称也对应于工作表名称(因此“Sem1”,“Sem2”,...)。根据组合框中选择的文本,我想将Sheet1中的值粘贴到相关表格中。 我告诉你我的草稿代码,我的想法是避免重复我的IF条件52次!我想我需要设置一个新变量(例如Dim 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

3 个答案:

答案 0 :(得分:1)

您可以根据所选文字驱动您正在使用的工作表:

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

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

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

答案 1 :(得分:0)

您可以使用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

答案 2 :(得分:0)

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

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