excel - 选择范围内的单元格将值输入到另一张表中的单元格中
问题描述
在下面我开始工作的代码中,当我在一个范围内选择一个单元格时,会弹出一个输入框,我的输入被发送到我单击但在工作表 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
解决方案
未经测试。我不确定我是否了解您的所有目标。
我认为,如果您在工作表中添加一个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
推荐阅读
- c# - 在 vscode 中调试 C# 源代码生成器
- flutter - 一个无限的水平翻转动画 ImageWidget Flutter
- python - Django - 如何管理许多消息?
- openid-connect - 用于搜索用户的 OpenID Connect 标准
- swift - 保存 UITableView Button 的状态
- powershell - Select-String 仅显示不匹配整个对象的行
- javascript - React onClick 性能和重新渲染问题
- vb.net - 无法在 .NET 5.0 中使用 ToolStripContainer
- testing - 测试 Nestjs 框架上下文中的钩子是什么?
- javascript - javascript 如何使 split() 不区分大小写