我正在尝试使用标签引用单元格。在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
答案 0 :(得分:0)
这不是(可能)对您的问题的完整答案,但它可以帮助您找出代码的哪一部分引发错误。
您只有一行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
。