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