Excel VBA 单元格引用,错误不匹配

Excel VBA Cell Referencing , error mismatch

我正在尝试使用标签引用单元格。例如,当我在 form1 上有 20 帧时,当我单击 frame1 时,它必须向 form2 上的标签发送一个值。

last = src.Worksheets("Manutencao").Range("A65536").End(xlUp).Row
folha = manutencaoexp.Label27.Caption
cellsit = manutencaoexp.Label29.Caption


src.Worksheets("Manutencao").Cells(last + 1, 6) = Application.ThisWorkbook.Worksheets(folha).Cells(cellsit, 32).Text     'duração

当我使用它时,它工作得很好,但是因为我在 Monitorform 上有 20 个 ComboBox,所以当我按下一个框架时,它必须更改为选定的框架 ComboBox,并进行单元格引用。

src.Worksheets("Manutencao").Cells(last + 1, 6) = Application.ThisWorkbook.Worksheets(folha).Cells(Monitorform.ComboBox1.ListIndex + 2, 32).Text

这(可能)不是您问题的完整答案,但它可以帮助您找出代码的哪一部分引发了错误。

您有一行 VBA 代码:

src.Worksheets("Manutencao").Cells(last + 1, 6) = Application.ThisWorkbook.Worksheets(folha).Cells(cellsit, 32).Text     'duração

这有许多隐式变量和对象,VBA 代码必须将它们堆叠在一起。虽然这本身不是问题,但它会使解决问题变得困难。

我通常通过创建中间变量来避免这些类型的错误,这有助于分隔每个步骤。从你的行来看,它会是这样的:

Option Explicit

Sub test()
    Dim thisWB As Workbook
    Set thisWB = ThisWorkbook

    Dim manutencaoWS As Worksheet
    Dim folhaWS As Worksheet
    Set manutencaoWS = thisWB.Sheets("Manutencao")
    Set folhaWS = thisWB.Sheets(folha)

    Dim lastRow As Long
    Dim folha As String
    Dim cellsit As Long

    lastRow = manutencaoWS.Range("A65536").End(xlUp).Row
    folha = manutencaoexp.Label27.Caption
    cellsit = manutencaoexp.Label29.Caption

    Dim folhaText As String
    folhaText = folhaWS.Cells(cellsit, 32)

    manutencaoWS.Cells(last + 1, 6) = folhaText
End Sub

看起来您似乎要执行很多额外的步骤来完成同一行代码,但像这样分解每个步骤会使它更易读和更容易理解 -- 并且更容易隔离错误。

此外,始终使用Option Explicit