VBA如何得到选中的多行 的行号和列号

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VBA如何得到选中的多行 的行号和列号相关的知识,希望对你有一定的参考价值。

VBA如何得到选中的多行 的行号和列号
用鼠标+CTRL选中 多行,然后点按钮,要在按钮事件中得到所选中的行号
(选中的为一行,多行)

Sub a()
Dim i As Integer
For i = 0 To UBound(Split(Selection.Address, ","))
MsgBox Split(Split(Selection.Address, ",")(i), "$")(2)
Next
End Sub

刚才又思考了一下,下面代码更加简单实用强大。
Sub test()
For Each c In Selection.Rows
MsgBox c.Row
Next
End Sub
参考技术A

首先要知道行号、列号是已知还是未知的,知道行号、列号确定单元格以后,用CELLS就可以了,把下面的代码复制到VBA里面执行就看出来了:

Sub tt()
Dim a, b As Integer
a = InputBox("请输入行号")
b = InputBox("请输入列号")
Cells(a, b).Select
End Sub

这上面就是单元格选定。

参考技术B 选中一行,选中连接多行,选中不连接多行都适用,请测试:
(刚才的有问题,又改了一下)
Sub b()

If Selection.Address Like "*,*" Then
p = Split(Selection.Address, ",")
For i = LBound(p) To UBound(p)
q = Split(p(i), "$")
MsgBox q(UBound(q))
Next
Else
p = Split(Selection.Address, "$")
For i = Replace(p(1), ":", "") To p(2)
MsgBox i
Next
End If

End Sub

这是选中整行的,如果你选中的是区域就有问题,有问题的话Q我的EXCEL群找吧,这里不让再改了——84253041

vba如何读取excel中某单元格的行数或列数

1、将单元格所选单元格的行号和列号,分别用VBA显示在下面的两个单元格中,如下图所示:

2、按下Alt+F11,打开VBA编辑界面,选择当前工作表编写代码,如下图所示:

3、下面代码是得到当前单元格的行号并放到当前单元格下一个单元格中:

4、下面代码是得到当前单元格的列号并放到当前单元格下面第二个单元格中:

5、代码编写完成,点击运行子过程按钮(或按下F5)

6、返回Excel中,就可以看到得到了当前单元格的行号和列号

可能以上的三种方式,你还是不太熟悉,我们举一个通俗一点例子:

1、对象.cells(rowsindex,colunmindex)

假如我们想在sheet1中的A1单元格输入100,是这样写代码的。

Worksheets("sheet1").Cells(1, 1) = 100

我们来说说cells(1,1)的含义,前面的一个数字1,代表的是第一行,后面的一个1代表的是第一列。是不是发现使用Cells比range更好理解一点呢?

PS:需要说明的是在我们excel种使用Cells这个时候,他的行和列是有最大值的,我们一旦超过最大值就会报错。行的最大值为1048576,列的最大值为16384.

2、对象.cells(rowindex)

这个使用方法很简单也很有意思,他的最大值为行和列的所有单元格数目相加,即他的最大值为17179869184.这个数字和我们的Excel中的单元格的数目是相等的。理解这个的时候,可以这么理解,单元格从A1到XFD1换行,然后A2到XFD2,如此进行循环。

假如我们想在第520个单元格输入这个值,那么代码是如何去写写呢?

其实很简单的, Worksheets("sheet1").Cells(520) = 520.

这代码的意思就是在第520个单元格输入520值。

3、对象.cells

这个的使用方法可以说是非常强大的,这种方法返回的是所有工作表上的单元格,请注意和前面的2种方法区分来。

例1, 假如我们需要清除sheet1中的单元格的所有值,代码是这样写的。

代码为Worksheets("sheet1").Cells.Clear,这个的意思就是清除单元格中的所有内容。这个在我们清除单元格的内容的时候用的很多的。
参考技术A 你是意思是不是判断工作中已经
使用的最大
行数
工一个每一行都有数的列,加入是a列
excel2007及以上
n=thisworkbook.worksheets("sheet1").range("a1048576").end(xlup).row
excel2003
n=thisworkbook.worksheets("sheet1").range("a65536").end(xlup).row
参考技术B 比如说A3
在任意单元格输入=row(a3)结果为3(行数)
=column(a3)结果为1,列数本回答被提问者和网友采纳
参考技术C A1:

[A1].ROW     
[A1].COLUMN

range("A1").row
range("a1").column

参考技术D Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Range("a1") = ActiveCell.Row & "行"
Range("a2") = ActiveCell.Column & "例"
End Sub

是不是这样?

以上是关于VBA如何得到选中的多行 的行号和列号的主要内容,如果未能解决你的问题,请参考以下文章

VBA返回选中单元格区域的行数列数,以及活动单元格的行号和列号

excle vba,如何查找一个已知值的行号和列号?

VBA中如何取得行号和列号如何选定这一范围的值

EXCEL VBA 如何找到某一数据的行号和列号?

vba如何读取excel中某单元格的行数或列数

pyqt Qtablewidget 获取选中多行的行号或者内容