Страницы: 1
RSS
[ Закрыто ] Лечения от ошибки Run-time error 13 type mismatch, Правка конкретного простого макроса для лечения от ошибки Run-time error 13 type mismatch
 
Доброго времени суток!
Какой-то добрый человек сделал вот такой макрос (в файле во вложении). Суть в том, что там с помощью двух цифр на листе (выделены желтым) задается минимальное и максимальное значение по оси Х в диаграмме. Я макрос скачал и пытаюсь использовать. Но на листе при копировании и вставке (ctrl+c, ctrl+v) одновременно больше двух ячеек (то есть при копировании одной ячейке ошибки нет, а также неважно какие ячейки копировать, то есть даже пустые) каждый раз выскакивает уведомление об ошибке Run-time error 13 type mismatch. Если закрыть уведомление, то все работает. То есть на работу макроса это не влияет. Но выскакивающее окно раздражает и мешает. Почему оно выскакивает? Может ли кто-нибудь поправить код макроса, чтобы ошибки больше не было?
Через поиск на форуме искать ответ для меня бесполезно, так как я не программист и не понимаю как конкретно нужно поправить код в приложенном мной макросе. Я пытался что-то понять, но что-то пока я совсем в макросах чайник. Просьба помочь.
Изменено: yvrij - 03.02.2026 13:36:43
 
Исправлено.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Код
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Range("B14:C14")) Is Nothing Then
    Call График
  End If
End Sub
 
Ребята, огонь! Благодарю!
 
А как можно поправить код, чтобы еще ставить минимальные и максимальные значения по оси Y?
 
Код
Private Sub Worksheet_Activate()
  Call График
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Range("B14:C15")) Is Nothing Then
    Call График
  End If
End Sub

Private Sub График()
  ActiveSheet.ChartObjects("Диаграмма 2").Activate
  ActiveChart.Axes(xlCategory).MinimumScale = Range("B14") 'ось Х(xlCategory); осьY(xlValue)
  ActiveChart.Axes(xlCategory).MaximumScale = Range("C14") 'ось Х(xlCategory); осьY(xlValue)
  ActiveChart.Axes(xlValue).MinimumScale = Range("B15")
  ActiveChart.Axes(xlValue).MaximumScale = Range("C15")
  ActiveCell.Select
End Sub
 
Для разрозненных диапазонов.
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim ch As Chart
    Set ch = ChartObjects("Диаграмма 2").Chart

    If Not Intersect(Target, Range("B14")) Is Nothing Then ch.Axes(xlCategory).MinimumScale = Range("B14")
    If Not Intersect(Target, Range("C14")) Is Nothing Then ch.Axes(xlCategory).MaximumScale = Range("C14")
    If Not Intersect(Target, Range("B15")) Is Nothing Then ch.Axes(xlValue).MinimumScale = Range("B15")
    If Not Intersect(Target, Range("C15")) Is Nothing Then ch.Axes(xlValue).MaximumScale = Range("C15")
End Sub
 
Спасибо! Но есть финальный тупой вопрос :) Если на этом же листе я создам вторую подобную диаграмму, то как корректно продлить код макроса, чтобы задать такой же принцип изменение шкал для этой второй диаграммы. Пробовал копировать строки с изменением названий "График2", "Диаграмма 3" и т.д., но это ожидаемо приводит к нерабочему варианту.
 
Одна тема - Один вопрос
Ознакомьтесь с Правилами форума
Название и этой-то темы вопросы вызывает, Вы все в кучу валите
Согласие есть продукт при полном непротивлении сторон
Страницы: 1
Читают тему
Наверх