メンバーの皆様のおかげで、このコードを釘付けにするのは本当に近いです。プールプランニングに使用される大きなカレンダーがあり、セルの範囲内でスケジュールに応じた値を持ちます。私は、すべての値にコメントが追加される必要があるときに押すための更新ボタンを作成しました。彼らは別のシートからデータを引き出しています。すべてのコードは最後を除いて動作します。 がハイライト表示され、セルに値が存在しないコメントは削除されません。私は問題が最後の行/ colコールアウトだと思うが、私は私の問題を解決するために見つけたものを使用する技術的なスキルを持っていないフォーラムを見て後。このError in finding last used cell in VBAが見つかりました - 役に立つと思われます。Excel VBAエラー9サブアウトオブレンジ - 最終行/コラムを修正する必要がある可能性があります
Private Sub Update_Click()
Dim arr As Variant, element As Variant
Dim i As Long, j As Long, listItems As Long, rwLast As Long, clLast As Long
Dim comm As String
Dim rng As Range, cell As Range
listItems = Sheets("list").Range("A1").End(xlDown).Row
rwLast = Cells.SpecialCells(xlCellTypeLastCell).Row ' Adjust to fit your needs
clLast = Cells.SpecialCells(xlCellTypeLastCell).Column 'Idem
Set rng = Sheets("list").Range("A1:A" & listItems)
arr = Range("D11:CY148").Value
With Worksheets("Finish Matrix")
For i = 1 To rwLast - 10 'Adjust to make it more general, this is pretty rough
For j = 1 To clLast - 3 'Idem
If i = 3 Then
End If
comm = ""
For Each cell In rng
If arr(i, j) = cell.Value Then
comm = comm & Chr(13) & cell.Offset(0, 1).Value
End If
Next cell
If Not (comm = "") Then
.Cells(10, 3).Offset(i, j).ClearComments
.Cells(10, 3).Offset(i, j).AddComment
.Cells(10, 3).Offset(i, j).Comment.Text Text:=comm
End If
Next j
Next i
End With
End Sub
確かに私のコードにマイナーな調整がありません。私はむしろそれを可能な限り簡単な解決策にしておきたい。前もって感謝します。
を。 SpecialCells(xlCellTypeLastCell).Columnが問題になるはずです。配列をarr = Range( "D11:CY148")。Valueとして設定すると、なぜclLast = 100に設定してから内部Forループを開始するのですか?For j = 1 To UBound(arr、2)? – sktneer
私はあなたが '内部ForループをJ = to UBound(arr、2)のように開始すると言うとき、あなたは何を意味するのか分かりません。私はプログラミングの初心者であり、VBAを本当に理解していないので、語彙または推論。 –