将对象框中的多行复制到剪贴板,作为 text/bullet 点 VBA
Copy multiple lines from object boxes to the clipboard as text/bullet points VBA
所有,
我有下面的代码,它在选择一个框时成功运行,它将相邻的文本复制到剪贴板。 (请看图片);
Sub OptionButton4_Click()
Dim clipb As New DataObject
Dim clipc As New DataObject
clipb.SetText "" & "Customer XYZ."
clipb.PutInClipboard
End Sub
因此客户 XYZ 将被复制到剪贴板。我会调整/修改代码,以便选择哪个框(可以将多个框复制到剪贴板)
例如,如果选择了客户 XYZ 和客户 YY,它将复制
- 客户 XYZ
- 客户YY
到剪贴板。等等
任何关于我如何调整/修改上述代码的建议都将不胜感激。
谢谢
首先你需要决定是否需要
- 选项框(一次只能select编辑一个框)或
- 复选框(可以一次select编辑多个复选框)
满足您的要求。
选项框(一次只能select编辑一个)
这 3 个选项按钮中的每一个都有一个唯一的名称来访问其值:
Worksheets("my-sheet-name").Shapes("Option Button 1").ControlFormat.Value
注意:按钮的名称可能与其caption/text不同。
因此,如果选项按钮是 select,则此值为 1
。您可以使用以下命令从该按钮读取 caption/text:
Worksheets("my-sheet-name").Shapes("Option Button 1").AlternativeText
所以我们最终得到这样的结果:
Dim clipb As New DataObject
Dim clipbText As String
Dim ws As Worksheet
Set ws = Worksheets("my-sheet-name")
If ws.Shapes("Option Button 1").ControlFormat.value = 1 Then
clipbText = "• " & ws.Shapes("Option Button 1").AlternativeText
ElseIf ws.Shapes("Option Button 2").ControlFormat.value = 1 Then
clipbText = "• " & ws.Shapes("Option Button 2").AlternativeText
ElseIf ws.Shapes("Option Button 3").ControlFormat.value = 1 Then
clipbText = "• " & ws.Shapes("Option Button 3").AlternativeText
End If
clipb.SetText clipbText
clipb.PutInClipboard
请注意,您必须调整 sheet 名称和选项按钮名称。
复选框(可以一次select编辑多个)
如果您需要同时 select 多个框,您需要复选框而不是选项框。
因此代码看起来会有点不同:
Dim clipb As New DataObject
Dim clipbText As String
Dim ws As Worksheet
Set ws = Worksheets("my-sheet-name")
If ws.Shapes("Check Box 1").ControlFormat.value = 1 Then
clipbText = clipbText & "• " & ws.Shapes("Check Box 1").AlternativeText & vbNewLine
End If
If ws.Shapes("Check Box 2").ControlFormat.value = 1 Then
clipbText = clipbText & "• " & ws.Shapes("Check Box 2").AlternativeText & vbNewLine
End If
If ws.Shapes("Check Box 3").ControlFormat.value = 1 Then
clipbText = clipbText & "• " & ws.Shapes("Check Box 3").AlternativeText & vbNewLine
End If
clipb.SetText clipbText
clipb.PutInClipboard
所有,
我有下面的代码,它在选择一个框时成功运行,它将相邻的文本复制到剪贴板。 (请看图片);
Sub OptionButton4_Click()
Dim clipb As New DataObject
Dim clipc As New DataObject
clipb.SetText "" & "Customer XYZ."
clipb.PutInClipboard
End Sub
因此客户 XYZ 将被复制到剪贴板。我会调整/修改代码,以便选择哪个框(可以将多个框复制到剪贴板)
例如,如果选择了客户 XYZ 和客户 YY,它将复制
- 客户 XYZ
- 客户YY
到剪贴板。等等
任何关于我如何调整/修改上述代码的建议都将不胜感激。
谢谢
首先你需要决定是否需要
- 选项框(一次只能select编辑一个框)或
- 复选框(可以一次select编辑多个复选框)
满足您的要求。
选项框(一次只能select编辑一个)
这 3 个选项按钮中的每一个都有一个唯一的名称来访问其值:
Worksheets("my-sheet-name").Shapes("Option Button 1").ControlFormat.Value
注意:按钮的名称可能与其caption/text不同。
因此,如果选项按钮是 select,则此值为 1
。您可以使用以下命令从该按钮读取 caption/text:
Worksheets("my-sheet-name").Shapes("Option Button 1").AlternativeText
所以我们最终得到这样的结果:
Dim clipb As New DataObject
Dim clipbText As String
Dim ws As Worksheet
Set ws = Worksheets("my-sheet-name")
If ws.Shapes("Option Button 1").ControlFormat.value = 1 Then
clipbText = "• " & ws.Shapes("Option Button 1").AlternativeText
ElseIf ws.Shapes("Option Button 2").ControlFormat.value = 1 Then
clipbText = "• " & ws.Shapes("Option Button 2").AlternativeText
ElseIf ws.Shapes("Option Button 3").ControlFormat.value = 1 Then
clipbText = "• " & ws.Shapes("Option Button 3").AlternativeText
End If
clipb.SetText clipbText
clipb.PutInClipboard
请注意,您必须调整 sheet 名称和选项按钮名称。
复选框(可以一次select编辑多个)
如果您需要同时 select 多个框,您需要复选框而不是选项框。
因此代码看起来会有点不同:
Dim clipb As New DataObject
Dim clipbText As String
Dim ws As Worksheet
Set ws = Worksheets("my-sheet-name")
If ws.Shapes("Check Box 1").ControlFormat.value = 1 Then
clipbText = clipbText & "• " & ws.Shapes("Check Box 1").AlternativeText & vbNewLine
End If
If ws.Shapes("Check Box 2").ControlFormat.value = 1 Then
clipbText = clipbText & "• " & ws.Shapes("Check Box 2").AlternativeText & vbNewLine
End If
If ws.Shapes("Check Box 3").ControlFormat.value = 1 Then
clipbText = clipbText & "• " & ws.Shapes("Check Box 3").AlternativeText & vbNewLine
End If
clipb.SetText clipbText
clipb.PutInClipboard