Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4677 / 13644 ツリー ←次へ | 前へ→

【55021】表のラベルが重ならないようにするには? ラメーン 08/4/11(金) 15:06 質問[未読]
【55169】Re:表のラベルが重ならないようにするには? VBWASURETA 08/4/18(金) 15:54 質問[未読]
【55193】Re:表のラベルが重ならないようにするには? yuu1 08/4/22(火) 11:28 回答[未読]
【55242】Re:表のラベルが重ならないようにするには? ラメーン 08/4/23(水) 17:46 質問[未読]
【55250】Re:表のラベルが重ならないようにするには? yuu1 08/4/24(木) 13:06 回答[未読]
【55252】Re:表のラベルが重ならないようにするには? VBWASURETA 08/4/24(木) 15:34 発言[未読]

【55021】表のラベルが重ならないようにするには?
質問  ラメーン  - 08/4/11(金) 15:06 -

引用なし
パスワード
   皆様いつもお世話になっております。

さて、グラフについて、11支店の達成率の折れ線グラフ作成を自動化したのですが、右につけたラベルがどの支店も達成率100%になると重なってしまい大変見苦しくなります。

ラベルだけ重ならないようにずらすことって出来るんでしょうか。

宜しくお願いいたします。m(__)m

【55169】Re:表のラベルが重ならないようにするに...
質問  VBWASURETA  - 08/4/18(金) 15:54 -

引用なし
パスワード
   ▼ラメーン さん:
こんにちは。

すみません。埋まりすぎて気づいてなかったです^^;
グラフのラベルは見た目ですからある程度揃えるのはあるとは思いますが、
どうにもならない場合はあります。
棒グラフとかグラフを変更するのはダメなのでしょうか?

【55193】Re:表のラベルが重ならないようにするに...
回答  yuu1  - 08/4/22(火) 11:28 -

引用なし
パスワード
   こんにちは。
>さて、グラフについて、11支店の達成率の折れ線グラフ作成を自動化したのですが、右につけたラベルがどの支店も達成率100%になると重なってしまい大変見苦しくなります。
>
>ラベルだけ重ならないようにずらすことって出来るんでしょうか。

DataLabelsオブジェクトでラベルは取得出来ますから
Left、Topプロパティで取得、設定が出来ます。
任意の位置にずらすことも簡単です。
一例を以下に示します。

Sub test1_DataLabel()
 Dim ii&, lbl As DataLabels, distance!, gap!
 Set lbl = ActiveChart.SeriesCollection(1).DataLabels
 distance = lbl.Font.Size * 0.8
 For ii = 2 To lbl.Count
  gap = lbl(ii).Top - lbl(ii - 1).Top
  If Abs(gap) < distance Then lbl(ii).Top = lbl(ii - 1).Top + distance * (IIf(Sgn(gap) = 1, 1, -1))
 Next
End Sub

【55242】Re:表のラベルが重ならないようにするに...
質問  ラメーン  - 08/4/23(水) 17:46 -

引用なし
パスワード
   ▼yuu1 さん:
埋もれた中から拾っていただき感謝です。
でもでも、なかなかうまく出来ません(@_*)

以下のように書いているのですが、どのように応用したらよいでしょうか。

' label_add  endr:取得行 endc:取得列  【右端の項目のみにデータラベル付加】
Dim x As Integer   ' x=現在行
Dim ii&, lbl As DataLabels, distance!, gap!
x = 1
  
  Do While x < endc
  
  ActiveChart.SeriesCollection(x).Points(endr).ApplyDataLabels AutoText:=True, _
    LegendKey:=False, ShowSeriesName:=True, ShowCategoryName:=False, _
    ShowValue:=False, ShowPercentage:=False, ShowBubbleSize:=False
    
  x = x + 1
  
  Set lbl = ActiveChart.SeriesCollection(1).DataLabels
 distance = lbl.Font.Size * 0.8
 For ii = 2 To lbl.Count
  gap = lbl(ii).Top - lbl(ii - 2).Top
  If Abs(gap) < distance Then lbl(ii).Top = lbl(ii - 1).Top + distance * (IIf(Sgn(gap) = 1, 1, -1))
 Next
  
  Loop
' label_add  end

【55250】Re:表のラベルが重ならないようにするに...
回答  yuu1  - 08/4/24(木) 13:06 -

引用なし
パスワード
   こんにちは。
>以下のように書いているのですが、どのように応用したらよいでしょうか。

ラベルの位置はDataLabelsオブジェクトのLeft、Topプロパティで取得、設定が
出来るわけですからお気にいるように設定してください。としか言えません。

そのグラフがどんなものかわかりませんから...
それとも、そのグラフを再現できるデータとマクロを示せますか。

【55252】Re:表のラベルが重ならないようにするに...
発言  VBWASURETA  - 08/4/24(木) 15:34 -

引用なし
パスワード
   ちょっと気になったので横から失礼します。
確かに円グラフや棒グラフだとVBAでも手動でも動いたと思いますが。
因みに折れ線グラフだと動かなかったのでグラフを変更した覚えがあります。
VBAで指定できるのでしょうか?

4677 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free