Excelシート(ワークシート上の)がデータを取得しているワークシートを識別できるようにする必要があります。シリーズ1が参照しているデータシートだけが必要です。私は.SeriesCollection(1).Formulaからシート名を抽出しようとし始めましたが、それは本当に複雑になります。ここで私がこれまで持っているものです:ExcelチャートがVBAを使用して参照しているワークシートを返します
Sub GetChartDataSheet()
Dim DataSheetName As String
Dim DataSheet As Worksheet
DataSheetName = ActiveChart.SeriesCollection(1).Formula
DataSheetName = Left(DataSheetName, InStr(1, DataSheetName, "!$") - 1)
DataSheetName = WorksheetFunction.Replace(DataSheetName, 1, Len("=series("), "")
If Left(DataSheetName, 1) = "'" And Right(DataSheetName, 1) = "'" Then DataSheetName = Mid(DataSheetName, 2, Len(DataSheetName) - 2)
DataSheetName = Replace(DataSheetName, "''", "'")
Set DataSheet = Sheets(DataSheetName)
End Sub
が、これは多くのケースで動作しますが、私のユーザーは、(例えばSh'e E $ ,,トン3 $を!)奇妙なワークシート名を持っている場合それは失敗する。同じことは、シリーズ1は、例えば.SeriesCollection(1).Formula = "=SERIES(**"Hell,o !"**,'Sh''e e$,,t!3!$'!$B$2:$B$18,'Sh''e e$,,t!3!$'!$C$2:$C$18,1)"
(命名されている場合。
行く私はそれがないのですが判明し、これは簡単なものであると思ったこの?
ばかげたワークシート名 – jsotola
乾杯の使用を停止することをユーザーに教えて!私は彼らに何度も伝えますが、私の警告に耳を傾けない人が常にいます! –
コードを実行する前にワークシート名を確認し、警告をポップアップします。ワークシートの名前を変更する... [a-zA-Z0-9]以外のものをアンダーラインで置き換える – jsotola