Excel VBA質問箱 IV

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

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


4888 / 13646 ツリー ←次へ | 前へ→

【53795】取得した変数を全てセルに表示させるには? かおり 08/2/7(木) 16:30 質問[未読]
【53798】Re:取得した変数を全てセルに表示させるに... VBWASURETA 08/2/7(木) 17:32 回答[未読]
【53815】Re:取得した変数を全てセルに表示させるに... かおり 08/2/8(金) 10:25 お礼[未読]
【53826】Re:取得した変数を全てセルに表示させるに... VBWASURETA 08/2/8(金) 12:44 発言[未読]
【53829】Re:取得した変数を全てセルに表示させるに... かおり 08/2/8(金) 14:31 お礼[未読]

【53795】取得した変数を全てセルに表示させるには...
質問  かおり  - 08/2/7(木) 16:30 -

引用なし
パスワード
   たびたびすみません;;
前回データラベルの取得方法について質問させていただいた超初心者です。
(環境はExcel2000です。)
コード表記についてまたまた質問させてください。


アクティブなシートの、特定のグラフの全てのデータラベルの値を取得し、
ラインフィードで分割して値を取得する下記のコードを書いています。

Sub 作成中()

Dim co As ChartObject
Dim pp As Point
Dim DT As Variant
Dim bunrui As String 'ラベルの値を格納
Dim suuchi As String 'パーセントの値を格納

Set co = ActiveSheet.ChartObjects("グラフ 8") '任意のグラフを指定
co.Activate
  For Each pp In co.Chart.SeriesCollection(1).Points
    DT = Split(pp.DataLabel.Caption, vbLf) '改行でラベルの文字列を分割
    bunrui = DT(0)
    suuchi = DT(1)
       
    Range("A265").Select '抽出した文字列を表示するセルの場所を指定
   
   If bunrui <> "" Then
    Do
      ActiveCell.FormulaR1C1 = bunrui
      ActiveCell.Offset(1, 0).Select
      ActiveCell.FormulaR1C1 = suuchi
      ActiveCell.Offset(-1, 1).Select
    Loop Until bunrui <> ""
   End If
  Next
  
End Sub

やりたいこととしては、取得した値を

(例)
    A        B        C
1    4月        5月        6月
2    10%        15%        5%

…のように、全てを表示させたいのです。


上記コードでは「ActiveCell.Offset(-1, 1).Select」で右上のセルに移動し、
If〜ThenとDo〜Loop処理で取得した値を順順に表示させようと思いましたが、
何か勘違いをしているのか、うまくいきません(>_<)。
上記のコードですと、最後のデータラベルの値のみ、
A1、A2に表示して最後にB1にセルを選択。。。で処理が終わってしまいます。
例えば、(例)でラベル「6月」が最後のデータラベルだとすると、A1に「6月」、A2に「5%」と表示され処理が終了します。

なんだか当たり前のことを間違えているような気がして大変お恥ずかしい限りですが、
なにとぞご教授お願いいたします。

何か説明不足の場合はご指摘願います。

【53798】Re:取得した変数を全てセルに表示させる...
回答  VBWASURETA  - 08/2/7(木) 17:32 -

引用なし
パスワード
   ▼かおり さん:
こんにちは。

見た感じから多分予測してましたが、
念のために、以下のソースをデバックして見せて頂きました。
(これ前回質問されてますよね?その続きとか書いておいた方が良いですよ。グラフ作るのにちょっと時間掛かりました^^;)

>Sub 作成中()
>
>Dim co As ChartObject
>Dim pp As Point
>Dim DT As Variant
>Dim bunrui As String 'ラベルの値を格納
>Dim suuchi As String 'パーセントの値を格納
>
>Set co = ActiveSheet.ChartObjects("グラフ 8") '任意のグラフを指定
>co.Activate
>  For Each pp In co.Chart.SeriesCollection(1).Points
>    DT = Split(pp.DataLabel.Caption, vbLf) '改行でラベルの文字列を分割
>    bunrui = DT(0)
>    suuchi = DT(1)
>       
>    Range("A265").Select '抽出した文字列を表示するセルの場所を指定
>   
>   If bunrui <> "" Then
>    Do
>      ActiveCell.FormulaR1C1 = bunrui
>      ActiveCell.Offset(1, 0).Select
>      ActiveCell.FormulaR1C1 = suuchi
>      ActiveCell.Offset(-1, 1).Select
>    Loop Until bunrui <> ""
>   End If
>  Next
>  
>End Sub


で、問題は

>    Range("A265").Select '抽出した文字列を表示するセルの場所を指定

これです。
固定の位置になってますから全部上書きされます。


ここでずれてるイメージだったかも知れませんが

>      ActiveCell.FormulaR1C1 = bunrui
>      ActiveCell.Offset(1, 0).Select
>      ActiveCell.FormulaR1C1 = suuchi
>      ActiveCell.Offset(-1, 1).Select

ここは同じセルを上下されているだけです。

横にずらせれば見えるはずなので

>    Range("A265").Select '抽出した文字列を表示するセルの場所を指定



    Y = Y + 1
    ActiveSheet.Cells(265, 1 + Y).Select '抽出した文字列を表示するセルの場所を指定

にするだけで見れると思いますよ。

【53815】Re:取得した変数を全てセルに表示させる...
お礼  かおり  - 08/2/8(金) 10:25 -

引用なし
パスワード
   VBWASURETAさん

こんにちわ!
こちらの説明不足に関わらず丁寧に教えていただいてありがとうございます。。。
#すみません、前回の質問のURLを本文に入れたら投稿できなくなってしまって、消してしまいました。せめてタイトルでも書いておけばよかったです。ほんとうにすみませんっ(><)。

>    Y = Y + 1
>    ActiveSheet.Cells(265, 1 + Y).Select '抽出した文字列を表示するセルの場所を指定

こちらの方法で無事やりたいことが出来ました!!

ありがとうございます。またよろしくお願いいたします。m(_ _)m

【53826】Re:取得した変数を全てセルに表示させる...
発言  VBWASURETA  - 08/2/8(金) 12:44 -

引用なし
パスワード
   ▼かおり さん:

>#すみません、前回の質問のURLを本文に入れたら投稿できなくなってしまって、消してしまいました。せめてタイトルでも書いておけばよかったです。ほんとうにすみませんっ(><)。

あー、URLは直リンク禁止されているみたいなので制限されているみたいですよ。
なので、「ht p://〜」のスペースとか「www.〜」以降にして投稿すると出来るみたいです。

【53829】Re:取得した変数を全てセルに表示させる...
お礼  かおり  - 08/2/8(金) 14:31 -

引用なし
パスワード
   >VBWASURETAさん

またまた教えてくださってありがとうございます☆
次回からは直リンクにならないように記載することとします。

ありがとうございました♪

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