vba - Excel VBA 单元格引用,错误不匹配
问题描述
我正在尝试使用标签引用单元格。例如,在 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
.
推荐阅读
- powershell - 如何在 Microsoft.Xrm.Data.Powershell 中查看属性值?
- scala - 在哪里可以找到cats.NonEmptyParallel[IO,F]?
- python - 替换字符串中不需要的特殊字符,保留两个数字之间的特殊字符
- python - 我怎样才能让这个 python 程序记住以前的值并添加它?
- ios - 应用程序支持与 GKSavedGame
- javascript - 选择 OnChange 在表单中不起作用
- typescript - Vue&TypeScript:vue-property-decorator/vue-class-component 的“el”属性?
- python - 将值附加到列表中而不重复
- jquery - 使用 Slick Slider 向当前幻灯片添加类
- mysql - 对于接受大流量用户注册的网站,如何防止与 RDBMS 的“错误连接太多”?