用VBA打印出某列单元格的值

VBA是比较简单的编程语言,只要安装用microsoft office就可以用来调试代码,不用安装第三方工具,值得大家抽空学一学。如果有Python编程的基础,学起来就非常的简单了。今天我们来学习一下如何用VBA打印出某列单元格的值。

比如:我们在Excel中有A列10行从1..10的数值,现在我们想用debug.print打印出这些值,应该如何操作呢?

一、用cells获取单元格的值

用Cells()来获取单元格的值,用for循环来遍历。代码如下:

Sub PrintColumnValues()
    Dim i As Integer
    For i = 1 To 10 '要打印的列数
        debug.print Cells(i, 3).Value '指定要打印的列,这里是第3列
    Next i
End Sub

这个宏代码会打印第3列前10个单元格的值。

您可以修改i的范围和Cells(i, 3)中的列号,来打印您想要的单元格列。

debug.print会在VBA编辑器的“即时窗口”中打印输出。您可以在运行宏前打开“视图”菜单的“即时窗口”选项卡。

这在调试VBA代码时非常有用,可以轻松查看变量和单元格的值,而不需要在Excel工作表中插入消息框。

二、用Range对象获取单元格的值

先定义一个Range对象,然后定义其范围

Sub PrintColumnValues()
    Dim col As Range
    Set col = Range("A1:A10") '指定第3列
    For Each cell In col
        debug.print cell.Value
    Next cell
End Sub

这会打印第1列A1:A10的所有单元格值。

我们使用Set关键字创建col作为第3列的范围。 然后我们可以使用For Each循环遍历这个范围内的每个单元格,并打印每个单元格的值。

这比使用固定的行数i更为灵活,可以打印列中的所有单元格。 如果列在未来添加了更多行,此宏仍然可以正常工作。

扫描二维码关注公众号,回复: 15165226 查看本文章

使用range和For Each循环是VBA中访问和操作Excel范围的强大方式。

三、用worksheets对象来遍历打印

我们还可以通过worksheets对象的属性rows来实现遍历打印

Sub PrintNonBlankColumn1Values()
    Dim ws As Worksheet
    Set ws = Worksheets("Sheet1")
    For Each Row In ws.Rows
        If Row.Cells(1).Value <> "" Then  '检查第1列(索引1)是否非空
            Debug.Print Row.Cells(1).Value  '如果非空,打印值
        End If
    Next Row
End Sub

循环每行时,首先检查当前行的第一列(索引1)单元格值是否为空:row.Cells(1).Value <> ""

如果非空,则打印该值:debug.print row.Cells(1).Value

如果为空,则跳过循环,不做任何操作

继续循环,直到处理完所有行

这样只会打印工作表第一列中所有非空单元格的值。留空的单元格会被跳过,从而实现了所需功能。

row.Cells(1)访问每行的第一列(索引1)单元格。这是获取特定行和列交叉点单元格值的常用方法。

四、用ThisWorkbook对象来遍历

这种方法用isempty来判断是否为空,用ws.Cells(ws.Rows.Count, 1).End(xlUp).Row来获取第一列的最后一行。
用ThisWorkbook.sheets获取工作表

Sub PrintNonBlankColumn1Values()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim cell As Range
    Set ws = ThisWorkbook.Sheets("Sheet1")
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    For Each cell In ws.Range("A1:A" & lastRow)
        If Not IsEmpty(cell.Value) Then  '检查第1列(索引1)是否非空
            Debug.Print cell.Value  '如果非空,打印值
        End If
    Next cell
End Sub

四、学后反思

  1. 综合来看用cell和Range的方法更为简单,运行的效率也更高。
  2. 与Python不同,注意for循环中没有冒号,而多了next,书写时一定不要忘记。

猜你喜欢

转载自blog.csdn.net/henanlion/article/details/130906021