【问题标题】:VBA: How to use vbProperCase to capitalize the first letter but keep every other letter intact?VBA:如何使用 vbProperCase 将第一个字母大写但保持其他所有字母不变?
【发布时间】:2019-11-30 14:40:34
【问题描述】:

我在用户窗体中有一个文本框,它连接到工作表中包含数据的列,然后当在文本框中输入内容时返回列表框中的项目。 我只想立即在文本框中输入内容,而不是在开头使用 Shift+字母来大写第一个字母,这就是我使用 vbProperCase 的原因。 问题是,它做了它的工作,它将第一个字母大写并保持所有其他字母小,但是我有一些单词在文本本身中也有大写字母,例如。空调、电脑等 所以我的问题是,我怎样才能实现只有第一个字母大写,但保持其他所有字母完整,它是如何写在工作表中的?

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    StrConv 没有设置仅更改某些字母、仅更改全部或不更改大写字母或您尝试过的正确(加上您在这里不感兴趣的转换)(Documentation),但是您自己很容易做到。

    例如,当输入到工作表的代码中时,以下内容将首字母大写,其余部分保持原样:

    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim text As String
        text = Target.Value
        Target.Value = UCase(Left(text, 1)) + Mid(text, 2, Len(text))
    End Sub
    

    您可以根据具体情况在表单验证或连接单元格上使用相同的原理。

    【讨论】:

    • StrConv 实际上确实有适当的大小写选项...techonthenet.com/excel/formulas/strconv.php
    • 完全正确,这不是 OP 所需要的,因为它改变了现有的大小写,而不仅仅是第一个字母
    • 有人提到控件链接到一个单元格。当控件的值反映在单元格上时,会触发Worksheet_Change事件并调整文本。
    • 谢谢,它解决了我的问题。 :-) 这是我使用的代码。 Private Sub ComboBox1_Change() Dim text As String text = TextBox1.Value TextBox1.Value = UCase(Left(text, 1)) + Mid(text, 2, Len(text)) End Sub
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    • 2019-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-28
    相关资源
    最近更新 更多