我一直在努力学习我认为非常简单/简单的代码。
我想创建一个循环来查找Col U&中的第一个空单元格。将Col O中的相邻值(代表月份的数字)复制到Col U中的空单元格,但将该数字转换为月份名称。
我希望此循环仅在工作表“调整”中运行,自动将月份名称转换为Col U(来自Col in中的#)作为新条目。
到目前为止,我已经成功了:
Sub MonthName()
Dim ws As Worksheet
Set ws = Sheets("Adjustments")
For Each cell In ws.Columns(21).Cells
If Len(cell) = 0 Then cell.Offset(0, -6).Copy: Exit For
Next cell
End Sub
非常感谢任何帮助!
答案 0 :(得分:1)
If Len(Trim(cell.Value)) = 0 Then cell.Value = MonthName(cell.Offset(, -6).Value)
并删除Exit For
如果您要更改列U
上的所有空单元格,而不仅仅是第一个。否则保留它。
答案 1 :(得分:0)
建议您使用Find
获取第一个空白单元而不是循环。
如果您希望自动运行,可以从工作表更改事件(更新,选择或计算特定范围的单元格等)触发它。
Dim ws As Worksheet
Dim rng1 As Range
Set ws = Sheets("Adjustments")
Set rng1 = ws.Columns("U").Find("", ws.Cells(ws.Rows.Count, "U"), xlFormulas, xlWhole)
If Not rng1 Is Nothing Then rng1.Value = Format(ws.Cells(rng1.Row, "O") + 1, "mmm")
更新
代码
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws As Worksheet
Dim rng1 As Range
Dim rng2 As Range
Set rng1 = Intersect(Columns("O"), Target)
If rng1 Is Nothing Then Exit Sub
Set rng1 = Columns("U").Find("", Cells(Rows.Count, "U"), xlFormulas, xlWhole)
If Not rng1 Is Nothing Then
Application.EnableEvents = False
rng1.Value = Format(Cells(rng1.Row, "O") + 1, "mmm")
Application.EnableEvents = True
End If
End Sub