简体   繁体   English

VBA在Excel上给出错误

[英]VBA on excel giving error

I have an excel which runs on following VBA code. 我有一个在以下VBA代码上运行的excel。 Till last month it was working perfect , but now giving error. 直到上个月为止,它的工作情况完美无缺,但现在出现了错误。 Please help to sort the problem 请帮助解决问题

Sub SaveData()

    Dim i As Integer

    Clear
    Range("A1").Select

    For i = 1 To 1

        'Range("B4") = Cells(6 + i, 14)
        Range("F3") = "getting " & Range("B4")
        GetData
        Range("C7:Y95").Select
        Selection.Copy

        Sheets("FEED").Select
        Range("A1").Select
        ActiveSheet.Paste
        Sheets("Sheet2").Select

        Columns("Z:AV").Select
        Application.CutCopyMode = False
        Selection.Delete Shift:=xlToLeft
        Sheets("Sheet2").Visible = False

        Sheets("FEED").Visible = False

        Sheets("MAIN").Select
        Range("AA2").Select
        ActiveWorkbook.Connections("Connection").Delete
        ActiveWorkbook.Connections("Connection1").Delete
        '    ActiveWorkbook.Connections("Connection2").Delete
        ' ActiveWorkbook.Connections("Connection3").Delete

        Exit Sub
        Range("I8:I300").Select
        Selection.Copy
        Cells(8, 14 + i).Select
        Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone,     SkipBlanks:= _
            False, Transpose:=False
        Range("A1").Select
    Next i
    Range("F3") = ""
    Range("BF1").Select
    UpdateScale
    Colour
    Range("AY5").Select
End Sub

