gpt4 book ai didi

VBA - 使用 SearchRange 查找变量值

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

我正在研究一个 Excel 电子表格,它从 SQL 数据库中提取一个选择列表并填充工作表。然后它会提示用户扫描部件号。我试图在 A 列中找到零件号,并返回零件号所在的行。

零件号以 Variant 类型开始,但认为该类型是问题所在,我通过将其值设置为另一个变量将其转换为字符串。

最后,我找到了这段代码(我已经尝试了很多,但到目前为止没有一个有效),当您指定一个数字(123456789012)时,它可以工作,如下面的代码所示。如果将该数字替换为变量 sPart 或 scanPart,它将不起作用。

我需要它来查找变量 sPart (String) 或 scanPart (Variant) 的行。我究竟做错了什么?

Function ReturnRowNumber()

Dim ws As Excel.Worksheet
Set ws = ActiveSheet

Dim scanPart As Variant
Dim sPart As String
Dim FoundRow As String

scanPart = InputBox("Scan the first part number", "Part Number") 'Get Part Number

sPart = scanPart

MsgBox sPart

Dim SearchRange As Range
Dim FindRow As Range
Set SearchRange = Range("A1", Range("A65536").End(xlUp))
Set FindRow = SearchRange.Find(123456789012#, LookIn:=xlValues, lookat:=xlWhole)
MsgBox FindRow.Row

End Function

提前感谢您的帮助!

达纳

最佳答案

你帖子中写的代码永远不会起作用,因为语法不正确,尤其是在 .Find 中。陈述。也许这个问题让你陷入
方向错误,认为是数据类型问题。

请查看此代码。对字符串和数值进行了测试。

Option Explicit

Sub Test()

Dim sPart As String
sPart = InputBox("Scan the first part number", "Part Number") 'Get Part Number

MsgBox ReturnRowNumber(sPart)

End Sub


Function ReturnRowNumber(sPart As String) As Long

Dim ws As Worksheet
Set ws = Worksheets("Sheet1") 'be more explicit than 'ActiveSheet

Dim SearchRange As Range
Dim FindRow As Range
Set SearchRange = ws.Range("A1", ws.Range("A65536").End(xlUp))
Set FindRow = SearchRange.Find(sPart, LookIn:=xlValues, lookat:=xlWhole)

If Not FindRow Is Nothing Then ReturnRowNumber = FindRow.Row

End Function

关于VBA - 使用 SearchRange 查找变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45512855/

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