希望excel用户窗体在下一个空白行中填充特定范围

时间:2018-08-15 19:47:37

标签: excel vba excel-vba

第一次在这里发布。我试图在下一个“空白行”中填写我的userform值,但该行不会真正空白。我希望用户表单填充的范围将为空白,但是工作表的第一列和最后两列将具有公式。
例如,“ A”,“ D”和“ E”中已经包含公式,我需要在用户表单中填写“ B”和“ C”。我希望这是有道理的。

[208, 114, 95, 49, 38, 36, 35, 20, 24, 19, 15, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0]

这里我在A,R和S中有公式。我希望我的用户表单查看范围B:Q是否为空,如果是,请从用户表单中分配这些值。

2 个答案:

答案 0 :(得分:0)

这应该对您的第一次检查有效。可以根据需要进行的逻辑检查

IF ws.Range("B" & lastRow) <> "" Then ws.Range("B" & lastRow) = ComboBox1.Value

答案 1 :(得分:-1)

您可以循环浏览最后一行的单元格,以检查每个单元格是否为空白。如果不是,请对下一行进行相同的操作,直到找到第一行,其中从B列到Q列的所有单元格都为空白。

代码如下:

Sub test()
Dim lastRow As Long
Dim ws As Worksheet
Dim rowFilled As Boolean

Set ws = Sheets("Risk&Opp")
lastRow = ws.Range("B" & Rows.Count).End(xlUp).Row

'Set boolean to true
rowFilled = True

'Count rows until you find a row where range B:Q is blank
While rowFilled = True
    rowFilled = False

    'Loop from column B (index 2) to column Q (index 17)
    For i = 2 To 17

        'If one of the cell is not blank increase lastrow
        If ws.Cells(lastRow, i) <> "" Then
            rowFilled = True
            lastRow = lastRow + 1
            Exit For
        End If
    Next i
Wend

'The first row with blank range B:Q
MsgBox lastRow

'...Add your existing code here...

End Sub