我是VBA的新手并且有一点疑问。我试图将特定单元格中的某些值从十六进制转换为十进制,我有一个小难度。在那个细胞中有很多空白细胞。例如前5行是空白然后我再次有一个十六进制值3个空白行和一个十六进制值。由于空白单元格,我无法循环。请有人帮忙。以下是我写的代码。
Sub Conversion()
Dim j As Integer
Dim LR As Integer
LR = Range("B" & Rows.Count).End(xlUp).Row
For j = 3 To LR
If Cells(j, 2).value = "" Then Cells(j, 3).value = "#N/A" Else
Cells(j, 3).value = CLng("&H" & Cells(j, 2).value)
Next
End Sub
我在使用此代码时出现Mismatch错误
答案 0 :(得分:1)
你最后忘记了End If
。我已经对您的代码进行了一些组织,并添加了End If
,似乎可行。
Sub Conversion()
Dim j As Integer
Dim LR As Integer
LR = Range("B" & Rows.Count).End(xlUp).Row
MsgBox Range("B" & Rows.Count).End(xlUp).Row
For j = 3 To LR
If Cells(j, 2).Value = "" Then
Cells(j, 3).Value = "#N/A"
Else
Cells(j, 3).Value = CLng("&H" & Cells(j, 2).Value)
End If
Next
End Sub
答案 1 :(得分:0)
CLng不起作用,因为它给出了错误,因为我阅读并理解你可以使用下面的代码,你可以在你的代码中使用Format而不是CLNG命令
Sub Conversion()
Dim j As Integer
Dim LR As Integer
LR = Range("A" & Rows.Count).End(xlUp).Row
For j = 1 To LR
If Cells(j, 1).Value = "" Then
Cells(j, 3).Value = "#N/A"
Else
Cells(j, 3).Value = "&H" & Format(Cells(j, 1).Value, "0")
End If
Next
End Sub
答案 2 :(得分:0)
试试这个:
For j = 3 To LR
If Cells(j, 2).Value = "" Then
Cells(j, 3).Value = "#N/A"
Else
Cells(j, 3).Value = CLng("&H" & Cells(j, 2).Value)
End If
忽略错误:
On Error Resume Next
答案 3 :(得分:0)
这是使用三元函数的一个
Sub Conversion()
Dim sht As Worksheet
Set sht = ActiveWorkbook.Sheets("Sheet3")
Dim LR As Range
Set LR = sht.Range("B1", sht.Range("B" & sht.Rows.Count).End(xlUp))
Dim cel As Range
For Each cel In LR
cel.Offset(0, 1).Value = IIf(cel.Value = "", "#N/A", CLng("&H" & cel.Value))
Next cel
End Sub