Tidak dapat melihat rentang bernama untuk tabel saat lembar kerja disembunyikan

1

Saya mencoba mengakses rentang bernama melalui VBA:

Set rng = selectionSht.Parent.Names(rangeName).RefersToRange

Namun, rentang bernama khusus ini dipetakan ke tabel di lembar kerja tersembunyi. Ketika lembar kerja disembunyikan, rentang bernama menghilang dari daftar rentang bernama yang ditunjukkan saat saya pergi ke Formulas->Name Manager, tetapi muncul kembali dalam daftar ketika saya memperlihatkan sheet. Ini tidak terjadi pada rentang bernama lain yang merujuk ke rentang statis - sepertinya hanya menjadi masalah untuk rentang bernama yang sesuai dengan tabel.

Ketika sheet disembunyikan, baris di atas kode VBA kembali:

Run-time error '1004':
Application-defined or object-defined error

Bagaimana saya bisa membuat rentang bernama ini dapat dibaca saat lembar disembunyikan?

sigil
sumber
2
Sejauh yang saya tahu, saya pikir Anda tidak bisa. Beberapa fungsi VBA hanya bekerja pada apa yang terlihat. YAITU. jika Anda memiliki sel dengan lebar yang diatur ke 0, itu memperlakukannya sebagai tersembunyi dan sebagai sesuatu yang tidak dapat Anda akses. Yang mungkin ingin Anda lakukan adalah meletakkan pembaruan layar = false, tampilkan lembar kerja tersembunyi, lakukan apa yang Anda perlukan dengan rentang bernama, buat lembar kerja disembunyikan lagi, dan kemudian nyalakan layar pembaruan = benar. Dari perspektif pengguna, mereka masih tidak pernah melihat lembar kerja tersembunyi
Eric F
1
@ EricF, itu terdengar seperti jawaban.
fixer1234

Jawaban:

3

Anda tidak dapat secara langsung melakukan apa yang Anda inginkan. Di VBA, jika sel tidak terlihat oleh pengguna, maka VBA juga tidak bisa melihatnya. Misalnya jika Anda menetapkan lebar sel ke 0, VBA memperlakukannya sebagai tidak terlihat dan karenanya Anda tidak dapat mengaksesnya, mirip dengan yang Anda miliki di atas.

Cara Anda dapat mencapai tugas sambil menyembunyikan sel / baris / kolom adalah dengan melakukan hal berikut:

  1. Belok Application.ScreenUpdating = False
  2. .Show area tersembunyi yang Anda referensikan
  3. Lakukan operasi apa pun yang perlu Anda lakukan untuk sel yang diberikan
  4. .Hide area tempat Anda bekerja
  5. Belok Application.ScreenUpdating = True kembali.

Dari sudut pandang pengguna sejak pemutakhiran dimatikan, sel / baris / kolom tidak pernah ditampilkan tetapi Anda masih dapat mencapai tugas Anda.

Eric F
sumber