Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
コメントの位置を指定する
投稿日時: 22/01/16 13:09:45
投稿者: TI

あるシートのデータの内容を別のシートにコメントとして追加する処理を
行っています。
 
その際に、ウィンドウの固定をしているため、単にコメントを追加した場合
コメントが見えにくくなる場合があるため、コメントの位置を指定できればと
考えています。
 
以下のように記述をしたのですが、位置が変わらないのですが、原因が
どうしてもわかりません。
 
'勤務希望の内容をコメントに追加
Range(Ws.Cells(i, j).Address(False, False)).AddComment _
                                    WsHope.Cells(i, j).Value
 
'コメントの位置をセルの上部に合わせる
With Range(Ws.Cells(i, j).Address(False, False)).Comment.Shape
    .Top = Range(Ws.Cells(i + 1, j).Address(False, False)).Top
     
End With
 
CellをRangeに変換する方法がスマートなやり方がわからず、上記の
様に記載をしております。
 
ヒントだけでもご教授いただければ、助かります。
宜しくお願い申し上げます。

回答
投稿日時: 22/01/16 14:02:20
投稿者: WinArrow
投稿者のウェブサイトに移動

引用:
ウィンドウの固定をしているため、単にコメントを追加した場合
コメントが見えにくくなる

ウィンドウの固定の方法とコメント設定したセルの関係を
具体的に説明して貰えますか?
 
引用:

Range(Ws.Cells(i, j).Address(False, False)).AddComment _
                                    WsHope.Cells(i, j).Value

この記述は、アクテイブシートのセルがコメント設定対象セルになります。
意識していますか?
 
もし
Wsシートのセルにコメントを設定するのでしたら。
Ws.Cells(i, j).AddComment WsHope.Cells(i, j).Value
にしましょう。

投稿日時: 22/01/16 16:22:48
投稿者: TI

ご返信ありがとうございます。
 

引用:

ウィンドウの固定の方法とコメント設定したセルの関係を
具体的に説明して貰えますか?

 
ウィンドウの固定は、「表示」→「ウィンドウの固定」で行っています。
 
勤務表の作成支援用のファイルを作っており、「勤務表」と「勤務希望」の
2つのシートがあります。
こちらの2つのシートは枠組みは全く同じになっています。
 
勤務希望シートのCells(3,2)に勤務希望のデータが登録されている場合
勤務表シートのCells(3,2)に勤務希望の内容をコメントとして登録を
しています。
 
引用:

この記述は、アクテイブシートのセルがコメント設定対象セルになります。
意識していますか?

 
完全に失念しておりました。
たまたま、動作確認の際にコメントを登録したいシートを開いた状態で
動作確認をおこなっていたため、うまくいったように見えており、気づいて
おりませんでした。
 
Range → Ws.Range
に変更をしてみましたが、結果は変わりませんでした。

回答
投稿日時: 22/01/16 17:24:51
投稿者: MMYS

やりたいことは、こういうことですか。
 

  Dim rng  As Range
  Dim come As Comment

  Set rng = ActiveCell
  Set come = rng.AddComment("コメント")
  come.Visible = True
  come.Shape.Top = rng.Top + 10
  come.Shape.Left = rng.Left + rng.Width + 10

 
 
 
TI さんの引用:

CellをRangeに変換する方法がスマートなやり方がわからず、上記の
様に記載をしております。

下記のように記述しましょう。
 
Ws.Cells(i, j).AddComment WsHope.Cells(i, j).Value
 
 

回答
投稿日時: 22/01/16 17:34:40
投稿者: WinArrow
投稿者のウェブサイトに移動

>ウィンドウの固定は、「表示」→「ウィンドウの固定」で行っています。
表現が正しくありません。

ウィンドウの固定は、「表示」→「ウィンドウの固定」で行っています。
 
何処のセルで分割しているのでしょう?
 
コメントの機能は、
(1)「セルにカーソルを載せると表示される」設定と
(2)「常に表示される」設定
があります。
 
(1)の場合は、表示位置はExcelお任せとなっています。
(2)の場合は、設定した表示位置が保持されます。
 
若し、(1)の方法で使用している場合は、(2)の方法を検討してみてください。
 
 
 

引用:
Range → Ws.Range
に変更をしてみましたが、結果は変わりませんでした。

 
以下、再掲
もし
Wsシートのセルにコメントを設定するのでしたら。
Ws.Cells(i, j).AddComment WsHope.Cells(i, j).Value
にしましょう。

回答
投稿日時: 22/01/16 18:18:31
投稿者: WinArrow
投稿者のウェブサイトに移動

追加レス
 
コメントの表示方法を「常に表示する」設定する場合、
プロパティ」も「セルに合わせて移動やサイズを変更しない」
を選択する方が無難です。

回答
投稿日時: 22/01/16 20:53:16
投稿者: simple

Cells(1,1) は それだけでRangeオブジェクトですよ。
Rangeオブジェクトとは異なるCellsオブジェクトなどというものはないですし、
変換は不要ですよ。
なにか勘違いがあるのでは?

回答
投稿日時: 22/01/16 22:54:27
投稿者: WinArrow
投稿者のウェブサイトに移動

あなたは、質問を2つしています。
↓は、2番目の「CellをRangeに変換する方法がスマートなやり方がわからず」に端を発して、
シートで修飾しないと、トラブルになるよ・・・というアドバイスです。

引用:

この記述は、アクテイブシートのセルがコメント設定対象セルになります。
意識していますか?


回答
引用:

Range → Ws.Range
に変更をしてみましたが、結果は変わりませんでした。

「ws」を付けた(シートで修飾)だけのことですが、
まわりくどいコードをすっきりさせる意味のコードを提案しました。
 
1番目の問題は、コメントの表示位置ですよね。
前レスで、2つの使い方(「表示の方法」)をアドバイスしました。
使い方に関することなので、回答者が決めることではありません。
検討してみてください。
 
 

投稿日時: 22/01/18 22:42:19
投稿者: TI

皆様、アドバイスありがとうございます。
 
WinArrow様

引用:

コメントの機能は、
(1)「セルにカーソルを載せると表示される」設定と
(2)「常に表示される」設定
があります。
  
(1)の場合は、表示位置はExcelお任せとなっています。
(2)の場合は、設定した表示位置が保持されます。

 
そうなのですね。
(1)「セルにカーソルを載せると表示される」設定と
しておりました。
ただ、「常に表示される」では画面が見づらくなるため、
やはり(1)のままで進めていきたいと思います。
 
引用:

何処のセルで分割しているのでしょう?

 
19行目で分割をしております。
分割をしている、最初の行のコメントが特にみづらく
なるため、今回の質問をさせていただきました。
 
RangeとCellsの件も改めて、しっかりと勉強して
見たいと思います。
 
本当に皆さま、ありがとうございます。