gpt4 book ai didi

vba - 如果行中其他列不为空,则填充该列

转载 作者:行者123 更新时间:2023-12-02 10:42:53 27 4
gpt4 key购买 nike

使用:

  1. Microsoft Office Excel 启用宏的工作表 2007
  2. 微软 Visual Basic

我一直在寻找解决问题的方法,但找不到解决此问题的关键。

案例

在工作表中,我需要根据它们都不为空(已填充)的条件,在指定范围的列之后自动将一个值(静态时间戳)插入到列中。

目标示例

考虑到将值逐行插入行的顺序,当列 A:C 范围内的值被填充时,我想要列 D (指定范围后的下一个)进行更新。

ColumnA ColumnB ColumnC AutoInsert
filled filled filled 2016-01-11 20:57
filled filled
filled
filled filled filled 2016-01-11 20:58

我有什么?

现在,当我将值插入A列时,当前时间戳出现在B列中。

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("A:A")) Is Nothing Then
With Target(1, 2)
.Value = Now
End With
End If
End Sub

当前结果:

ColumnA AutoInsert
value 2016-01-11 21:06
value 2016-01-11 21:06
value 2016-01-11 21:07

我需要什么?

我需要某种方法来检查行内指定范围的列,而不仅仅是如上所示的第一列(在我得到了什么?部分)。

我不确定是否需要除 Intersect 之外的其他方法或某种循环。我尝试过使用 Target(x, y)Range("A:C") 进行实验,但行为与预期不同,并且似乎适用于每个活跃细胞。

最佳答案

试试这个:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("A:C")) Is Nothing And WorksheetFunction.CountBlank(Range("A" & Target.Row & ":C" & Target.Row)) = 0 Then
With Me.Cells(Target.Row, 4)
Application.EnableEvents = False
.value = Now
End With
End If
Application.EnableEvents = True
End Sub

Me 指的是工作表。它有效,因为这是一个工作表事件。如果这是在模块中,则需要是ActiveSheet.Cells 是一个范围。它使用这种格式Cells(Row,Column)。整个事情可以重写为 Me.Range("D"& Target.row)

Target 是一个范围,执行 Target(row,column)Target.Cells(row,column) 的简写,您可以将 Target(1 ,4)Target(1,1) 将引用其自身,或单元格区域中的左上角单元格。它不受范围限制,而是使用左上角单元格作为起点。

关于vba - 如果行中其他列不为空,则填充该列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34730114/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com