选择Excel单元格(非完整单元格)的一部分,并通过运行宏将其转换为大写。
我有一段代码可以将选定的单元格或选定的单元格范围转换为大写,但我的要求是,选择将是单元格的一部分(子字符串),如果我执行它应该转换为大写宏。
例如,我有一个值为“感谢帮助”的单元格
现在我的代码是:
Convert_To_Upper()
Selection.value = UCase(Selection.Value)
end Sub
如果用户选择单元格并运行宏,则单元格将更改为“感谢帮助”
现在我的要求是......
如果用户仅从单元格中选择“帮助”并运行宏单元格,则应更改为“感谢您的帮助”
有可能实现这个目标吗?
答案 0 :(得分:1)
简而言之:不,它无法完成。
非常丑陋的黑客到种类修复它如下:
让用户选择文本并按CTRL + C将其复制到剪贴板,然后运行宏。
将字符串从剪贴板拖到变量(您必须添加MSForms参考)
'Clipboard -> variable S
Dim DataObj As New MSForms.DataObject
Dim S As String
DataObj.GetFromClipboard
S = DataObj.GetText
使用某种diff或regex从单元格中的文本中删除它,将其转换为upper并将其与单元格连接。
它完成了它,但它不是最佳实践......
答案 1 :(得分: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)的单元格
Mid(string,int)=返回从位置int
中的字符开始的字符串的内容答案 2 :(得分: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