0

我目前有一个工作表,每天都有多人填写。用户填写 4 列:C、E、H 和 J(所有数值,每月每天一行。)

用户每天都填写C、E和H,但是很多天J列没有值。如果用户不输入任何内容,我需要将J中的值设置为0 . 当然,让用户输入 0 会更容易,但我在这里与一群复杂的人一起工作。

无论如何,我想使用一个在用户单击保存按钮时自动运行的宏(当然在它实际保存之前),并让它执行以下操作:(我更熟悉 php,所以我只是输入这个知道我有多熟悉 - 我确定我的语法不正确)

Foreach Row
  If "column A" != "" {
   If "column J" != "" {
    //Everything is good, continue on...
   } else {
    CurrentRow.ColumnJ.value == 0
   }//Value has been set - continue loop
  }
  //column A is blank, this day hasn't come yet - quit looping here
End Foreach

如果有人可以帮助我解决这个问题,我将不胜感激。经过一些研究,这是我迄今为止提出的,现在我被困住了……</p>

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
 Dim curCell As Range
 'Labor Flow Sheet'.Select

 For Each curCell in Range( ???? )
  If curCell.Value = "" Then
   ???????
  End If
 Next curCell
End Sub

提前致谢!

4

2 回答 2

1

有关查找正确范围的信息,请参阅此链接,至于 If 语句中的问号,您需要输入

curCell.Value = 0
于 2013-08-23T14:17:55.323 回答
0

对于你陈述中的问号

For Each curCell in Range( ???? )

解决方案 1:
要查找您正在使用的完整范围,您需要使用每天填写的列。您提到 C、E 和 H 列每天都在填写。使用其中一列(让我们在这里选择 C ​​作为示例),您可以使用 .end 方法找到范围。这会从一个范围的左下或右上消失,直到找不到任何数据。所以,

Range("J1", Range("C1").End(xlDown)).Select

将自动选择从 J1 (或工作表中的最后一列)到包含 C 列中数据的最底部单元格的所有单元格。

解决方案2:
手动放入范围。例如,选择 A1 到 J300:

Range("A1", "J300").Select
于 2013-08-23T14:55:01.630 回答