0

选择 Excel 单元格的一部分(未完成单元格)并通过运行宏将其转换为大写。

我有一段代码可以将选定的单元格或选定的单元格范围转换为大写,但我的要求是,选择将是单元格的一部分(子字符串),如果我执行宏,它应该转换为大写。

例如,我有一个值为“感谢帮助”的单元格

现在我的代码是:

Convert_To_Upper()
Selection.value = UCase(Selection.Value)
end Sub

如果用户选择单元格并运行宏,单元格将更改为“感谢帮助”

现在我的要求是..

如果用户从单元格中仅选择“帮助”并运行宏单元格,则应将其更改为“感谢帮助”

有可能实现这一目标吗?

4

3 回答 3

1

简而言之:不,它不能完成。

一个非常丑陋的破解方法如下:

让用户选择文本并按 CTRL+C 将其复制到剪贴板,然后运行宏。

将字符串从剪贴板拉到变量中(您必须添加 MSForms 参考)

'Clipboard -> variable S
Dim DataObj As New MSForms.DataObject
Dim S As String
DataObj.GetFromClipboard
S = DataObj.GetText

使用某种差异或正则表达式从单元格中的文本中删除它,将其转换为大写并将其与单元格连接。

它可以完成,但这并不是最佳实践......

于 2013-10-11T13:59:39.843 回答
0

尝试这个:

Private Sub test()

    ' n is the number of letter you want to have to upper case
    n = 2

    Cells(1, 1) = UCase(Left(Cells(1, 1), n)) + Mid(Cells(1, 1), n + 1)

End Sub

UCase(string) = 将字符串转换为大写

Left(string, int) = 从左边开始取字符串的第一个 int 字符

Cells(x,y) = 返回位置 (x,y) 的 Cell

mid(string, int) = 返回从 int 位置的字符开始的字符串内容

于 2013-10-11T13:03:05.347 回答
0

您可以在具有 MID 的单元格中选择部分字符串

Dim var As String
var = Mid(ActiveCell.Text, 1, 10)

中(字符串,开始,你想要的字符数)

编辑:

因此,用户需要选择要更改的字符数:

'Throw up a popup box
numbVar= InputBox(Prompt:="Please input how many characters to turn into UPPER", _
          Title:="Anything goes here", Default:="Enter number here")

' Exit if cancel is pressed
If numbVar= "" Then Exit Sub

然后放 numbVar 而不是 10

于 2013-10-11T13:03:18.690 回答