我想根据另一个工作表中的单元格值自动添加列。 例如,如果单元格值显示为25,我希望它扩展列(包括公式/格式)以在22之后再插入3列。
如果单元格值更改为20,我希望它删除最后两列。
在VBA中有没有办法做到这一点?我认为可能需要某种类型的刷新按钮,除非有另一种方法使其成为更改事件?
谢谢!
Sub AddCols()
Dim lastColumn As Long
lastColumn = ActiveSheet.Cells(5, Columns.Count).End(xlToLeft).Column
'lastColumn.Select
Cells(5, lastColumn + 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
编辑:我在下面尝试了以下代码,但是当更改事件发生时,它一直在给我一个错误。
colCount = Worksheets("Sheet2").Rows(1).End(xlToRight).Column
checkCell = Worksheets("Sheet1").Range("A1").Value
If checkCell > colCount Then
cellDiff = checkCell - colCount
Range(Columns(colCount + 1), Columns(colCount + cellDiff)).Insert Shift:=xlToRight
Range(Cells(1, ColCount), Cells(lRow, ColCount)).AutoFill Destination:=Range(Cells(1, ColCount), Cells(lRow, ColCount + cellDiff)), Type:=xlFillDefault
Else
cellDiff = colCount - checkCell
startCol = colCount - cellDiff + 1
Range(Columns(startCol), Columns(colCount)).Delete Shift:=xlToLeft
End If
答案 0 :(得分:0)
帮助您前进的小例子...
dim lastcolumn as long, k as long
with sheets(1)
lastcolumn = .cells(5,.columns.count).end(xltoleft).column
if sheets(2).cells(1,1).value <> lastcolumn then k = sheets(2).cells(1,1).value - lastcolumn
select case k
case >0
'insert columns
case <0
'remove columns
case is 0
'do nothing
end select
end with
编辑1:
更正了引用.rows.count而不是.columns.count的lastcolumn