Board logo

標題: 儲存格裡的註解 [打印本頁]

作者: fangsc    時間: 2012-8-22 12:17     標題: 儲存格裡的註解

請教:
用Vlookup找出的儲存格內容, 如何才能將註解也一起帶過來 ?
是否有函數可以用?
作者: Hsieh    時間: 2012-8-22 14:35

回復 1# fangsc
VLOOKUP傳回並非儲存格物件,而是儲存格的值
內建函數無法取得註解內容,寫個自定義函數解決

[attach]12226[/attach]
作者: fangsc    時間: 2012-8-22 16:19

回復 2# Hsieh

感謝版主的指導.
如果用VBA可以將註解直接加在目地儲存格的註解裡嗎?
作者: Hsieh    時間: 2012-8-22 18:54

回復 3# fangsc

不懂你的意思,要用VBA加入儲存格註解當然可行
  1. Sub nn()
  2. If Range("C3").Comment Is Nothing Then 'C3儲存格沒有註解
  3.   Range("C3").AddComment "TEST"  ''C3儲存格加入註解
  4.   Else  '否則
  5.    Range("C3").Comment.Text Range("C3").Comment.Text & Chr(10) & "addtext"  '加入註解文字
  6. End If
  7. End Sub
複製代碼

作者: fangsc    時間: 2012-8-22 21:35

回復 4# Hsieh

實在抱歉,我沒有說清楚,浪費了你的時間.
在用vlookup之後, 想再run程式將來源資料裡的註解加進目地資料的儲存格裡.
感謝你.
作者: Hsieh    時間: 2012-8-22 22:00

回復 5# fangsc

[attach]12233[/attach]
作者: fangsc    時間: 2012-8-22 22:50

回復 6# Hsieh

對不起,我還是沒表達清楚.
    在用vlookup之後, 想再run程式將來源資料裡的註解加進目地資料  "儲存格的註解" 裡.
     (就是把來源資料的註解,帶進目地資料儲存格的註解裡)
抱歉 & 感謝...
作者: Hsieh    時間: 2012-8-23 09:53

本帖最後由 Hsieh 於 2012-8-23 09:55 編輯

回復 7# fangsc
[attach]12238[/attach]
  1. Sub ex()
  2. Dim Rng As Range, A As Range
  3. For Each A In Range("J4").CurrentRegion.SpecialCells(xlCellTypeFormulas)
  4. If A.FormulaLocal Like "=VLOOKUP(*,*,*,*)" Then
  5.   ar = Split(Replace(Replace(A.FormulaLocal, "VLOOKUP(", ""), ")", ""), ",")
  6.   Set Rng = Range(ar(1))
  7.   k = Application.Match(Range(ar(0)), Rng.Columns(1), 0)
  8.   If Not A.Comment Is Nothing Then A.Comment.Delete
  9.   If Not Rng(k, Val(ar(2))).Comment Is Nothing Then
  10.     A.AddComment Rng(k, Val(ar(2))).Comment.Text
  11.   End If
  12. End If
  13. Next
  14. End Sub
複製代碼
[attach]12237[/attach]
作者: fangsc    時間: 2012-8-23 22:24

感謝版主,目前可以用了.
不過,看起來有點難,我得再融會貫通一下,
才能運用得好一些.
作者: jsc0518    時間: 2023-6-29 08:21

回復 8# Hsieh

Dear Hsieh,
早安!請教一下,若來源資料是另一個工作表,那語法要改變哪裡呢?
[attach]36662[/attach]

謝謝您!!
作者: Hsieh    時間: 2023-6-29 14:30

回復 10# jsc0518
搭配重算事件
  1. Private Sub Worksheet_Calculate() '僅適用VLOOKUP函數
  2. Dim A As Range, C As Range, Rng As Range, Sht As Worksheet, Mc As Comment
  3. For Each A In Sheet1.UsedRange.SpecialCells(xlCellTypeFormulas)
  4. If A.FormulaLocal Like "=VLOOKUP(*,*,*,*)" Then '是否是VLOOKUP函數
  5. fx = Split(Split(A.Formula, "(")(1), ",") '公式分解
  6. Set Rng = Sheets(Split(fx(1), "!")(0)).Range(Split(fx(1), "!")(1)) '來源資料範圍
  7.     x = Range(fx(0)) '第一欄的搜尋值
  8.     r = Rng.Find(x).Row '找到來源資料的列號
  9.     k = Val(fx(2)) + Rng.Column - 1 '來源資料位於整個工作表的欄號
  10.     If Not A.Comment Is Nothing Then A.Comment.Delete '刪除公式儲存格內的註解
  11.     Set Mc = Rng.Parent.Cells(r, k).Comment '來源資料的註解
  12.     If Not Mc Is Nothing Then A.AddComment Rng.Parent.Cells(r, k).Comment.Text '加入來源註解
  13. End If
  14. Next
  15. End Sub
複製代碼

作者: jsc0518    時間: 2023-6-29 20:44

回復 11# Hsieh
Dear Hsieh,
感謝您的熱心回覆,有個問題與您請教

.若"來源資料"是在Sheet3F4欄列開始,下面語法需要修改哪裡呢?
Set Rng = Sheets(Split(fx(1), "!")(0)).Range(Split(fx(1), "!")(1)) '來源資料範圍


謝謝您




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)