2015-02-06 68 views
0

我希望你們中的一個可以幫助我解決這個問題: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 

回答

1

您可以直接開車送你與基於所選文本工作表:

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

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 
+0

喜史蒂夫,感謝您的幫助,但下面的代碼不起作用如果cmbx.Text =(「SEM」 &&我)然後 – Dugaet 2015-02-08 09:34:08

0

您可以粘貼特殊在很多工作表沒有一個循環。下面是目的地的例子:

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