VBA回路粘贴值另一片

VBA回路粘贴值另一片

问题描述:

我希望你们中的一个可以帮助我解决这个问题:VBA回路粘贴值另一片

在Sheet1中,我有一个从“SEM1”到“Sem52”名称的组合框。这些名称也对应于图纸名称(如“Sem1”,“Sem2”,...)。根据组合框中选择的文本,我想将Sheet1中的值粘贴到相关表单中。 我让你在我的起草代码和想法将避免重复我的IF条件52次!我想我需要设置一个新的变量(例如Dim i as integer,对于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 

您可以直接开车送你与基于所选文本工作表:

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

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

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

+0

杰森您好,感谢这个想法,但它并没有真正的工作。代码中需要调整的两个棘手部分是(i)如果cmbx.Text =“Sem1”Then和(ii)Sheets(“Sem1”)。在combobx中的选择必须触发选择相关工作表,我可以在其中粘贴一些数据。再次感谢您的建议 – Dugaet 2015-02-08 10:30:58

+0

@Dugaet - 没有问题 - 然后 - 它实际上更容易做到这一点。查看更新后的答案。 – 2015-02-08 13:52:14

+0

谢谢贾森它完美的作品:) – Dugaet 2015-02-09 19:16:10

您可以使用一个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 
+0

喜史蒂夫,感谢您的帮助,但下面的代码不起作用如果cmbx.Text =(“SEM” &&我)然后 – Dugaet 2015-02-08 09:34:08

您可以粘贴特殊在很多工作表没有一个循环。下面是目的地的例子:

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

事情是,我只想复制用户选择的工作表中的值。如果他选择了Sem1,那么该值将被复制到表格Sem1中。 – Dugaet 2015-02-08 09:44:19