NCC*_*NCC 7 excel vba excel-vba selection
我想做的事情如下:
E18-(1,1) &":" &E18+(1,1)
Run Code Online (Sandbox Code Playgroud)
我的目的是保持范围的选择E18
(值= B)并将选择范围扩展到D16:F20
.
如果我有一个单元格的范围,E18
并且我想扩展范围D16:F20
,我该怎么做?
Sid*_*out 15
你的意思是这样的?
句法
ExpandRange [ 范围 ],[ 左侧的Col数 ],[ 顶部的行数 ],[ 右侧的Col数 ],[ 行数下降 ]
Sub Sample()
Debug.Print ExpandRange(Range("B5"), 1, 1, 1, 1) '<~~ $A$4:$C$6
Debug.Print ExpandRange(Range("A1"), 1, 1, 1, 1) '<~~ Error
Debug.Print ExpandRange(Range("XFD4"), 1, 1, 1, 1) '<~~ Error
Debug.Print ExpandRange(Range("XFD1048576"), 1, 1, 1, 1) '<~~ Error
Debug.Print ExpandRange(Range("E5"), 1, 1, 1, 1) '<~~ $D$4:$F$6
End Sub
Function ExpandRange(rng As Range, lft As Long, tp As Long, _
rt As Long, dwn As Long) As String
If rng.Column - lft < 1 Or _
rng.Row - tp < 1 Or _
rng.Column + rt > ActiveSheet.Columns.Count Or _
rng.Row + dwn > ActiveSheet.Rows.Count Then
ExpandRange = "Error"
Exit Function
End If
ExpandRange = Range(rng.Offset(-1 * tp, -1 * lft).Address & ":" & _
rng.Offset(dwn, rt).Address).Address
End Function
Run Code Online (Sandbox Code Playgroud)
小智 7
这是我用来调整现有选择的简单代码.
Selection.Resize(Selection.Rows.Count + 5, Selection.Columns.Count + 50).Select
Run Code Online (Sandbox Code Playgroud)
这将为行计数添加5,为列计数添加50.适应您的需求.
Range(Cells(WorksheetFunction.Max(1, Selection.Row - 1), _
WorksheetFunction.Max(1, Selection.Column - 1)), _
Cells(WorksheetFunction.Min(Selection.Worksheet.Rows.Count, _
Selection.Row + 1), _
WorksheetFunction.Min(Selection.Worksheet.Columns.Count, _
Selection.Column + 1))).Select
Run Code Online (Sandbox Code Playgroud)
更新:感谢 Siddharth Rout 格式化我的消息