2016-11-28 2 views
2

Я пытаюсь написать VBA, который сделает чек, чтобы убедиться, что диаграмма имеет определенный заголовок. Это то, что я имею прямо сейчас.VBA, чтобы найти название диаграммы и сравнить с строкой

Sub check_chart_title() 

Worksheets(1).ChartObjects(3).Activate 

With ActiveWorkbook.ActiveChart 
    .HasTitle = True 
    .ChartTitle.Select 
End With 

    If Selection = "Sales" Then 'code crashes here 
     x = "good" 'proceed to the rest of the code, no chart title mismatch 
    Else: x = "bad" 'specific action to take if there is a chart title mismatch 
    End If 
End Sub 

Я знаю, что проблема связана с условием оператора if. Но я не смог найти способ запустить условие в заголовке диаграммы. Все, что мне нужно, это код, который может определить, соответствует ли название диаграммы определенной строке.

Любая помощь очень ценится.

ответ

3

Вместо того, чтобы выбрать название диаграммы, проверьте его, просто положите его в свой IF.

With ActiveWorkbook.ActiveChart 
    .HasTitle = True 
    .ChartTitle.Select 
    If .ChartTitle.Text = "Sales" Then 'code crashes here 
     x = "good" 'proceed to the rest of the code, no chart title mismatch 
    Else 
    x = "bad" 'specific action to take if there is a chart title mismatch 
    End If 
End With 
+0

отлично работает , Я определенно усложнил это. Спасибо за простое решение. – Jarom

+0

Я отредактировал его, чтобы включить инструкцию 'With'. Но будьте осторожны, если вы сделаете это так, как они останутся в вашем коде внутри, если на него повлияет 'With'. –

1

Вы всегда можете попробовать это, если вы хотите, вобрать в with:

Dim myChart As Chartobject 
set myChart = Sheets(1).ChartObjects(3) 
With myChart 
    if .ChartTitle.Text = "Sales" then 
     x = "Good" 
    Else 
     x = "Bad" 
    end if 
    'Do some other stuff 
end with 

'

2

может быть вы Afte что-то вроде этого:

Sub check_chart_title()   
    Worksheets(1).ChartObjects(3).Activate 

    With ActiveChart 
     .HasTitle = True 
     .ChartTitle.Select 
     If .name = "Sales" Then 
      x = "good" 'proceed to the rest of the code, no chart title mismatch 
     Else 
      x = "bad" 'specific action to take if there is a chart title mismatch 
     End If 
    End With 
End Sub 
Смежные вопросы