[[20100419084436]] 『行にあるコメントをまとめて一つのセルに表示させ』(きさね) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『行にあるコメントをまとめて一つのセルに表示させたい』(きさね)

保育園の出欠表をつくっているのですが、病欠理由をコメントにつける予定です。

月ごとに出欠表シートがあり、年間集計を別シートでおこなっています。

年間集計シートに一年間の病欠理由を園児別で表示したいのですが、可能でしょうか?

4月から3月(12か月分)シートのI9〜AM9のコメント→年間集計シートのH4

4月から3月(12か月分)シートのI10〜AM10のコメント→年間集計シートのH5

4月から3月(12か月分)シートのI11〜AM11のコメント→年間集計シートのH6



4月から3月(12か月分)シートのI43〜AM43のコメント→年間集計シートのH38

後でどんな理由で休んだ人が多いか 等の集計をすることはありません。

年間集計のシートで病欠理由を園児別で確認できるようにしたいのです。

マクロ初心者で自分の力だけでは解決できませんでした…

よろしくお願いします。

[エクセルのバージョン]
Excel2007

[OSのバージョンの例]
Windows Vista


 こんな感じで出来るとは思いますが
 1つのセルにまとめるという仕様がどうなのか・・・
 相当見づらくなりそうですし、コメントの文字数が多い場合には1つのセルに
 入りきらずにエラーになると思います。

  Sub test()
  Dim myMonth As Variant, dat(1 To 35, 1 To 1) As String, r As Range
  Dim i As Long, j As Long, m As Variant
  myMonth = Array("4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月", "1月", "2月", "3月")
  For Each m In myMonth
    For i = 1 To 35
      For Each r In Worksheets(m).Range("I" & i + 8 & ":AM" & i + 8)
        If Not r.Comment Is Nothing Then
          If dat(i, 1) = "" Then
            dat(i, 1) = r.Comment.Text
          Else
            dat(i, 1) = dat(i, 1) & "," & r.Comment.Text
          End If
        End If
      Next r
    Next i
  Next m
  Worksheets("年間集計").Range("H4:H38").Value = dat
  End Sub

 未テストです。
 (momo)


momo様 早速コメントありがとうございます。

>相当見づらくなりそうですし、コメントの文字数が多い場合には1つのセルに入りきらずにエラーになると思います。

病欠理由といっても、ただの熱や風邪等は記入しません。
大きな病気や怪我など、年度末に個別記録に記入する必要があるものだけですので、年間数個。文字数も1つのセルに入りきる量です。1つのセルにこだわってはいませんが、見やすいように左づめで表示されるならかまいません。

早速試してみましたが、エラーがでてしまいました。インデックスが有効範囲にありません。と出ました。

なにぶん初心者なもので問題点・解決方法がわかりません。

お分かりでしたら、お手数ですが、お教えいただきたく思います。


 4月〜3月のシートと年間集計というシートは全てありますか?
 半角全角も間違いなく確認してみてください。
 (momo)

 あと、書き忘れましたが標準モジュールで実行してくださいね。
 (momo)

 momo様 何度も親切にありがとうございます。
 違うデータを作って試してみましたら見事できました。感動です!
 ただ、今まで作っていたデータで試すと上記のようなエラーが出ます。
 私の今まで作っていたデータに問題があるようなので、自分で何とかしてみようと思います。
 基本もわからない初心者の質問にお答えいただきありがとうございました。

 特定のシートモジュールに書いているか
 シート名が微妙にでも違うか、くらいしか原因は無いと思います。
 新規データで動くだけで大丈夫でしたらいいのですが
 そうじゃない場合は、細かく確認してみてください。
 シート名にスペースがあったり、どの行でエラーになるのか・・・など。

 (momo)

 昨日自分で確認してみたところ、momo様の言うとおりシート名に半角スペースが入っていました。
 最後までご親切にありがとうございます。

 momo様はじめ皆様の親切に甘えて、もう一つ教えていただきたいのですが、コメント内にシート名やコメントを入れるセルに対応したセルデータを表示することはできるのでしょうか?
 コメントには病欠理由のほかに日付も記入するのですが自動で入る様にしたいのです。
 (例えばI14にコメントを入れたらシート名とI6が自動で表示される)
 シートには月、I6〜AM6には日が入っています。

 いろいろ質問して失礼だとは思いますが、よろしくお願いします

 (きさね)

 コメントの挿入時にはイベントが発生しません。
 イベントとはエクセルが何かをしたときに自動的に動作するマクロの事ですが
 それが無いとなるとコメントを挿入したときに自動で入れ込む事ができません。

 なんらかのボタンでコメントを挿入するか
 挿入したあとに入れる事は可能かもしれませんが
 (momo)

 現在コメントはボタンで挿入するようになっています

 Sub 挿入()

    ActiveCell.AddComment ("")
    ActiveCell.Comment.Visible = True

 End Sub

 ユーザー名を消すことは出来たのですが。。。

 コメントをボタンで挿入するのであれば可能なのでしょうか?
 可能ならばお教えいただきたいです。

 (きさね)


 ボタンでしたら、こんな感じで試してみてください

  Sub 挿入()
  With ActiveCell
    .AddComment(.Parent.Name & vbLf & .EntireColumn.Rows(6).Value).Visible = True
  End With
  End Sub

 (momo)

 うまく作動しました!ありがとうございます。
 これで思い描いた通りの出欠表を作ることが出来ると思います。
 このデータはPC未経験者も扱うので、出来るだけ簡単に操作出来るようにと思って作っていましたが、
 momo様のおかげで当初の予定以上のものが出来そうです。
 私自身も素人に毛が生えたみたいなものなので、エクセルがちゃんと使いこなせるように
 勉強します!
 したいと思います 
 するかな。。。

 本当 感謝!感謝!です ありがとうございました。

(きさね)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.