Excel VBA:使用地址将单元格转换为范围

时间:2017-06-07 19:47:02

标签: excel excel-vba vba

我正在构建一个模块,将文本导入Excel工作簿。导入后,我想将数据格式化为表格。我遇到的问题是导入永远不会有相同的范围。

我正在使用以下代码,但它会抛出错误,运行时错误'424':需要对象。

docker push gcr.io/my_project/foo:v1

我已经做了很多搜索,但我一直无法找到答案或弄清楚我应该怎么做。

最终结果在代码中看起来像这样,范围的开头始终设置为$ A $ 1:

Sub ImportRange()

  Dim ws As Worksheet
  Dim lRow As Long
  Dim lCol As Long
  Dim rng As Range

  Set ws = ThisWorkbook.Worksheets("Import")

  lRow = ws.UsedRange.Row - 1 + ws.UsedRange.Rows.Count
  lCol = ws.UsedRange.Column - 1 + ws.UsedRange.Columns.Count

  Set rng = ws.Cells(lRow, lCol).Address(True, True)

  'MsgBox Cells(lRow, lCol).Address(True, True)

End Sub

1 个答案:

答案 0 :(得分:0)

如果您的目标是在工作表上将范围设置为已使用的范围,则可以更简单地完成:

Set rng = ws.UsedRange

显然,您需要确保该工作表上的usedrange正确表示您导入的数据。

将范围转换为表格:

Dim Import_Table As ListObject
Set Import_Table = ws.ListObjects.Add(SourceType:=xlSrcRange, Source:=rng, XlListObjectHasHeaders:=xlYes)
Import_Table.Name = "Import"

注意:代码适用于Excel 2010.对于更高版本,请使用HasHeaders替换XlListObjectHasHeaders