我希望你们中的一位能帮助我解决这个问题:
在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
答案 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