Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 运行代码时不会发生任何事情_Vba_Web Services_Excel - Fatal编程技术网

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”。