VBA判断选择区域

如上图,可从一程序中得到上图中的表,但每天得到的行与列数都不是不固定的。
我的目标:使用VBA,判断选择区域。按上图表,应该选择的区域是:B2:J22
请按动态行列给出判断选择区域的VBA代码!
注:A列是有值的,第23行是空白行,但第24行不是空白行,要求从B2:J22被选择!

用usedrange可以实现要求,具体代码如下:

activesheet.usedrange.select


关于usedrange的详细知识:

  如果想知道当前工作表中所有已使用的单元格区域的大小,或者想引用当前工作表中已使用的区域,那么可能就要想到UsedRange属性了。

  UsedRange属性应用于Worksheet对象,返回指定工作表中已使用区域的Range对象,即返回工作表中已使用的单元格区域。因此,该属性也可以用于选取单元格区域。
  下面用一个简单的例子来说明UsedRange属性的功能。
        如下图1所示的工作表:

然后,在VBE编辑器中输入如下代码:
Sub Sample01()
  Worksheets("Sheet1").UsedRange.Select
End Sub
代码运行后,上面的工作表显示如下图2所示:

即在指定工作表中(本例为工作表Sheet1)已使用范围被全部选中。可以看出,UsedRange属性返回工作表中所有已使用范围的单元格区域,而不管该区域数据间是否有空行或空格。

特别注意:UsedRange属性返回工作表中所有已使用范围的单元格区域是指:单元格中有数值、公式、单元格格式化设置(例如:单元格字体设置、边框设置等等)

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-06-04
Sub DynamicRangeSelect()
    Dim i As Long, j As Integer, stp As Boolean
    Dim curRowUsed As Boolean
    Dim maxCol As Integer, firstRow As Integer
    stp = False '初始化变量stp
    i = 1  '初始化变量i
    maxCol = 2  '初始化最大列号
    '找出第一个非空行
    Do Until Range("B" & i) <> ""
        i = i + 1
        If i > 10 Then
            MsgBox "没有可被选择的数据"
            Exit Sub   '此句防止无数据导致死循环,可以根据实际情况调整此参数大小
        End If
    Loop
    firstRow = i   '记住找到的第一个非空行
    i = i + 1
    Do Until stp = True
        curRowUsed = False
        For j = 2 To 255
            If firstRow > 0 Then
                If Cells(i, j) <> "" Then
                     curRowUsed = True
                     If j > maxCol Then maxCol = j   '标记最大列号
                End If
            End If
        Next j
        '碰到全行空白则发出停止循环指令
        If curRowUsed = False Then
            stp = True
            i = i - 1  '此时的i减1即为最大行号
        End If
        If stp = False Then i = i + 1
    Loop
    Range(Cells(firstRow, 2), Cells(i, maxCol)).Select  '选择动态区域
End Sub

第2个回答  2015-10-23
sub 选择()

if typename(selection)=selection.address then
  msgbox "选择了"& selection.address
 else
   msgbox "Nothing"
  end if

end sub

第3个回答  2014-06-04

试试看:

    MsgBox Range("B2").CurrentRegion.Address(0, 0)

追问

怪我没说明情况,其实,在我所得到的表中,A列是有值的,并且在上图表中,23行是空白行,但第24行是有值的。
你给的代码把我不想选中的区域也选择了(包含了A列,包含了23行后的其它行)

追答

那你得找个规律才行咯,
比如:
1、标题 某某单位配货表 这个合并单元格是否都是从你需要的开始列合并到结束列?
2、需要的列下面除了需要的数据是不是没有其他数据了?就像上图,B:J列的22行后是不是都是空行?

第4个回答  2014-06-04
sub 选择区域
activesheet.usedrange.select
end sub

本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网