打开文件时自动更新图比例尺错误的动态宏

我有一个对我来说毫无意义的问题。

Option Explicit

Private Sub Worksheet_Calculate()

Dim Chtob As ChartObject
Dim wks As Worksheet
Set wks = ActiveSheet

On Error GoTo Terminate

For Each Chtob In ActiveSheet.ChartObjects
With Chtob.Chart
    If wks.Range("$G$2").Value <> .Axes(xlCategory).MaximumScale Then
        .Axes(xlCategory).MaximumScale = wks.Range("$G$2").Value
    End If
    If wks.Range("$C$2").Value <> .Axes(xlCategory).MinimumScale Then
        .Axes(xlCategory).MinimumScale = wks.Range("$C$2").Value
    End If
    If wks.Range("$G$2").Value <> .Axes(xlCategory, xlSecondary).MaximumScale Then
        .Axes(xlCategory, xlSecondary).MaximumScale = wks.Range("$G$2").Value
    End If
    If wks.Range("$C$2").Value <> .Axes(xlCategory, xlSecondary).MinimumScale Then
        .Axes(xlCategory, xlSecondary).MinimumScale = wks.Range("$C$2").Value
    End If
End With
Next

Exit Sub
Terminate:
MsgBox "Storm Event Not Valid, Please check if such event number exists"
End

Exit Sub

在具有两个图表的选项卡上使用此宏。当某个单元格发生更改时,宏会更新图形比例。然后,此选项卡将重复多次以显示不同的时间事件。
当其他人尝试打开此文件时,就会出现此问题。打开文件的那一刻,它们弹出的错误与创建的选项卡数量一样多。由于某种原因,这会导致带有不同图形的其他选项卡重置其x比例。此不同的选项卡没有附加动态宏,也没有使用其他宏。

我想说的是,不同版本的Excel可能是问题的一部分,但是有时这种情况不会发生。

它的工作方式是,当有人在单元格B2中输入错误的值时,宏将无法执行。因此,无需进行调试,而是会收到一条错误消息。所以我需要宏的错误部分在那儿。

我应该提到的是,该选项卡还具有另一个动态宏,如果同一单元格发生更改,该宏将自动重命名该选项卡的名称。

Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$2" Then
    If Not Target.HasFormula Then
        If Not Target.Value = vbNullString Then
             On Error GoTo ErrHandler
             ActiveSheet.Name = "Event" & " " & Target.Value
        End If
    End If
End If
Exit Sub
ErrHandler:
MsgBox "Error " & Err & ":" & Error(Err)
On Error GoTo 0
End Sub

由于斯科特提出的意见,我的问题从来没有POP操作再次我刚换Set wks = ActivesheetSet wks = Me,然后所有的改变wks,以Me在脚本

Option Explicit

Private Sub Worksheet_Calculate()

Dim Chtob As ChartObject
Dim wks As Worksheet
Set wks = Me

On Error GoTo Terminate

For Each Chtob In Me.ChartObjects
    With Chtob.Chart
  If wks.Range("$G$2").Value <> .Axes(xlCategory).MaximumScale Then
    .Axes(xlCategory).MaximumScale = wks.Range("$G$2").Value
  End If
  If wks.Range("$C$2").Value <> .Axes(xlCategory).MinimumScale Then
    .Axes(xlCategory).MinimumScale = wks.Range("$C$2").Value
        End If
  If wks.Range("$G$2").Value <> .Axes(xlCategory, xlSecondary).MaximumScale Then
    .Axes(xlCategory, xlSecondary).MaximumScale = wks.Range("$G$2").Value
  End If
  If wks.Range("$C$2").Value <> .Axes(xlCategory, xlSecondary).MinimumScale Then
    .Axes(xlCategory, xlSecondary).MinimumScale = wks.Range("$C$2").Value
        End If
    End With
Next

    Exit Sub
Terminate:
    MsgBox "Storm Event Not Valid, Please check if such event number exists"
    End

End Sub

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章