Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 允许一行中只有一个单元格有值_Excel_Vba - Fatal编程技术网

Excel 允许一行中只有一个单元格有值

Excel 允许一行中只有一个单元格有值,excel,vba,Excel,Vba,假设我在Excel中使用单元格A1到C1,每个单元格代表三个单独的选项,用户应在其中输入1或0。值1接受该选项,而0拒绝该选项。现在,如果我希望一次只选择其中一个选项;是否可以删除以前输入的任何值 例如: 如果用户首先选择单元格A1中的选项,则该选项将如下所示: A1=1 B1=0 C1=0 如果用户随后决定切换到单元格B1中的选项,而不首先手动删除A1中的值,则该选项将如下所示: A1=1 B1=1 C1=0 是否有一种方法可以自动删除先前选择的选项,以便一旦用户从A1中的选项切换到例如B1中

假设我在Excel中使用单元格
A1
C1
,每个单元格代表三个单独的选项,用户应在其中输入1或0。值1接受该选项,而0拒绝该选项。现在,如果我希望一次只选择其中一个选项;是否可以删除以前输入的任何值

例如:

如果用户首先选择单元格
A1
中的选项,则该选项将如下所示:

A1=1 B1=0 C1=0

如果用户随后决定切换到单元格
B1
中的选项,而不首先手动删除
A1
中的值,则该选项将如下所示:

A1=1 B1=1 C1=0

是否有一种方法可以自动删除先前选择的选项,以便一旦用户从
A1
中的选项切换到例如
B1
中,它看起来如下所示:

A1=0 B1=1 C1=0

谢谢

试试这段代码

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row <> 1 Or Target.Column > 3 Then Exit Sub
If Target.Value = 1 Then
  Application.EnableEvents = False
  Range("A1:C1").Value = 0
  Target = 1
  Application.EnableEvents = True
End If
End Sub
Private子工作表\u更改(ByVal目标作为范围)
如果Target.Row 1或Target.Column>3,则退出Sub
如果Target.Value=1,则
Application.EnableEvents=False
范围(“A1:C1”)。值=0
目标=1
Application.EnableEvents=True
如果结束
端接头
试试这段代码

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row <> 1 Or Target.Column > 3 Then Exit Sub
If Target.Value = 1 Then
  Application.EnableEvents = False
  Range("A1:C1").Value = 0
  Target = 1
  Application.EnableEvents = True
End If
End Sub
Private子工作表\u更改(ByVal目标作为范围)
如果Target.Row 1或Target.Column>3,则退出Sub
如果Target.Value=1,则
Application.EnableEvents=False
范围(“A1:C1”)。值=0
目标=1
Application.EnableEvents=True
如果结束
端接头
用于两行或更多行

Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("A1:C2")) Is Nothing Then Exit Sub
    r = Target.Row
    If Target.Value = 1 Then
      Application.EnableEvents = False
      Range("A" & r & ":C" & r).Value = 0
      Target = 1
      Application.EnableEvents = True
    End If

End Sub
2行或以上

Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("A1:C2")) Is Nothing Then Exit Sub
    r = Target.Row
    If Target.Value = 1 Then
      Application.EnableEvents = False
      Range("A" & r & ":C" & r).Value = 0
      Target = 1
      Application.EnableEvents = True
    End If

End Sub

对看看这件事,是的。看一看这个活动。谢谢,这很有效!在不影响第1行中的选项的情况下,是否也可以将代码应用于更多行?例如,如果我在A2到C2中有另一组三个选项,并且我希望在此范围内选择的选项独立于所选择的A1到C1?谢谢,这非常有效!在不影响第1行中的选项的情况下,是否也可以将代码应用于更多行?例如,如果我在A2到C2中有另一组三个选项,并且我希望在此范围内选择的选项独立于所选择的A1到C1?