Vba 运行代码时不会发生任何事情
大家好,这是我的密码 但当我运行它时,什么也没有发生,显然它在中断模式(调试)下运行得很好。 我能做什么?干杯Vba 运行代码时不会发生任何事情,vba,web-services,excel,Vba,Web Services,Excel,大家好,这是我的密码 但当我运行它时,什么也没有发生,显然它在中断模式(调试)下运行得很好。 我能做什么?干杯 Option Explicit Sub Button2_Click() Dim i&, j&, n& 'as Long Dim Ws As Worksheet Set Ws = ActiveSheet n = Ws.Cells(Ws.Rows.Count, "A").End(xlUp).Row For i
Option Explicit
Sub Button2_Click()
Dim i&, j&, n& 'as Long
Dim Ws As Worksheet
Set Ws = ActiveSheet
n = Ws.Cells(Ws.Rows.Count, "A").End(xlUp).Row
For i = 1 To n
Select Case .Cells(i, "A").Value2
Case "2015 Xor 2011": .Cells(i, 2).Value2 = "blue"
Case "2001 Xor 2003": .Cells(i, 2).Value2 = "green"
Case "2014 Xor 2006": .Cells(i, 2).Value2 = "red"
End Select
j = j + 1
Next i
End With
End Sub
应该用颜色的名称来填充B栏,关于A栏中发现的年份我不确定j var在哪里起作用;我可以想象,它涉及到一些被认为对这个问题不重要的代码,这些代码被删除了
Sub Button2_Click()
Dim i As Long, j As Long, n As Long
Dim Ws As Worksheet
Set Ws = ActiveSheet
With Ws
n = Ws.Cells(Rows.Count, "A").End(xlUp).Row
For i = 1 To n
Select Case .Cells(i, "A").Value2
Case 2015, 2011
.Cells(i, 2).Value2 = "blue"
Case 2001, 2003
.Cells(i, 2).Value2 = "green"
Case 2014, 2006
.Cells(i, 2).Value2 = "red"
End Select
j = j + 1
Next i
End With
End Sub
可以用逗号分隔的列表进行比较。我不确定j变量在哪里起作用;我可以想象,它涉及到一些被认为对这个问题不重要的代码,这些代码被删除了
Sub Button2_Click()
Dim i As Long, j As Long, n As Long
Dim Ws As Worksheet
Set Ws = ActiveSheet
With Ws
n = Ws.Cells(Rows.Count, "A").End(xlUp).Row
For i = 1 To n
Select Case .Cells(i, "A").Value2
Case 2015, 2011
.Cells(i, 2).Value2 = "blue"
Case 2001, 2003
.Cells(i, 2).Value2 = "green"
Case 2014, 2006
.Cells(i, 2).Value2 = "red"
End Select
j = j + 1
Next i
End With
End Sub
可以使用逗号分隔的列表进行比较。请尝试下面的代码。您说过大约有20K行,所以所有的计算都是在阵列上进行的,以获得更好的性能
Sub Button2_Click()
Dim years As Variant
Dim colors() As Variant
Dim i As Long
Dim ws As Excel.Worksheet
Dim lastRow As Long
'------------------------------------------------------
Set ws = Excel.ActiveSheet
'Read the values from column A to array - it will make the calculations faster.
With ws
lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
years = .Range(.Cells(1, 1), .Cells(lastRow, 1))
End With
'Resize [colors] array to adjust its size to the size of [years] array.
ReDim colors(LBound(years, 1) To UBound(years, 1), 1 To 1)
For i = LBound(years, 1) To UBound(years, 1)
Select Case years(i, 1)
Case 2015, 2011: colors(i, 1) = "blue"
Case 2001, 2003: colors(i, 1) = "green"
Case 2014, 2006: colors(i, 1) = "red"
End Select
Next i
'Paste the result array back into the worksheet
ws.Cells(1, 2).Resize(UBound(years) - LBound(years) + 1, 1) = colors
End Sub
请尝试下面的代码。您说过大约有20K行,所以所有的计算都是在阵列上进行的,以获得更好的性能
Sub Button2_Click()
Dim years As Variant
Dim colors() As Variant
Dim i As Long
Dim ws As Excel.Worksheet
Dim lastRow As Long
'------------------------------------------------------
Set ws = Excel.ActiveSheet
'Read the values from column A to array - it will make the calculations faster.
With ws
lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
years = .Range(.Cells(1, 1), .Cells(lastRow, 1))
End With
'Resize [colors] array to adjust its size to the size of [years] array.
ReDim colors(LBound(years, 1) To UBound(years, 1), 1 To 1)
For i = LBound(years, 1) To UBound(years, 1)
Select Case years(i, 1)
Case 2015, 2011: colors(i, 1) = "blue"
Case 2001, 2003: colors(i, 1) = "green"
Case 2014, 2006: colors(i, 1) = "red"
End Select
Next i
'Paste the result array back into the worksheet
ws.Cells(1, 2).Resize(UBound(years) - LBound(years) + 1, 1) = colors
End Sub
在for循环之前n的值是多少?它不应该是Dim i,j,n而不是你有“End With”语句而不启动它吗?在什么条件下你想用蓝色填充B1单元格?单元格A1中是否有文本“2015 Xor 2011”?如果A1中只有数字2015?如果A1中有数字2011?在for循环中增加j有什么用?for循环之前n的值是多少?它不应该是暗淡的i,j,n吗?你有一个“结束于”语句,但不启动它。在什么条件下,你想用蓝色填充单元格B1?单元格A1中是否有文本“2015 Xor 2011”?如果A1中只有数字2015?如果A1中有数字2011?在for循环中增加j有什么用?@ulysse pacomekoudou有两件事:1)Ws的开头语句没有
。2) 当你制作一个这样的案例块时,案例“2015 Xor 2011”
你不会检查这个单元格是否等于2015或2011;事实上,您可以检查此单元格是否包含文本“2015 Xor 2011”。@ulysse pacomekoudou有几件事:1)Ws
的开头语句没有。2) 当你制作一个这样的案例块时,案例“2015 Xor 2011”
你不会检查这个单元格是否等于2015或2011;事实上,您检查此单元格是否包含文本“2015 Xor 2011”。