【发布时间】:2020-10-03 21:54:22
【问题描述】:
我想通过引用另一个单元格区域中的条件将一个区域中的正值单元格输入更改为负值。因此,例如单元格区域 A1:A10 包含值“B”或“S”。单元格区域 B1:B10 是输入数值的位置。根据已在相应单元格 A1:A10 中输入的数据,输入这些值时将其设为正值或负值。因此,在 B1 中输入任何正值或负值作为 1234 或 -1234,其中 A1 的值为“B”将导致 B1 显示 -1234。相反,如果在单元格 B1:B10 中输入任何正值或负值,并且 A 列中相应行的值为“S”,则 B 列中的值将始终为正值,无论原始输入是负值还是正值。
如果 A1:A10 范围内的特定单元格中没有与 B 列中的同一行对应的特定单元格,则应向用户显示一条消息,说“请在 A 列的相应行中输入一个值。
我是 VBA 编码的新手,到目前为止,我在查看其他帖子时已将以下代码拼凑在一起,但我不知道如何完成它才能成功工作。
非常感谢任何帮助。
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim A1 As Range
Set A1 = Range("A1:A10")
Dim A2 As Range
Set A2 = Range("B1:B10")
If Intersect(Target, A2) Is Nothing Then Exit Sub
If IsText(Target, A1) Then
If A1 = "S" Then
Application.EnableEvents = False
B1 = -B1
Application.EnableEvents = True
End If
End Sub
【问题讨论】:
-
A1是整个单元格范围,因此比较A1 = "S"没有意义。 10 个元素的范围不是字符串。如果您想查找,请查看Range.Find(),如果"S"在范围内。或者,遍历该范围内的单元格,依次将每个单元格与"S"进行比较。此外,您的IsText没有意义。一方面,这是一个工作表函数,而不是 VBA 函数。另一方面,它需要一个参数,而不是两个。
标签: excel vba negative-number