复制单元格并将内容粘贴到文本框中
Copy cells and paste contents into a text box
我有 2 个工作表 - 'Venn Diagram Helper' 由一系列命名的数据范围组成 - 'Venn Diagram' 在维恩图图像上有许多文本框。
我在单元格 C5 的维恩图工作表上有一个下拉列表,我希望使用它来触发将特定范围复制并粘贴到特定文本框中。
我希望用户从下拉列表中选择 select - 选项是 'End of Phase 1'、'End of Phase 2' 或 'End of Year'要复制并粘贴到带有“;”的文本框中的适当命名范围分开每个名字。
我已经开始编写代码,但是,由于我是 VBA 的新手,并且我一直在尝试改编我在网上找到的示例,所以它不起作用。你们能抽出时间帮我解决 'reading' 文本框吗?我相信,一旦我有了模型代码,我将能够调整它来填充剩余的文本框。
这是我目前拥有的:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("C5")) Is Nothing Then
Dim Helper As Worksheet
Dim Venn As Worksheet
Dim EoP1Rdg As Range
Dim EoP2Rdg As Range
Dim EoYRdg As Range
Dim Rdg_TxtBox As OLEObject
Set Helper = ThisWorkbook.Worksheets("RWM Venn Diagram Helper")
Set Venn = ThisWorkbook.Worksheets("RWM Venn Diagram")
Set Rdg_TxtBox = Venn.OLEObjects("Rdg_TxtBox")
With Helper
Set EoP1Rdg = .Range("AQ4:AQ103")
Set EoP2Rdg = .Range("AX4:AX103")
Set EoYRdg = .Range("BE4:BE103")
End With
If Intersect(Target, Range("C5")) = "End of Phase 1" Then
With Helper
.Select ("EoP1Rdg")
.Copy
End With
With Venn
.Select Rdg_TxtBox
.Paste
End With
End If
End If
End Sub
提前致谢!
编辑:25/9 下午 5 点
我已将数据验证下拉列表更改为组合框,如下所示。我已经重写了代码,但它仍然无法正常工作(没有文本被复制到文本框中)。谁能给我进一步的建议?
Sub DropDown5_Change()
Dim Helper As Worksheet
Dim Venn As Worksheet
Dim EoP1Rdg As Range
Set Helper = Sheets("RWM Venn Diagram Helper")
Set Venn = Sheets("RWM Venn Diagram")
Set EoP1Rdg = Range("EoP1Rdg")
If DropDown5 = "End of Phase 1" Then
Sheets("RWM Venn Diagram Helper").Select
Range("AQ4:AQ103").Select
Selection.Copy
Sheets("RWM Venn Diagram").Select
ActiveSheet.Shapes.Range(Array("TextBox 7")).Select
Application.CutCopyMode = False
Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = _
"Name 15" & Chr(13) & "Name 16"
End If
End Sub
非常感谢
我猜您正在使用“数据”选项卡->“数据验证”中的单元内下拉列表。您已经选择了一个 Worksheet 事件,每次您单击一个单元格或选择一组单元格(一个范围)时都会触发该事件。在“数据验证”下拉列表中选择一个值时不会触发该事件。
您想转到“开发人员”选项卡,然后单击“插入”按钮,然后插入一个组合框。见下图:
组合框是“表单控件”部分下第一行中的第二个按钮。在您更加熟练地使用 VBA.
之前,您需要避免使用 Active X 控件
您应该查看 Microsoft 的 Overview of forms, Form controls, and ActiveX controls on a worksheet。
拖放 ComboBox 并调整其大小后,您可以单击 "Insert" 右侧按钮栏上的 "View Code"。这将打开 VBE 代码编辑器,这是您要编写处理更改事件的代码的地方。
我没有你的练习册,所以我无法向你展示可能需要更改的所有内容。
在下面的代码中,我试图展示录制宏和在 VBA 中编程之间的区别。最大的变化是 End If
之前的语句,您将文本字符串分配给 Shape。
If DropDown5 = "End of Phase 1" Then
'This piece of code shows you clicking on the RWM Venn Diagram Helper sheet
'Which if you're writing the code, you need to do the following
'Declare and set an object variable to the Workbook
Dim wb As Workbook
Set wb = ThisWorkbook
'Declare and set an object variable to the Helper worksheet
'in this case source (srcWS)
Dim srcWS As Worksheet
Set srcWS = wb.Sheets("RWM Venn Diagram Helper")
'Declare and set an object variable to the Digram worksheet
'in this case target (tarWS)
Dim tarWS As Worksheet
Set tarWS = wb.Sheets("RWM Venn Diagram")
'Sheets("RWM Venn Diagram Helper").Select
srcWS.Activate
Range("AQ4:AQ103").Select
Selection.Copy
'Sheets("RWM Venn Diagram").Select
tarWS.Activate
'ActiveSheet.Shapes.Range(Array("TextBox 7")).Select
tarWS.Shapes.Range(Array("TextBox 7")).Select
'This statement is used by the macro generator to clear the
'clip board when you complete the paste operation
'Application.CutCopyMode = False
'I haven't seen any paste function at this point.
'Change this to the statement that follows
'Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = _
"Name 15" & Chr(13) & "Name 16"
'This assumes that the Venn Diagram is on target sheet
'That it is shape 1 - if there's only one shape, probably
tarWS.Shapes(1).TextFrame2.TextRange.Text = "Name 15" & Chr(13) & "Name 16"
End If
我有 2 个工作表 - 'Venn Diagram Helper' 由一系列命名的数据范围组成 - 'Venn Diagram' 在维恩图图像上有许多文本框。
我在单元格 C5 的维恩图工作表上有一个下拉列表,我希望使用它来触发将特定范围复制并粘贴到特定文本框中。
我希望用户从下拉列表中选择 select - 选项是 'End of Phase 1'、'End of Phase 2' 或 'End of Year'要复制并粘贴到带有“;”的文本框中的适当命名范围分开每个名字。
我已经开始编写代码,但是,由于我是 VBA 的新手,并且我一直在尝试改编我在网上找到的示例,所以它不起作用。你们能抽出时间帮我解决 'reading' 文本框吗?我相信,一旦我有了模型代码,我将能够调整它来填充剩余的文本框。
这是我目前拥有的:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("C5")) Is Nothing Then
Dim Helper As Worksheet
Dim Venn As Worksheet
Dim EoP1Rdg As Range
Dim EoP2Rdg As Range
Dim EoYRdg As Range
Dim Rdg_TxtBox As OLEObject
Set Helper = ThisWorkbook.Worksheets("RWM Venn Diagram Helper")
Set Venn = ThisWorkbook.Worksheets("RWM Venn Diagram")
Set Rdg_TxtBox = Venn.OLEObjects("Rdg_TxtBox")
With Helper
Set EoP1Rdg = .Range("AQ4:AQ103")
Set EoP2Rdg = .Range("AX4:AX103")
Set EoYRdg = .Range("BE4:BE103")
End With
If Intersect(Target, Range("C5")) = "End of Phase 1" Then
With Helper
.Select ("EoP1Rdg")
.Copy
End With
With Venn
.Select Rdg_TxtBox
.Paste
End With
End If
End If
End Sub
提前致谢!
编辑:25/9 下午 5 点
我已将数据验证下拉列表更改为组合框,如下所示。我已经重写了代码,但它仍然无法正常工作(没有文本被复制到文本框中)。谁能给我进一步的建议?
Sub DropDown5_Change()
Dim Helper As Worksheet
Dim Venn As Worksheet
Dim EoP1Rdg As Range
Set Helper = Sheets("RWM Venn Diagram Helper")
Set Venn = Sheets("RWM Venn Diagram")
Set EoP1Rdg = Range("EoP1Rdg")
If DropDown5 = "End of Phase 1" Then
Sheets("RWM Venn Diagram Helper").Select
Range("AQ4:AQ103").Select
Selection.Copy
Sheets("RWM Venn Diagram").Select
ActiveSheet.Shapes.Range(Array("TextBox 7")).Select
Application.CutCopyMode = False
Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = _
"Name 15" & Chr(13) & "Name 16"
End If
End Sub
非常感谢
我猜您正在使用“数据”选项卡->“数据验证”中的单元内下拉列表。您已经选择了一个 Worksheet 事件,每次您单击一个单元格或选择一组单元格(一个范围)时都会触发该事件。在“数据验证”下拉列表中选择一个值时不会触发该事件。
您想转到“开发人员”选项卡,然后单击“插入”按钮,然后插入一个组合框。见下图:
组合框是“表单控件”部分下第一行中的第二个按钮。在您更加熟练地使用 VBA.
之前,您需要避免使用 Active X 控件您应该查看 Microsoft 的 Overview of forms, Form controls, and ActiveX controls on a worksheet。
拖放 ComboBox 并调整其大小后,您可以单击 "Insert" 右侧按钮栏上的 "View Code"。这将打开 VBE 代码编辑器,这是您要编写处理更改事件的代码的地方。
我没有你的练习册,所以我无法向你展示可能需要更改的所有内容。
在下面的代码中,我试图展示录制宏和在 VBA 中编程之间的区别。最大的变化是 End If
之前的语句,您将文本字符串分配给 Shape。
If DropDown5 = "End of Phase 1" Then
'This piece of code shows you clicking on the RWM Venn Diagram Helper sheet
'Which if you're writing the code, you need to do the following
'Declare and set an object variable to the Workbook
Dim wb As Workbook
Set wb = ThisWorkbook
'Declare and set an object variable to the Helper worksheet
'in this case source (srcWS)
Dim srcWS As Worksheet
Set srcWS = wb.Sheets("RWM Venn Diagram Helper")
'Declare and set an object variable to the Digram worksheet
'in this case target (tarWS)
Dim tarWS As Worksheet
Set tarWS = wb.Sheets("RWM Venn Diagram")
'Sheets("RWM Venn Diagram Helper").Select
srcWS.Activate
Range("AQ4:AQ103").Select
Selection.Copy
'Sheets("RWM Venn Diagram").Select
tarWS.Activate
'ActiveSheet.Shapes.Range(Array("TextBox 7")).Select
tarWS.Shapes.Range(Array("TextBox 7")).Select
'This statement is used by the macro generator to clear the
'clip board when you complete the paste operation
'Application.CutCopyMode = False
'I haven't seen any paste function at this point.
'Change this to the statement that follows
'Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = _
"Name 15" & Chr(13) & "Name 16"
'This assumes that the Venn Diagram is on target sheet
'That it is shape 1 - if there's only one shape, probably
tarWS.Shapes(1).TextFrame2.TextRange.Text = "Name 15" & Chr(13) & "Name 16"
End If