首页 > 解决方案 > 选择范围内的单元格将值输入到另一张表中的单元格中

问题描述

在下面我开始工作的代码中,当我在一个范围内选择一个单元格时,会弹出一个输入框,我的输入被发送到我单击但在工作表 2 中的同一个单元格。我想更进一步。我想完全绕过输入框,只发送值 F,我只想在单击单元格 b2 后执行此操作。所以单元格 b2 必须作为某种开关工作(也许在其上放置一个不可见的形状以充当按钮?)

示例 1:工作表 1,选择单元格 B2 打开宏,选择范围内的单元格示例:D10 将字母 F 输入工作表 2 上的单元格 D10,选择单元格 B2 关闭宏,所以如果我选择单元格 D10 或该范围内的任何单元格,则没有将不再发生。如果在宏打开时再次单击单元格,它还需要从 D10 中删除值 F。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     Dim xRtn As Variant
     If Selection.Count = 1 Then
         If Not Intersect(Target, Range("D9:AS20")) Is Nothing Then
             xRtn = Application.InputBox("Insert your value please")
             Sheets("2020").Range(Target.Address).Value = xRtn

         End If
     End If
End Sub

标签: excelvba

解决方案


未经测试。我不确定我是否了解您的所有目标。

我认为,如果您在工作表中添加一个B2名为“复选框 1”的复选框(调整大小并将其存储在任何您想要的位置;也许在单元格中),那么下面的代码应该可以工作。

添加复选框的一种方法可能是:(Excel > Developer > Insert > Check Box (Form Control)取决于您的 Excel 版本)。如果Developer选项卡不可见,您可能需要先显示它

Option Explicit

Private Function GetCheckBox() As Shape
    Set GetCheckBox = Me.Shapes("Check Box 1")
End Function

Private Function IsCheckBoxTicked() As Boolean
    IsCheckBoxTicked = (GetCheckBox.OLEFormat.Object.Value = 1)
End Function

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.CountLarge <> 1 Then Exit Sub
    If Intersect(Target, Me.Range("D9:AS20")) Is Nothing Then Exit Sub

    If IsCheckBoxTicked() Then
        With ThisWorkbook.Worksheets("2020").Range(Target.Address)
            .Value = IIf(.Value = "F", Empty, "F")
        End With
    End If
End Sub

推荐阅读