【发布时间】:2017-10-07 21:24:51
【问题描述】:
我有一个接受文本输入的用户窗体和一个选项按钮选择,用于将数据输入到工作表中,具有一定的分类。
条目使用来自计数器 i 的值放置在工作表的特定单元格中,并且可以通过使用按钮将其删除到位于同一工作簿上的“存档”工作表中。这会在列表中留下一个免费的条目。即
Job 1 is entered
Job 2 is entered
Job 3 is entered
Job 2 is archived
There now exists a space between job 1 and 3.
我想要做的是创建一个循环,它将检查一个空的单元格范围,并将用户窗体数据放在下一个可用的空单元格中。每 5 个单元格输入一次数据,因此 A5、A10、A15... 等。
我目前的代码如下:
If UserForm1.OptionButton1.Value = True Then
If Range("A" & (5 * i)).Value = "" Then
ActiveSheet.Range("A" & (5 * i) & ":" & "O" & (3 + (5 * i))).Select
With Selection.Interior
.Color = RGB(239, 231, 121)
End With
With Worksheets("Active Jobs")
.Range("A" & (5 * i)) = UserForm1.TextBox1 'Place job 5 cells apart
.Range("B" & (5 * i) & ":" & "E" & (3 + (5 * i))).Merge
.Range("B" & (5 * i)) = UserForm1.TextBox2
.Range("B" & (5 * i) & ":" & "E" & (3 + (5 * i))).VerticalAlignment = xlTop
.Range("G" & (5 * i) & ":" & "O" & (3 + (5 * i))).Merge
Set t = .Range("T" & (5 * i))
Set btn = .Buttons.Add(t.Left, t.Top, t.Width, t.Height)
With btn
.Name = "RemovetoArchive" & i1
.Caption = "Archive"
.OnAction = "RemovetoArchive"
End With
End With
i = i + 1
ElseIf Range("A" & (5 * i)).Value <> "" Then
For i = 1 To 25
'I can't figure out how to implement the for loop here.
Next i
End If
【问题讨论】:
-
也许利用
End(xlDown)会有所帮助。将循环替换为Range("A" & (5 * i)).End(xlDown).Offset(1),得到空白单元格输入数据。