Excel VBA“;如果结束,则不带块如果";-VBA错误

Excel VBA“;如果结束,则不带块如果";-VBA错误,excel,excel-2010,vba,Excel,Excel 2010,Vba,我不明白为什么VBA在这件事上对我大喊大叫。非常简单的代码,只涉及一个if语句,它显然有一个“开始”if和一个匹配的结束if。我是一名VB.NET开发人员,因此可能缺少语法上的差异 Sub splitter() Dim line() As String Dim rng As Range Dim row As Range Dim cell As Range For Each row In rng.Rows If row.Value <&g

我不明白为什么VBA在这件事上对我大喊大叫。非常简单的代码,只涉及一个if语句,它显然有一个“开始”if和一个匹配的结束if。我是一名VB.NET开发人员,因此可能缺少语法上的差异

 Sub splitter()
   Dim line() As String
   Dim rng As Range
   Dim row As Range
   Dim cell As Range
      For Each row In rng.Rows
        If row.Value <> "" Then
            line = Split(Range(row, 1), ",")
            Select Case line(0)
               Case "Desktop"
                   Range(row, 8).Value = "Desktop"
               Case "Laptop"
                   Range(row, 8).Value = "Laptop"
               Case "Server"
                   Range(row, 8).Value = "Server"
               Case Else
                   Range(row, 8).Value = "N/A"
        End If
       Next
    End Sub
子拆分器()
作为字符串的Dim line()
变暗rng As范围
暗行作为范围
暗淡单元格作为范围
对于rng.行中的每一行
如果row.Value为“”,则
行=拆分(范围(第1行),“,”)
选择案例行(0)
案例“桌面”
范围(第8行)。Value=“桌面”
案例“笔记本电脑”
范围(第8行)。Value=“笔记本电脑”
案例“服务器”
范围(第8行)。Value=“服务器”
其他情况
范围(第8行)。Value=“不适用”
如果结束
下一个
端接头

具体地说,最终结果是,它将基于从“父”下拉列表(范围(行,1))中所做的选择填充“子”下拉列表(范围(行,8))。因为问题会出现,所以我使用VBA执行此操作的原因是,我可以利用Split()函数来创建父下拉列表中的项目,例如“Desktop,Dell,745”。另外,我是一个比excel开发人员更好的程序员。

您的select语句需要一个结尾:

Select Case line(0)
   Case "Desktop"
       Range(row, 8).Value = "Desktop"
   Case "Laptop"
       Range(row, 8).Value = "Laptop"
   Case "Server"
       Range(row, 8).Value = "Server"
   Case Else
       Range(row, 8).Value = "N/A"
End Select

谢谢你,先生!我将投票赞成作为答案。但是,通过该更改,我得到了运行时错误“91”:未设置对象变量或with block变量。我所有的Dim'd变量都必须设置为某个值(或“Nothing”)?没关系,我看到了问题。我需要设置我的rng范围。谢谢