2016-11-28 3 views
2

Ich versuche, einige VBA schreiben, die eine Überprüfung durchführen, um sicherzustellen, dass ein Diagramm einen bestimmten Titel hat. Das habe ich gerade jetzt.VBA, um Titel zu finden und mit Zeichenfolge zu vergleichen

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 

Ich weiß, dass das Problem mit der Bedingung der if-Anweisung ist. Aber ich war nicht in der Lage, eine Möglichkeit zu finden, eine Bedingung auf dem Charttitel auszuführen. Alles, was ich brauche, ist Code, der erkennen kann, ob ein Diagrammtitel einer bestimmten Zeichenfolge entspricht.

Jede Hilfe wird sehr geschätzt.

Antwort

3

Anstatt den Diagrammtitel auszuwählen und dann zu testen, geben Sie ihn einfach in Ihre IF Anweisung ein.

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

funktioniert perfekt . Ich war definitiv dabei, dies zu verkomplizieren. Danke für die einfache Lösung. – Jarom

+0

Ich habe es bearbeitet, um Ihre 'With' Aussage zu integrieren. Aber seien Sie vorsichtig, wenn Sie es so machen, wie sie Ihren Code innerhalb des If ruhen, wird durch das 'With' beeinflusst. –

1

Man könnte immer dies versuchen, wenn Sie die with integrieren möchten:

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

kann sein, du bist afte etwas wie folgt aus:

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 
Verwandte Themen