2016-09-07 55 views
0

从来就设法选择具有内容的范围内使用这样的:在四个方向从活性细胞扩展范围VBA擅长

Selection.SpecialCells(xlCellTypeConstants, 23).Select

现在我想延长在四个方向该范围内,大概有偏移功能。例如,我希望范围选择C3:D6变成B2:E7。

如果可能的话C3:D6; F3:G6; I3:J6成为B2:K7莫名其妙

回答

0

一切皆有可能

enter image description here

Sub TestResizeAndMergeAreas() 
    Dim r As Range 

    Worksheets.Add 

    Range("C3:D6,F3:G6,I3:J6").Value = "Test Data" 

    Range("A1:Z20").Select 

    On Error Resume Next 
    Set r = Selection.SpecialCells(xlCellTypeConstants, 23) 
    On Error GoTo 0 

    If Not r Is Nothing Then 
     Debug.Print "Before:", r.Address 

     ResizeAndMergeAreas r, -1, 1, -1, 1 

     Debug.Print "After:", r.Address 
    End If 

    r.Select 
End Sub 

Sub ResizeAndMergeAreas(ByRef Target As Range, x1 As Long, x2 As Long, y1 As Long, y2 As Long) 
    Dim rArea As Range 

    For Each rArea In Target 
     Set Target = Range(Target, rArea) 
    Next 

    Set Target = Target.Offset(x1, y1).Resize(Target.Rows.Count + x2 + (x1 * -1), Target.Columns.Count + y2 + (y1 * -1)) 

End Sub 
+0

如果这项工作本身造成I'我已经在我的工作手册和新手册中试过了,但没有任何反应,我做错了什么? – mrkrister

+0

当我运行这个时,我结束了一张新的工作表,“测试数据”写在C3:D6; F3G6; I3.J6和选择A1:Z20 – mrkrister

+0

哇!感谢你的耐心,在看了一段代码之后,我已经接近理解它,经过几次测试和编辑之后,我可能会这样做,但最终的结果正是我所追求的。谢谢! – mrkrister