写入连续的下一个可用单元格

时间:2014-07-03 21:09:40

标签: excel select rows

现在,我有一个代码,它将为网络驱动器中的文件夹生成一个名称。一旦用户在提示框中键入新文件夹的名称,我就会尝试将名称添加到两个位置:列中列表的底部,以及第一行中列表的末尾(第一行)行中的空单元格)

目前,我的代码将名称放在D列的列表底部:

lMaxRows = Cells(Rows.Count, "D").End(xlUp).Row
Range("D" & lMaxRows + 1) = accountname

其中" accountname"是提示要求的输入。然后代码转到列中使用的最后一个单元格,再添加一个单元格,并使用" accountname"填充它。

有没有办法将此代码转换为连续列表?我试图从第1行第X列开始从左到右构建列表。这就是我现在所拥有的,但是它不起作用,我不确定它是不是&#39 ;语言问题或其他更多。

lMaxCol = Cells(1, Columns.Count).End(xlToRight).Column
Range("X1" & lMaxCol + 1) = accountname

有什么想法吗?这是一个快速修复还是需要更复杂的代码?

-AC

2 个答案:

答案 0 :(得分:0)

lMaxCol = Cells(1, Columns.Count).End(xlToRight).Offset(0,1).Column
If lMaxCol<26 Then lMaxCol=26
Cells(1, lMaxCol) = accountname

答案 1 :(得分:0)

Dim lMaxCol As Long
With ActiveSheet.Rows(1) 'might want a different sheet
    lMaxCol = .Find(what:="", after:=[w1], LookIn:=xlValues, searchdirection:=xlNext).Column
End With
Cells(1, lMaxCol) = AccountName

请注意,这确实应该在X1处或之后找到第一个空单元格。例如,如果有X1和AA1中的数据,则上述将返回25,而不是28.如果这可能是一个问题,并且您希望在这种情况下返回28,则可以使用以下内容:

Dim lMaxCol As Long
With ActiveSheet.Range("x1", Cells(1, Columns.Count))
    On Error Resume Next
    lMaxCol = .Find(what:="*", after:=.Cells(1, .Columns.Count), LookIn:=xlValues, _
         searchdirection:=xlPrevious).Column + 1
    If Err.Number <> 0 Then lMaxCol = 24
    On Error GoTo 0
End With
Cells(1, lMaxCol) = AccountName

如果您不需要知道lMaxCol代码的其他部分,可以简化此代码。

Dim C As Range
With ActiveSheet.Range("x1", Cells(1, Columns.Count))
    Set C = .Find(what:="*", after:=.Cells(1, .Columns.Count), LookIn:=xlValues, _
         searchdirection:=xlPrevious)
    If Not C Is Nothing Then
        C.Offset(0, 1) = AccountName
    Else
        Cells(1, 24) = AccountName
    End If
End With