Sub GetData()

    Dim QuerySheet As Worksheet
    Dim DataSheet As Worksheet
    Dim EndDate As Date
    Dim StartDate As Date
    Dim Symbol As String
    Dim qurl As String
    Dim nQuery As Name


    Application.DisplayAlerts = False


    Set DataSheet = ActiveSheet

    StartDate = DataSheet.Range("B2").Value
    EndDate = DataSheet.Range("B3").Value
    Symbol = DataSheet.Range("B4").Value
    Range("C7").CurrentRegion.ClearContents



    qurl="http://www.nseindia.com/live_market/dynaContent/live_watch/option_chain/optionKeys.jsp?symbolCode=1309&symbol=" & Symbol
        qurl = qurl & "&symbol=" & Symbol & "&instrument=-&date=-&segmentLink=17&symbolCount=2&segmentLink=17"


    Range("b5") = qurl

 QueryQuote:
         With ActiveSheet.QueryTables.Add(Connection:="URL;" & qurl,     Destination:=DataSheet.Range("C7"))
            .BackgroundQuery = True
            .TablesOnlyFromHTML = False
            .REFRESH BackgroundQuery:=False
            .SaveData = True
        End With
        Exit Sub
        Range("C7").CurrentRegion.TextToColumns Destination:=Range("C7"), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
            Semicolon:=False, Comma:=True, Space:=False, other:=False

        Range(Range("C7"), Range("C7").End(xlDown)).NumberFormat = "mmm d/yy"
        Range(Range("D7"), Range("G7").End(xlDown)).NumberFormat = "0.00"
        Range(Range("H7"), Range("H7").End(xlDown)).NumberFormat = "0,000"
        Range(Range("I7"), Range("I7").End(xlDown)).NumberFormat = "0.00"


    With ThisWorkbook
        For Each nQuery In Names
            If IsNumeric(Right(nQuery.Name, 1)) Then
                nQuery.Delete
            End If
        Next nQuery
    End With

    'turn calculation back on
    Application.Calculation = xlCalculationAutomatic
    Application.DisplayAlerts = True
    Range("C7:I2000").Select
    Selection.Sort Key1:=Range("C8"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    Range("C1").Select
    Selection.ColumnWidth = 12

    '    UpdateScale

    Range("B4").Select

End Sub

Sub UpdateScale()
    Dim ChartVar As Chart
    Dim lMax As Long, lMin As Long

    On Error GoTo ScalingProblem
    'Assigns the values in the Min and Max ranges to variables.
    With Sheet1
        lMax = .Range("Max").Value
        lMin = .Range("Min").Value
        'Creates chart object.
        Set ChartVar = .ChartObjects("Chart 49").Chart

       With ChartVar.Axes(xlValue, xlPrimary)  'Adjusts the price axis
           .MinimumScale = lMin
           .MaximumScale = lMax
       End With

    End With
    Exit Sub

ScalingProblem:
    'RetrievalProblem:
    '    MsgBox "Unable to update chart scale.", vbCritical + vbOKOnly, "Scaling     Error"
End Sub

Sub Clear()
    '
    ' Clear Macro
    ' Macro recorded 3/13/2006 by Ponzo
    '

    '
    ActiveWindow.SmallScroll ToRight:=6
    Range("O8:X258").Select
    Selection.ClearContents
End Sub

Sub Colour()
    '
    ' Colour Macro
    ' Macro recorded 3/13/2006 by Ponzo

    Dim i As Integer, j As Integer, A As Double, B As Double, C As Double

    A = Range("AZ2")
    'B = Range("BA2")
    C = Range("BB2")

    For i = 1 To 10
        For j = 1 To 10

            If Cells(7 + i, 48 + j) < A Then
                Range("AZ3").Select
                Selection.Copy
                Cells(7 + i, 48 + j).Select
                Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone,     SkipBlanks:= _
                    False, Transpose:=False
            End If

            If (Cells(7 + i, 48 + j) >= A And Cells(7 + i, 48 + j) <= C) Then
                Range("BA3").Select
                Selection.Copy
                Cells(7 + i, 48 + j).Select
                Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone,     SkipBlanks:= _
                    False, Transpose:=False
            End If

            If Cells(7 + i, 48 + j) > C Then
                Range("BB3").Select
                Selection.Copy
                Cells(7 + i, 48 + j).Select
                Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone,     SkipBlanks:= _
                    False, Transpose:=False
            End If
        Next j
    Next i

    For i = 1 To 10
        '    Cells(7 + i, 48 + i) = ""
        Cells(7 + i, 48 + i).Select
        With Selection.Interior
            .ColorIndex = 16
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
        End With
    Next i

    For i = 1 To 10
        For j = 1 To 10

            If Cells(20 + i, 48 + j) < A Then
                Range("AZ3").Select
                Selection.Copy
                Cells(20 + i, 48 + j).Select
                Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone,     SkipBlanks:= _
                    False, Transpose:=False
            End If

            If (Cells(20 + i, 48 + j) >= A And Cells(20 + i, 48 + j) <= C) Then
                Range("BA3").Select
                Selection.Copy
                Cells(20 + i, 48 + j).Select
                Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone,     SkipBlanks:= _
                    False, Transpose:=False
            End If

            If Cells(20 + i, 48 + j) > C Then
                Range("BB3").Select
                Selection.Copy
                Cells(20 + i, 48 + j).Select
                Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone,     SkipBlanks:= _
                    False, Transpose:=False
            End If
        Next j
    Next i

    For i = 1 To 10
        '    Cells(20 + i, 48 + i) = ""
        Cells(20 + i, 48 + i).Select
        With Selection.Interior
            .ColorIndex = 16
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
        End With
    Next i
    Range("AY5").Select
End Sub

Sub REFRESH()
    '
    ' REFRESH Macro
    '

    '
    'Sheets("MAIN").Select
    Sheets("Sheet2").Visible = True
    'Sheets("MAIN").Select
    Sheets("FEED").Visible = True
    Sheets("Sheet2").Select
    SaveData
End Sub

Just Try this 试试这个

Go to START and in the RUN line type REGEDIT. 转到“开始”,然后在“运行”行中键入REGEDIT。

b. b。 In the registry navigate to 在注册表中导航到

HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings HKEY_CURRENT_USER \\ Software \\ Microsoft \\ Windows \\ CurrentVersion \\ Internet设置

c. C。 Right click Internet Settings and left click New > DWORD Value (32-bit) and name the new value “BypassSSLNoCacheCheck” without the quotes. 右键单击“ Internet设置”,然后单击“新建> DWORD值(32位)”,然后将新值命名为“ BypassSSLNoCacheCheck”(不带引号)。 Double click this value and give it a value of 1. 双击此值并将其值设置为1。

Sub SaveData() 子SaveData()

Dim i As Integer

Clear
Range("A1").Select

For i = 1 To 1

    'Range("B4") = Cells(6 + i, 14)
    Range("F3") = "getting " & Range("B4")
    GetData
    Range("C7:Y95").Select
    Selection.Copy

    Sheets("FEED").Select
    Range("A1").Select
    ActiveSheet.Paste
    Sheets("Sheet2").Select

    Columns("Z:AV").Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlToLeft
    Sheets("Sheet2").Visible = False

    Sheets("FEED").Visible = False

    Sheets("MAIN").Select
    Range("AA2").Select
    ActiveWorkbook.Connections("Connection").Delete
    ActiveWorkbook.Connections("Connection1").Delete
    '    ActiveWorkbook.Connections("Connection2").Delete
    ' ActiveWorkbook.Connections("Connection3").Delete

    Exit Sub
    Range("I8:I300").Select
    Selection.Copy
    Cells(8, 14 + i).Select
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
    Range("A1").Select
Next i
Range("F3") = ""
Range("BF1").Select
UpdateScale
Colour
Range("AY5").Select

End Sub 结束子

Sub GetData() 子GetData()

Dim QuerySheet As Worksheet
Dim DataSheet As Worksheet
Dim EndDate As Date
Dim StartDate As Date
Dim Symbol As String
Dim qurl As String
Dim nQuery As Name


Application.DisplayAlerts = False


Set DataSheet = ActiveSheet

StartDate = DataSheet.Range("B2").Value
EndDate = DataSheet.Range("B3").Value
Symbol = DataSheet.Range("B4").Value
Range("C7").CurrentRegion.ClearContents



qurl = "http://www.nseindia.com/live_market/dynaContent/live_watch/option_chain/optionKeys.jsp?symbolCode=1309&symbol=" & Symbol
    qurl = qurl & "&symbol=" & Symbol & "&instrument=-&date=-&segmentLink=17&symbolCount=2&segmentLink=17"


Range("b5") = qurl

QueryQuote: With ActiveSheet.QueryTables.Add(Connection:="URL;" & qurl, Destination:=DataSheet.Range("C7")) .BackgroundQuery = True .TablesOnlyFromHTML = False .REFRESH BackgroundQuery:=False .SaveData = True End With Exit Sub Range("C7").CurrentRegion.TextToColumns Destination:=Range("C7"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _ Semicolon:=False, Comma:=True, Space:=False, other:=False QueryQuote:使用ActiveSheet.QueryTables.Add(Connection:=“ URL;”&qurl,目标:= DataSheet.Range(“ C7”))。BackgroundQuery = True .TablesOnlyFromHTML = False .REFRESH BackgroundQuery:= False .SaveData = True结束使用Exit Sub Range(“ C7”)。CurrentRegion.TextToColumns目标:= Range(“ C7”),DataType:= xlDelimited,_ TextQualifier:= xlDoubleQuote,ConsecutiveDelimiter:= False,Tab:= True,_分号:= False,逗号:= True,空格:= False,其他:= False

    Range(Range("C7"), Range("C7").End(xlDown)).NumberFormat = "mmm d/yy"
    Range(Range("D7"), Range("G7").End(xlDown)).NumberFormat = "0.00"
    Range(Range("H7"), Range("H7").End(xlDown)).NumberFormat = "0,000"
    Range(Range("I7"), Range("I7").End(xlDown)).NumberFormat = "0.00"


With ThisWorkbook
    For Each nQuery In Names
        If IsNumeric(Right(nQuery.Name, 1)) Then
            nQuery.Delete
        End If
    Next nQuery
End With

'turn calculation back on
Application.Calculation = xlCalculationAutomatic
Application.DisplayAlerts = True
Range("C7:I2000").Select
Selection.Sort Key1:=Range("C8"), Order1:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("C1").Select
Selection.ColumnWidth = 12

'    UpdateScale

Range("B4").Select

End Sub 结束子

Sub UpdateScale() Dim ChartVar As Chart Dim lMax As Long, lMin As Long Sub UpdateScale()昏暗的ChartVar视图表的昏暗lMax的长度,lMin的长度

On Error GoTo ScalingProblem
'Assigns the values in the Min and Max ranges to variables.
With Sheet1
    lMax = .Range("Max").Value
    lMin = .Range("Min").Value
    'Creates chart object.
    Set ChartVar = .ChartObjects("Chart 49").Chart

   With ChartVar.Axes(xlValue, xlPrimary)  'Adjusts the price axis
       .MinimumScale = lMin
       .MaximumScale = lMax
   End With

End With
Exit Sub

ScalingProblem: 'RetrievalProblem: ' MsgBox "Unable to update chart scale.", vbCritical + vbOKOnly, "Scaling Error" End Sub ScalingProblem:'RetrievalProblem:'MsgBox“无法更新图表比例。”,vbCritical + vbOKOnly,“ Scaling Error” End Sub

Sub Clear() ' ' Clear Macro ' Macro recorded 3/13/2006 by Ponzo ' Sub Clear()''Clear Macro'宏录制于3/13/2006,由Ponzo'

'
ActiveWindow.SmallScroll ToRight:=6
Range("O8:X258").Select
Selection.ClearContents

End Sub 结束子

Sub Colour() ' ' Colour Macro ' Macro recorded 3/13/2006 by Ponzo Sub Colour()''Color Macro'Ponzo录制3/13/2006宏

Dim i As Integer, j As Integer, A As Double, B As Double, C As Double

A = Range("AZ2")
'B = Range("BA2")
C = Range("BB2")

For i = 1 To 10
    For j = 1 To 10

        If Cells(7 + i, 48 + j) < A Then
            Range("AZ3").Select
            Selection.Copy
            Cells(7 + i, 48 + j).Select
            Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
                False, Transpose:=False
        End If

        If (Cells(7 + i, 48 + j) >= A And Cells(7 + i, 48 + j) <= C) Then
            Range("BA3").Select
            Selection.Copy
            Cells(7 + i, 48 + j).Select
            Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
                False, Transpose:=False
        End If

        If Cells(7 + i, 48 + j) > C Then
            Range("BB3").Select
            Selection.Copy
            Cells(7 + i, 48 + j).Select
            Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
                False, Transpose:=False
        End If
    Next j
Next i

For i = 1 To 10
    '    Cells(7 + i, 48 + i) = ""
    Cells(7 + i, 48 + i).Select
    With Selection.Interior
        .ColorIndex = 16
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
    End With
Next i

For i = 1 To 10
    For j = 1 To 10

        If Cells(20 + i, 48 + j) < A Then
            Range("AZ3").Select
            Selection.Copy
            Cells(20 + i, 48 + j).Select
            Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
                False, Transpose:=False
        End If

        If (Cells(20 + i, 48 + j) >= A And Cells(20 + i, 48 + j) <= C) Then
            Range("BA3").Select
            Selection.Copy
            Cells(20 + i, 48 + j).Select
            Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
                False, Transpose:=False
        End If

        If Cells(20 + i, 48 + j) > C Then
            Range("BB3").Select
            Selection.Copy
            Cells(20 + i, 48 + j).Select
            Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
                False, Transpose:=False
        End If
    Next j
Next i

For i = 1 To 10
    '    Cells(20 + i, 48 + i) = ""
    Cells(20 + i, 48 + i).Select
    With Selection.Interior
        .ColorIndex = 16
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
    End With
Next i
Range("AY5").Select

End Sub 结束子

Sub REFRESH() ' ' REFRESH Macro ' Sub REFRESH()''REFRESH宏'

'
'Sheets("MAIN").Select
Sheets("Sheet2").Visible = True
'Sheets("MAIN").Select
Sheets("FEED").Visible = True
Sheets("Sheet2").Select
SaveData

End Sub 结束子

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM