首页 > 解决方案 > 如何在一张表VBA中循环每个表

问题描述

我试图从 excel 文件生成表和列的列表到 txt 文件。我的代码只是为所有 clumn 生成直到行尾,因为我不知道如何定义变量来限制每个表的循环:

这里是代码和excel数据图像Excel数据

Dim field As String
Dim table As String
Dim t As Integer
Dim f As Integer
Dim lastrow As Integer
Dim myFile As String
Dim xStr As String

myFile = "D:\table.txt"

With Sheets("Sheet1")
    Open myFile For Output As #1

    table = """table_name"": """ & .Range("I2") & ""","
    Print #1, table

    lastrow = Range("A" & Rows.Count).End(xlUp).Row

    For f = 2 To lastrow
        field = """column_name"": [" & Chr(10) & """" & .Range("B" & f) & """" & Chr(10) & _
        "],"
        Print #1, field
    Next f

    Close #1


End With

我想像下面的代码(CMIIW逻辑),但是如何在vba上写这个:

for t = 1 to "count table on sheet (i dnt know how to define this value)"
  table = "tablename"
  Print #1, table

  for f = "first row table t + 1" to lastrow table t
    field= "fieldname"
    Print #1, field
  Next f
Next t

根据 user11246173 的回答,我知道如何循环作为表数,但我仍然无法像上面的代码一样获得每个特定单元格的范围。请帮助解决我的代码。

任何人都可以请帮助我吗?

标签: excelvba

解决方案


在 VBA 中,工作表称为 ListObjects。它们是属于父工作表的集合,并且(在其他属性中)与大多数其他集合对象一样具有计数和索引。每个 ListObject 都有许多 ListColumn。

Option Explicit

Sub loopLO()

    Dim i As Long, c As Long

    With Worksheets("sheet1")
        For i = 1 To .ListObjects.Count
            Debug.Print .ListObjects(i).Name
            For c = 1 To .ListObjects(i).ListColumns.Count
                Debug.Print .ListObjects(i).ListColumns(c)
            Next c
        Next i
    End With

End Sub

推荐阅读