UDF'nin Uçuculuğunu Artırma


0

Küçüğüm var UDF () bir köprü döndüren Address:

Public Function hyperAdd(r As Range) As String
    Application.Volatile

    hyperAdd = "no hyperlink"
    If r.Hyperlinks.Count = 0 Then Exit Function
    hyperAdd = r.Hyperlinks(1).Address
End Function

Yani eğer koyarsam:

http://www.cnn.com

Hücrede A1 , Alırım:

enter image description here

Şimdi seçersem A1 , Formül Çubuğu'nu tıklayın ve değiştirin cnn için tilki , B1 değişmez!

Yeniden seçmek zorundayım A1 , dokunma F2 ve sonra Girmek .

Bunu nasıl düzeltebilirim?

(eğer önemliyse, Win 7 makinesinde Excel 2007 kullanıyorum)


Garip, otomatik hesaplamalar olsa bile, hesaplaması için hala F9'a basmam gerekiyor. Ben güdük oldum.
Scott Craner

@ScottCraner Hangi Excel sürümünü kullanıyorsunuz?
Gary's Student

2013 kullanıyorum
Scott Craner

@ScottCraner En azından ben sadece onun olmadığını biliyorum.
Gary's Student

@ScottCraner Ayrıca Excel 2016'da da aynı konu (Office 365). Görünüşe göre, Hyperlinks koleksiyonu fonksiyonun çalıştığı tarihte güncellenmedi.
Ron Rosenfeld

Yanıtlar:


2

Bir geçici çözüm, bir çalışma sayfası değiştirme olayı kullanarak bir hesaplamayı zorlamak olacaktır.

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Hyperlinks.Count > 0 Then Application.CalculateFull
End Sub

Ve tabii ki Application.Volatile UDF'den.

UDF, A1'deki bağımsız değişkende başvurulandığından beri beklenen A1'deki değişiklik tarafından tetiklenmiş gibi görünüyor. Ancak, çalıştığı sırada, Köprüler koleksiyonu henüz güncellenmedi. Ve bir kırılma noktanız varsa, imlecin hala formül çubuğunda olduğunu görebilirsiniz. Belki de köprülerin saklanma ve başvuru yolu ile ilgisi vardır.


Sorun Çözüldü ................ tekrar teşekkürler!
Gary's Student
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.