我正在尝试编写一个宏,该宏将采用字符串中的前两个字符,使用switch语句比较它们,然后将相应的信息输出到另一单元格列。我写了一个脚本,但是似乎什么也没做。我是VBA的新手,这就是为什么这让我头疼。
我尝试了几种在网上找到的不同方法。我看过使用Left()提取子字符串的示例,以及如何在VB中编写switch语句的示例。我不确定我的错误在哪里,它似乎可以正确编译,但是什么也不输出。
Sub PullLocation()
Dim i As Integer
For i = 2 To 170
Dim contents As String
contents = Left(Ai, 2)
Select Case contents
Case "FC"
Cells(i, AJ) = "Fort Collins"
Case "BR"
Cells(i, AJ) = "Broomfield"
Case "BO"
Cells(i, AJ) = "Boulder"
Case "CC"
Cells(i, AJ) = "Canon City"
Case "FR"
Cells(i, AJ) = "Franktown"
Case "FM"
Cells(i, AJ) = "Fort Morgan"
Case "GU"
Cells(i, AJ) = "Gunnison"
Case "GR"
Cells(i, AJ) = "Granby"
Case "GJ"
Cells(i, AJ) = "Grand Junction"
Case "GO"
Cells(i, AJ) = "Golden"
Case "LJ"
Cells(i, AJ) = "La Junta"
Case "LV"
Cells(i, AJ) = "La Veta"
Case "MO"
Cells(i, AJ) = "Montrose"
Case "SA"
Cells(i, AJ) = "Salida"
Case "SF"
Cells(i, AJ) = "State Forest"
Case "SS"
Cells(i, AJ) = "Steamboat Springs"
Case Else
End Select
Next i
End Sub
它应该包含两个代表缩写城市名称的字符。应该在另一列单元格中输出完整的城市名称,并通过将单元格留空来忽略任何不匹配的缩写。
我没有收到任何错误消息,但是我的Excel工作表中也没有任何变化。
答案 0 :(得分:0)
我猜正在发生的事与“ AJ”和“ Ai”有关。将AJ更改为36。Ai应该更改为“ Cells(i,35).Value”(AI处的值和任何行号)。我还将在循环开始之前放置“将内容作为字符串存储”,但在循环中保留“ contents = Left(Cells(i,35).Value,2)”。
它看起来像这样:
stdout_stream.clear();
stdout_stream.seekg(stdout_stream.tellg());