Excel VBA if statement运行后不产出结果也不报错

Excel VBA if statement 相关问题
超级感谢回答!无比感激!

问题遇到的现象和发生背景

问题:if statement 运行后不产出结果

背景:
input是一整串字符串,类似于T02CG338 或者 8502SEH778。首先根据开头分成两类:T开头的和数字开头的。然后取对应字符串中的第四位(T开头)或者第六位(85开头),使用function对应出信息,放入output列。

问题相关代码,请勿粘贴截图
Function ns(x)
    If x = "A" Then
        ns = "Size 00"
    ElseIf x = "B" Then
        ns = "Size 0"
    ElseIf x = "C" Then
        ns = "Size 1"
    ElseIf x = "D" Then
        ns = "Size 2"
    ElseIf x = "E" Then
        ns = "Size 3"
    ElseIf x = "F" Then
        ns = "Size 4"
    ElseIf x = "G" Then
        ns = "Size 5"
    ElseIf x = "H" Then
        ns = "Size 6"
    ElseIf x = "J" Then
        ns = "Size 7"
    End If
End Function

Sub nemasize()
Dim i, findc, outputc
For i = 6 To Range("a1048576").End(xlUp).Row
'findc is the catalog_number column
Set findc = Range("H" & i)
'outputc is where the output should goto
Set outputc = Range("P" & i)
'如果开头是T,那么截取字符串第四位的字母
If InStrRev(findc, "T", 2) <> 0 Then
y = Mid(findc, 4, 1)
'根据字母对应的Size信息放入第P列
outputc = ns(y)
'如果开头是8502或者8702,截取第六位的字母
ElseIf Left(findc, 4) = "8502" Or "8702" Then
y = Mid(findc, 6, 1)
outputc = ns(y)
End If
Next
End Sub

运行结果及报错内容

结果:没有报错,但是运行后应该有内容的列是空的。

非常感谢您的回答啦!

  1. Function ns(x) 少了 as String 这个有返回值,需要在后面加上as String
  2. For i = 6 To Range("a1048576").End(xlUp).Row不对,导致循环没有执行,我建议改成一个小一点的数字
  3. 两处outputc = ns(y)貌似有问题。改为Range("P" & i) = ns(y) 这里我不太确定
    在本人电脑上成功运行了。
Function ns(x) As String
    If x = "A" Then
        ns = "Size 00"
    ElseIf x = "B" Then
        ns = "Size 0"
    ElseIf x = "C" Then
        ns = "Size 1"
    ElseIf x = "D" Then
        ns = "Size 2"
    ElseIf x = "E" Then
        ns = "Size 3"
    ElseIf x = "F" Then
        ns = "Size 4"
    ElseIf x = "G" Then
        ns = "Size 5"
    ElseIf x = "H" Then
        ns = "Size 6"
    ElseIf x = "J" Then
        ns = "Size 7"
    End If
End Function

Sub nemasize()
Dim i, findc, outputc
'For i = 6 To Range("A1048576").End(xlUp).Row
For i = 6 To 1048576
    'findc is the catalog_number column
    Set findc = Range("H" & i)
    'outputc is where the output should goto
    'Set outputc = Range("P" & i)
    '如果开头是T,那么截取字符串第四位的字母
    If InStrRev(findc, "T", 2) <> 0 Then
        y = Mid(findc, 4, 1)
        '根据字母对应的Size信息放入第P列
        Range("P" & i).Value = ns(y)
        '如果开头是8502或者8702,截取第六位的字母
    ElseIf Left(findc, 4) = "8502" Or "8702" Then
        y = Mid(findc, 6, 1)
        Range("P" & i).Value = ns(y)
    End If
  
Next
End Sub

```c#


```

excel中的 if statement 语法
我们在if中第一个位置输入我们要做判断的条件,第二个位置输入true对应的结果,第三个位置输入false对应的结果