首页 > 解决方案 > 使用 Cell.Address 定义范围 - VBA

问题描述

我正在尝试复制一个大小不同的范围,该范围由数组中第一个和最后一个单元格的值定义。

我已经找到了限制范围的 Cell.Address,但是当我尝试将这些输入到我的 Range(Cell1, Cell2) 中时,我得到了错误。

我的 Cell1 由以下人员给出:

Cells.Find("ID").Offset(1,0).Address

我的 Cell2 由以下给出:

Cells.Find("Description of initiative").offset(1,0).end(xldown).Offset(0,cells.Find("ID").Column-cells.Find("Description of initiative").Column).address

我试过简单地将它们剪切并粘贴到 Range(Cell1, Cell2) 中,但我得到了错误。我尝试创建和定义变量,但没有运气。如果有人可以在这里帮助我,我将不胜感激。

谢谢


感谢您的回复 - 这是完整的代码:

Sub Refresh()

Dim wB As Workbook

Application.ScreenUpdating = False
Application.DisplayAlerts = False

For Each Worksheet In Worksheets
    Select Case Worksheet.Name
        Case "Inputs", "Instructions"
        Case "Project Dashboard"
            Range("B29:B1000").ClearContents
        Case Else
            Worksheet.Delete
        End Select
    Next Worksheet

ufProgress.LabelProgress.Width = 0
ufProgress.Show
Dim i As Integer
For i = 10 To 17
    pctdone = (i - 9) / 8
    With ufProgress
        .LabelCaption.Caption = "Processing Dashboard " & i - 9 & " of 8"
        .LabelProgress.Width = pctdone * (.FrameProgress.Width)
    End With
    DoEvents
    Set wB = Workbooks.Open(Range("G" & i), False, True)
        wB.Sheets(Workbooks(ThisWorkbook.Name).Worksheets("Inputs").Range("F" & i).Value).Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
        wB.Close False
        With Worksheets(Workbooks(ThisWorkbook.Name).Worksheets("Inputs").Range("F" & i).Value)
            .Tab.ColorIndex = 15
            .Name = Range("C" & i)
            .Cells.UnMerge
            .Range("B31:B" & .Cells(.Rows.Count, "C").End(xlUp).Row).Copy
            End With

        Worksheets("Project Dashboard").Range("B10000").End(xlUp).Offset(1, 0).PasteSpecial xlValues


    If i = 17 Then Unload ufProgress
    Next

Application.DisplayAlerts = True

End Sub

这是我试图动态化的线:(并用我的长单元格公式替换)

.Range("B31:B" & .Cells(.Rows.Count, "C").End(xlUp).Row).Copy

我检查了两个 Cell.Address 公式的结果,它们返回了正确的结果(我相信分别是 $B$31 和 $B$48)。基本上这些单元格不是静态的,但它们总是位于包含“ID”和“倡议描述”的单元格下方。我正在尝试将 ID 下面的第一个单元格和倡议描述的最后一个单元格(偏移回 ID 列)作为要复制的单元格范围。

这更有意义吗?

感谢您的帮助!


我的基本问题如下:

如何写出将单元格值作为范围限制的范围?例如(请耐心等待),假设单元格 X100 具有“A1”作为值,而单元格 Y200 具有“B5”作为值。有没有办法可以写范围(单元格 X100 值单元格 Y200 值)?

在这种情况下,我想以 Range("A1:B5") 结束。

我需要 Range 来查看不同单元格中的值以确定自身的起点和终点。这更有意义吗?

谢谢!

标签: excelvbarangecell

解决方案


推荐阅读