当前位置: 首页 > 知识库问答 >
问题:

当region选择太多时,使用vba和变量结束行和列创建表

武卓
2023-03-14

我有一个宏,可以在工作簿中的每个工作表中旋转,并为该工作表上的数据创建一个表,但每个工作表上的数据以不同的行和列结束。当使用。region时,它将包含比它应该包含的更多的行和列。当我总是知道结束列时,我的代码工作得很好,因为我可以使用lRow=Cells(rows.count,2).end(xlUp).row设置变量行,现在因为我不知道我保持的最大列,所以对象'_global'的'method'range‘失败了。这是我的宏,有人有什么想法吗?

Dim TbName As String
Dim sh As Worksheet
Dim x As Integer
Dim lRow As Long
Dim lCol As Long
Dim s As String

For Each sh In ThisWorkbook.Worksheets


sh.Select

TbName = sh.Name & "_Tb"
'On Error Resume Next

            If IsEmpty(Range("B7").Value) = False Then
                    lRow = Cells(Rows.Count, 2).End(xlUp).Row 'find last row in set of data
                    lCol = Cells(7, Columns.Count).End(xlToLeft).Column
                    s = Range("B7", lRow & lCol).Address ' **this line does not work**
                     's = Range("B7", "D" &lrow).address ' **this line works**
                        sh.ListObjects.Add(xlSrcRange, Range(s), , xlYes).Name = _
                                TbName
                            Range(TbName).Select
                            sh.ListObjects(TbName).TableStyle = "TableStyleMedium3"
                Else
                        Application.DisplayAlerts = False
                        sh.Delete
            End If 


x = x + 1
    Next sh
    On Error GoTo 0
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub

共有1个答案

微生新霁
2023-03-14

类似于这样:

Sub Tester()

    Dim TbName As String
    Dim sh As Worksheet, rngTable As Range
    Dim x As Integer
    Dim lRow As Long
    Dim lCol As Long
    Dim s As String, lo As ListObject

    For Each sh In ThisWorkbook.Worksheets
        If Len(sh.Range("B7").Value) > 0 Then
            lRow = sh.Cells(sh.Rows.Count, 2).End(xlUp).Row
            lCol = sh.Cells(7, sh.Columns.Count).End(xlToLeft).Column
            Set rngTable = sh.Range("B7", sh.Cells(lRow, lCol))  '<<<<<<<<

            Set lo = sh.ListObjects.Add(xlSrcRange, rngTable, , xlYes)
            lo.Name = sh.Name & "_Tb"
            lo.TableStyle = "TableStyleMedium3"
        Else
            Application.DisplayAlerts = False
            sh.Delete
        End If
    Next sh

End Sub
 类似资料:
  • 我有一个带有分组变量的数据帧,我想按组对它们求和。使用很容易。 但是现在我想要一个新的列,按组计算n1和n2的总和。这样地: 我如何使用dplyr? 编辑:实际上,这只是一个例子,我有很多变量。 我试过这两个代码,但它不在正确的维度上......

  • 问题内容: 我正在寻找使用for循环来创建多个在迭代(i)上命名的变量,并为每个变量分配一个唯一的int。 如您所见,我迷路了。理想情况下,我正在寻找输出 有什么建议? 问题答案: 您可以一站式完成所有操作 然后您可以使用 但是使用列表而不是字典可能更好 然后您可以使用 甚至(获得前三个学期)

  • 创建menagerie数据庫: mysql> CREATE DATABASE menagerie; 如果想在创建数据庫时,指定数据庫的字符编码(这里使用GBK),可以使用以下方式: mysql> create database menagerie DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci; 或者使用utf8编码: mysql> CREAT

  • 你好,这是我的程序的目的: 编写一个程序,计算三个月期结束时储蓄账户的余额。它应该向用户询问起始余额和年利率。然后,循环应在此期间每月迭代一次,执行以下步骤: a)向用户索要当月存入账户的总金额,并将其添加到余额中。不接受负数。 B) 询问用户当月从账户中提取的总金额,并从余额中减去。不接受负数或当月存款加进去后大于余额的数字。 C) 计算当月的利息。月利率是年利率除以12。将月利率乘以该月起止余

  • 问题内容: 我需要帮助或想法如何编写它,一个mysql语句。当特定列的值更改时,我需要选择一行。此后具有相同值的行不应选择。例如,我们有一个像这样的表,用以下值填充: 如果我想在status_1更改时选择行,则查询应选择ID为1和5的行,如果我正在使用status_2的ID为:1、3、5、7的行,并且如果我使用status_3的所有ID,则为ID 。希望有人可以在过去的所有时间里为我提供帮助。 提

  • 问题内容: 我想用Python(不是数组)中的一个创建10个变量。像这样: 我想创建的变量名,在这种情况下: ,,,…, 我不想一个数组 我有一个坐标图(640 x 480)。我正在确定像素颜色为白色的坐标。地面上有3个球,我想获取每个球的中心坐标,因此,如果要评估的坐标距离最后一个球很近,则x和y坐标将被平均(如果该坐标属于a)新球的坐标将属于新坐标组。 问题答案: 您不应该这样做,但是如果您真