【发布时间】:2020-09-22 19:32:36
【问题描述】:
我有一个字符串,我需要将其转换为十六进制等价物。文本字符的十六进制值可能会因情况而异,因此在第二张工作表中,我制作了一个表格,我可以根据需要使用 A-Z...a-z..1-0 字符及其相关的十六进制值进行修改。
我已确认我已正确设置 VLookup 的范围,并且我已确认我一次将一个字符传递给它,但它坚持认为它在查找。我在这里错过了什么?
Sub LoopThroughString()
Dim wbBook As Workbook
Dim tblSheet As Worksheet
Dim wrkSheet As Worksheet
Dim Counter As Integer
Dim myString, myChar As String
Dim vRng, chrRng As Range
Dim sRes As Variant
Set wbBook = ThisWorkbook
With wbBook
Set wrkSheet = .Worksheets("wrkSheet")
Set tblSheet = .Worksheets("tblSheet")
End With
With tblSheet
Set vRng = .Range("A1", .Range("B1").End(xlDown))
End With
myString = Range("A1").Value 'define string
For Counter = 1 To Len(myString)
On Error Resume Next
Err.Clear
myChar = Mid(myString, Counter, 1)
sRes = Application.VLookup(myChar, vRng, 1, False)
If IsError(sRes) = False Then
Cells(2, 1 + Counter).Value = chrRng
Else
Debug.Print "Count not find value: " & myChar
End If
Next
End Sub
【问题讨论】:
-
您的表格是否设置为
char | hex value?向我们展示您的查找表的图片 -
我已编辑问题以包含表格。我都试过了 char |十六进制值和作为十六进制值 | char,都找不到任何值
-
@ScottHoltzman 实际上我只是注意到当我安排它时 char |十六进制值 我的 Debug.Print 中没有任何错误,只是没有在我的单元格中放入任何内容。快速检查,我发现在尝试解决问题时,我分配了错误的变量以写入我的单元格。
-
我相信问题出在你的变量声明中。你写了
Dim vRng, chrRng As Range。你需要写Dim vRng as Range, chrRng As Range。您编写的方式仅将chrRng声明为范围。vRng是变体类型。 -
好收获。另请参阅我上面的观点。如果不是现在,那将来可能会绊倒你。