2017-03-09 15 views
0

ExcelスクロールバーとOFFSETメソッドを使用してExcelでスクロール可能なリストを作成しました。私の目標は、このリストのすべてのセルについてコメントを生成することです。各コメントには、それが接続されているセルの正確な内容が含まれている必要があります。私は、コードを割り当てたボタンを使ってコメントを生成します。最初に(コメントを生成する)ボタンをクリックし、その後スクロールバーをスクロールします。私が望むのは、スクロールバーをスクロールした後、もう一度ボタンをクリックする必要がないということです。言い換えれば、私がスクロールした後、私はコメントが自動的に調整されることを望みます。これは、私は問題があると言った。私は静的な項目のコメントを生成することができますが、私はリスト内で上下にスクロールするたびに、コメントは更新されません(つまり、セルC5のコメントが "Hello World"セルC5の内容が変更されていても "Hello World"となります)。ここで私が持っているコードは、これまでです:VBAでスクロール可能なリストのセルコンテンツを含むコメントを生成

Private Sub Create_Comments() 
    'src refers to the cells for which we will generate comments 
    Dim src As Range: Set src = Range("C5:C14") 
    'tar refers to the cells where the comments will be generated 
    Dim tar As Range: Set tar = Range("C5:C14") 

    For i = 0 To src.Rows.Count - 1 
     Dim sResult As String 
     sResult = Cells(src.Row + i, src.Column) 
     If sResult <> "" Then 
      With Cells(tar.Row + i, tar.Column) 
       .ClearComments 
       .AddComment 
       .Comment.Text Text:=sResult 
       .Comment.Shape.ScaleWidth 4, msoFalse, msoScaleFromTopLeft 
       .Comment.Shape.ScaleHeight 2.26, msoFalse,soScaleFromTopLeft 
      End With 
     Else: sResult = "" 
      Exit Sub 
     End If 
    Next i 
End Sub 

必要に応じて、これが動作しない理由に任意の洞察力をいただければ幸いです!私はExcel 2007を使用しています。

ありがとう!

+0

Create_Commentsはどこから呼び出されますか? – SteveES

+0

私は単純にCreate_Commentsをボタンに割り当てました。そうすれば、私がしなければならないのは、シート上のボタンを押して、コードが実行されるだけです。 – YesHelloThisIsDog

+0

1.スクロールバーをスクロールした後、別のボタンをクリックしてコメントを更新しますか? 2. 2行目のコードが必要なのはなぜですか? – SteveES

答えて

0

スクロールバーが変更されるたびにコメントを更新するには、Create_Commentsマクロをスクロールバー(標準フォームコントロールの場合)に割り当てるか、ScrollBar_Changeイベント(ActiveXスクロールバーの場合)から呼び出す必要があります。

コメントが作成される前にセルが確実に更新されるように、Create_Commentsにコメントを更新する前に、Application.CalculateまたはWorksheet.Calculateに電話する必要があります。

関連する問題