gpt4 book ai didi

vba - 我一生都无法弄清楚导致此不匹配错误 VBA Excel 的原因是什么?

转载 作者:行者123 更新时间:2023-12-04 21:20:45 24 4
gpt4 key购买 nike

我有这个导致不匹配错误的代码,我无法弄清楚为什么我之前在不匹配错误的情况下让它工作,并且试图修复它我无法让它恢复工作。合并表中的值都是数字。基本上我想做的是当一个值输入到一个单元格中时,会有一个 VLookup将被执行以将一个值输入到相邻的单元格中,一旦我得到这个工作,同一行中有更多的单元格。如果你们中的任何人渴望解决某些问题,请告诉我!

Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Dim LooupValue As String
Dim sfx As Long
Set KeyCells = Columns(1)
LooupValue = ActiveCell.Value
sfx = Application.VLookup(LooupValue, Worksheets("Merge").Range("D:BD"), 2, False)

If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then

Range(Target.Address).Offset(0, 1).Value = sfx

End If
End Sub

编辑:感谢@Marcucciboy2、@MathieuGuindon 和@BigBen 的成功帮助,我做了更多的研究并在下面发布了解决我问题的方法。

最佳答案

Dim sfx As Long
sfx = Application.VLookup(LooupValue, Worksheets("Merge").Range("D:BD"), 2, False)


如果 vlookup产量 xlErrNA#N/A ,则 VBA 无法将其结果强制转换为 Long ,你得到的正是:类型不匹配错误 - 因为 xlErrNAError值,不能隐式转换为 String , 一个 Long ,或任何东西。唯一可以包含此数据的类型是 Variant .
Dim result As Variant
result = Application.VLookup(LooupValue, Worksheets("Merge").Range("D:BD"), 2, False)

Dim sfx As Long
If Not IsError(result) Then
sfx = CLng(result)
Else
'lookup yielded no match
End If

此外,看起来这是一个不一样的:

LooupValue = ActiveCell.Value

ActiveCell可能与 Target 不是同一个单元格,即被修改的单元格。你可能需要这个:
LookupValue = Target.Value

我还建议制作不合格的 Range (与 RowsColomnsNamesCells 相同)调用显式限定 - 因为完全相同的代码根据其写入位置的不同表现不同。通过使用 Me 限定它们,您正在使您的代码更加明确。说明它做了什么并按照它所说的做的代码总是更好的代码。
Worksheets("Merge")是一种气味:如果工作表存在于 ThisWorkbook在编译时,给它一个代号(即设置它的 (Name) 属性)并直接使用该标识符:
result = Application.VLookup(LooupValue, MergeSheet.Range("D:BD"), 2, False)

如果工作表仅在运行时存在(例如,它位于由宏打开的工作簿中),那么您应该在打开该文件的位置附近引用该工作簿,例如 Set book = Application.Workbooks.Open(path) - 使用该引用来限定 Worksheets成员调用,而不是隐式引用 ActiveWorkbook .

查找范围 D:DB当您只查找列 E 中的值时,该值过多。 .如果硬编码 2是否留下来,我将查找范围设为 D:E .

关于vba - 我一生都无法弄清楚导致此不匹配错误 VBA Excel 的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51048988/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com