Excel Mac VBA Loop Through Cells并重置一些值

时间:2013-08-23 14:09:44

标签: macos excel-vba vba excel

我目前有一张工作表,每天都有多人填写。用户填写有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

如果有人能帮我解决这个问题,我会很感激。通过一些研究,这是我到目前为止所提出的,现在我被卡住了......

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

提前致谢!

2 个答案:

答案 0 :(得分:1)

关于找到正确的范围,请参阅此link,对于If语句中的问号,您可能希望放置

curCell.Value = 0

答案 1 :(得分: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
相关问题