Vba 在下一个空单元格区域中输入UserForm数据

Vba 在下一个空单元格区域中输入UserForm数据,vba,excel,Vba,Excel,我有一个UserForm,它接受文本输入和OptionButton选择,将数据输入到工作表中,并具有特定的分类 使用计数器i中的值将条目放置在工作表中的特定单元格中,并可通过使用按钮将其删除到位于同一工作簿上的“存档”工作表中。这可能会在列表中留下一个自由条目。i、 e 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

我有一个UserForm,它接受文本输入和OptionButton选择,将数据输入到工作表中,并具有特定的分类

使用计数器i中的值将条目放置在工作表中的特定单元格中,并可通过使用按钮将其删除到位于同一工作簿上的“存档”工作表中。这可能会在列表中留下一个自由条目。i、 e

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.
我试图做的是创建一个循环,它将检查空单元格范围,并将UserForm数据放在下一个可用的空单元格中。数据每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
如果UserForm1.OptionButton1.Value=True,则
如果范围(“A”&(5*i)).Value=“”,则
范围(“A”&(5*i)&“&“O”&(3+(5*i)))。选择
有选择。内饰
.Color=RGB(239231121)
以
带有工作表(“活动工单”)
.Range(“A”和(5*i))=UserForm1.TextBox1'将作业5个单元格分开放置
.范围(“B”和(5*i)和“:”和“E”和(3+(5*i))。合并
.Range(“B”和(5*i))=UserForm1.TextBox2
.范围(“B”和(5*i)和“:”和“E”和(3+(5*i)))。垂直对齐=xlTop
.范围(“G”和(5*i)和“:”和“O”和(3+(5*i))。合并
设置t=.Range(“t”和(5*i))
设置btn=.Buttons.Add(t.左、t.顶、t.宽、t.高)
使用btn
.Name=“RemovetoArchive”&i1
.Caption=“存档”
.OnAction=“移除韭菜”
以
以
i=i+1
ElseIf范围(“A”和(5*i))。值“”然后
对于i=1到25
我不知道如何在这里实现for循环。
接下来我
如果结束

所以我猜我脑子出了个屁,离开了几天,回来后几乎立即解决了这个问题

使用范围的新变量C创建While循环

While Range("A" & (5 * c)).Value <> ""
    c = c + 1
Wend 
While范围(“A”和(5*c))。值“”
c=c+1
温德

这将每隔5个单元格找到最近的空单元格。

也许利用
End(xlDown)
会有所帮助。用<代码>范围(“a”和(5×i))替换循环。结束(XLDOWN)。偏移(1)< /代码>以获得空白单元格输入数据。