Stworzyłem prosty wykres XY, który przyjmuje koordynaty w stopniach i umieszcza na mojej mapce miasta.
W etykietach labels przy każdym punkcie chciałbym, żeby opisane było miasto. Rozwiązanie znalazłem tutaj:
http://support.microsoft.com/kb/213750
Sub AttachLabelsToPoints() 'Dimension variables. Dim Counter As Integer, ChartName As String, xVals As String ' Disable screen updating while the subroutine is run. Application.ScreenUpdating = False 'Store the formula for the first series in "xVals". xVals = ActiveChart.SeriesCollection(1).Formula 'Extract the range for the data from xVals. xVals = Mid(xVals, InStr(InStr(xVals, ","), xVals, _ Mid(Left(xVals, InStr(xVals, "!") - 1), 9))) xVals = Left(xVals, InStr(InStr(xVals, "!"), xVals, ",") - 1) Do While Left(xVals, 1) = "," xVals = Mid(xVals, 2) Loop 'Attach a label to each data point in the chart. For Counter = 1 To Range(xVals).Cells.Count ActiveChart.SeriesCollection(1).Points(Counter).HasDataLabel = _ True ActiveChart.SeriesCollection(1).Points(Counter).DataLabel.Text = _ Range(xVals).Cells(Counter, 1).Offset(0, -1).Value Next Counter End Sub
Obok nazw miast jest kolumna X, w stopniach i dziesiętnych ustawiłem skalę na bezwzględną z zakresami szerokości i długości geograficznej dla Polski. Klikam wykres, by był aktywny, uruchamiam makro i przy każdym punkcie jest miasto.
OK. Ale teraz chciałbym na tej mapie przedstawić wartości z kolejnej kolumny. Na przykład chciałbym:
- zróżnicować wielkość punktów/markers albo,
- zróżnicować wielkość czcionki napisu miasta.
Stąd chciałbym zapytać o przykładowe rozwiązania, sposoby, doświadczenia w kontroli VBA nad parametrami etykiet i punktów, np. wielkością (czcionki) etykiet i punktów. Czy łatwo byłoby przerobić np. rozwiązanie powyższe, by przypisywało każdemu punktowi/markerowi wielkość zależną od wartości w pierwszej kolumnie? Albo inną wielkość czcionki etykiecie/opisowi/label?
Z góry dziękuję za ciekawe podpowiedzi.
PS. Na razie poradziłem sobie, nakładając kilka takich wykresów na siebie i w pierwszej kolumnie umieszczając mikrowykresiki funkcja =rept("|",znormalizowana_wartość), ale nie jest to rozwiązanie idealne.