0

我有几个下拉列表。它们包含一个简单的 Y/N 组合。

我有几个外部电子表格,我必须从中复制和粘贴数据。但是,外部电子表格中的 Y/N 列可能包含小写的 y/n。或是/否文本。

如果文本值为 y/n 或 YES/NO,我希望它符合列表值 Y/N

我尝试向单元格本身添加公式,但出现循环引用错误。

然后我尝试了一个 VBA 脚本:

       Private Sub Worksheet_Change(ByVal Target As Range)

    On Error GoTo ErrorHandler:
    Dim cell As Range

              If Target.Column = 9 Then


                    If (UCase(ActiveCell.Value) = "YES") Then
                       ActiveCell.Value = "Y"

                    ElseIf UCase(ActiveCell.Value) = "NO" Then
                        ActiveCell.Value = "N"

                    ElseIf UCase(Target.Value) = Empty Then
                        ActiveCell.Value = "N"

                    Else
                        ActiveCell.Value = UCase(ActiveCell.Value)
                    End If

               End If    

Exit Sub

    ErrorHandler:
    MsgBox "An error occured -  error  " & Err.Number & ": " & Err.Description

    End Sub

这几乎可以将值从 YES 更改为 Y 等并检查大写,但它会使 excel 崩溃。

4

1 回答 1

0

好的,vbs 脚本似乎是要走的路。一旦我做了那个excel停止崩溃并且我得到了我正在寻找的结果,我必须将Application.EnableEvents添加到脚本中。

Private Sub Worksheet_Change(ByVal Target As Range)

On Error GoTo ErrorHandler:
Dim cell As Range

     If Target.Column = 9 Then
        Application.EnableEvents = False

                   For Each cell In Target

                            If (UCase(cell.Value) = "YES") Then
                               cell.Value = "Y"

                            ElseIf UCase(cell.Value) = "NO" Then
                                cell.Value = "N"

                            ElseIf UCase(cell.Value) = Empty Then
                                cell.Value = "N"

                            Else
                                cell.Value = UCase(cell.Value)
                            End If

                   Next cell

                   Application.EnableEvents = True

            End If


Exit Sub

ErrorHandler:
MsgBox "An error occured -  error  " & Err.Number & ": " & Err.Description
Application.EnableEvents = True
End Sub
于 2013-08-16T18:24:59.240 回答