Vba 使用excel程序返回特定值

Vba 使用excel程序返回特定值,vba,excel,Vba,Excel,我有一个电子表格,将用于调查 我如何使单元格仅返回“x”,而不管调查人员键入什么 例如,如果我在单元格中写一个“w”,它应该变成一个“x” 当我保护工作簿或工作表时,我认为有一个选择。因为我可以从另一个电子表格(具有此功能)中看出,它只有在工作簿受到保护的情况下才能工作 我试着用谷歌搜索,但似乎我不知道找到答案的正确关键词 此外,我还发现了一组我处理过的Vba代码,但我不确定这是否正确。我不想附加代码,因为我不想混淆这里的任何响应 感谢您提供的帮助。将此代码放入工作表模块并进行测试,当您更改a(

我有一个电子表格,将用于调查

我如何使单元格仅返回“x”,而不管调查人员键入什么

例如,如果我在单元格中写一个“w”,它应该变成一个“x”

当我保护工作簿或工作表时,我认为有一个选择。因为我可以从另一个电子表格(具有此功能)中看出,它只有在工作簿受到保护的情况下才能工作

我试着用谷歌搜索,但似乎我不知道找到答案的正确关键词

此外,我还发现了一组我处理过的Vba代码,但我不确定这是否正确。我不想附加代码,因为我不想混淆这里的任何响应


感谢您提供的帮助。

将此代码放入工作表模块并进行测试,当您更改a(1)列中的单元格时,它将激活

工作表模块在哪里

复制并粘贴代码

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Intersect(Target, Range("A1,B1,C1,A4,B4,C4")) Is Nothing Then Exit Sub
    Application.EnableEvents = 0
    If Target <> "" Then Target = "X"
    Application.EnableEvents = 1
End Sub
Private子工作表\u更改(ByVal目标作为范围)
如果Target.Count>1,则退出Sub
如果Intersect(目标、范围(“A1、B1、C1、A4、B4、C4”)为空,则退出Sub
Application.EnableEvents=0
如果目标为“”,则目标为=“X”
Application.EnableEvents=1
端接头
这应该适合您(只需将范围更改为您需要的范围):


哦,是的,这段代码应该放在工作表模块中-就像Dave向你展示的那样

不完全是你想要的,但这听起来像是一份工作。这正是我想要的。问题,我应该如何将此代码用于特定单元格?现在它自动适用于一个列。我知道了如何在这里更改列:
如果Target.column=1,那么
但是似乎我无法选择设置特定的单元格。
如果不是Application.Intersect(Target,Me.Range(“A1,A3,B3,B5,C1,C6”))然后
此字符串有一个错误91:对象变量或块变量未设置,我将尝试调试它。效果非常好!万分感谢!如果你不介意的话,我会把这个话题发给我的一些同事,这样他们也可以使用这个代码。非常感谢!除了Dave的,我还将使用这段代码。我有一个非常大的电子表格,它们都会派上用场
Set LR=Range(“A1:b3”)
LR变量未定义,很遗憾,它返回了一个错误。@RobinWiman
Dim LR,单元格为Range
-此行声明了变量。里面多了一个逗号,很抱歉。
Option Explicit
Sub worksheet_Change(ByVal Target As Range)

   On Error GoTo errorbutler 'error handler - important to have this in case your macro does a booboo
Application.Calculation = xlCalculationManual 'turn off automatic calculation to speed up the macro
Application.EnableEvents = False 'turn off events in order to prevent an endless loop
Dim LR, cell As Range 'Declare your variables
Set LR = Range("A1:b3") ' Select range of cells this macro would apply to
    For Each cell In Target 'Loops through the cells that user have changed
        If Union(cell, LR).Address = LR.Address Then 'Checks if the changed cell is part of your range
           cell.Value="x" 'changes the value of that cell to x
        End if
    Next cell

Errorexit: 'part of error handling procedure

Application.EnableEvents = True 'Turn autocalc back on
Application.Calculation = xlCalculationAutomatic 'turn events back on

Exit Sub

Errorbutler:          'error handling procedure
 Debug.Print Err.Number & vbNewLine & Err.Description
 Resume Errorexit

End Sub