-2

我试图强制 Excel 中特定范围的单元格自动大写特定短语。

例如:我们通常输入飞机的类型,如萨博、引文等。我有一个VB脚本来强制正确案例,但也有其他时间我们缩写如DA20、CJ3等。

我想要(如果这甚至可能的话)是长名称(如果使用)保持正确的大小写但是如果他们输入特定的短语,我希望它忽略脚本并允许它作为输入或自动大写前两个人物。

钻石或 DA20 是可以接受的

引用或 CJ3 是可以接受的

我不想要的是懒惰打字的人

引文或 cj3

钻石或da20

这可能吗?如果有必要的话,我愿意创建一个所有缩写的白名单,这是允许的。

我希望某种“IF”语句可能适用于 VBA 脚本,但我不确定如何编写它。

4

1 回答 1

0

您可以使用 Worksheet Change 事件触发某些范围的自动更新。这要求用户部分输入所需的输入(他们需要退出单元格才能触发)并将自动填充剩余部分。例如:

Public boolChanging As Boolean

Private Sub Worksheet_Change(ByVal rng As Range)
    Dim strAutoFinish As String, iStartPos As Integer

    'Exit unless updates occur when and where you want
    If boolChanging Or rng.Row < 1 Or rng.Column <> 1 Or rng.Columns.Count > 1 Or rng.Rows.Count > 1 Then Exit Sub
    If rng = "" Then Exit Sub 'This needs to be here in case multiple cells are editted

    boolChanging = True
    strAutoFinish = ";DA20;Diamond;CJ3;Citation;..."
    iStartPos = InStr(UCase(strAutoFinish), ";" & UCase(rng))

    If iStartPos > 0 Then
        rng = Mid(strAutoFinish, iStartPos + 1, InStr(iStartPos + 1, strAutoFinish, ";") - iStartPos - 1)
    Else 'Leave this part if you want it to delete invalid entries
        rng = ""
    End If

    boolChanging = False
End Sub
于 2013-09-03T11:58:40.383 回答