2016-04-08 21 views
0

'daki bir dizideki alan adlarının saklanması Her çalışma sayfasının, ad kutusunda tanımlanmış bir kimliği olan bir çalışma sayfasında 10 sütun var. ID'leri bir Dizide VBA kullanarak nasıl saklayabilirim.excel-vba

p.s. Sütun başlıklarını saklamak istemiyorum. Her bir sütunun isim kutusuna yazılan kimliklerini saklamak istiyorum.

+1

Namebox ne demek istiyorsun? Ekran görüntüsü gönderebilir ve daha fazla ayrıntı verebilir misiniz? – Will

+1

@Will - Formül çubuğunun solundaki * isim kutusu * ile * adlandırılmış aralıklar * olmak için bunu alıyorum. – Jeeped

cevap

2

Çalışma kitabının adlandırılmış aralıkları boyunca ilerleyin; Her ismin bu çalışma sayfasındaki bir aralığa işaret ettiğini ve adlandırılmış aralığın en azından kısmen birinci satırda yer alan bir aralık için olduğunu kontrol edin. Çalışma kitabı kapsamı ile

Dim n As Long, vColNames As Variant 
Dim c As Long, twb As Workbook 

Set twb = ThisWorkbook 

With Worksheets("Sheet1") 
    With .Cells(1, 1).CurrentRegion 
     'dim the array one-based to parallel the columns 
     ReDim vColNames(1 To .Columns.Count) 

     'loop through all names looking for ones that intersect first row 
     For n = 1 To twb.Names.Count 
      'check the parent worksheet first 
      If twb.Names(n).RefersToRange.Parent.Name = .Parent.Name Then 
       ' next check to ensure first row is part of named range 
       If Not Intersect(twb.Names(n).RefersToRange, .Rows(1), .Cells) Is Nothing Then 
        vColNames(Intersect(twb.Names(n).RefersToRange, .Rows(1)).Cells(1, 1).Column) = _ 
         twb.Names(n).Name 
       End If 
      End If 
     Next n 
    End With 
End With 


For c = LBound(vColNames) To UBound(vColNames) 
    Debug.Print vColNames(c) 
Next c 

İsimler myNamedRange olarak çıkacaktır; çalışma sayfası kapsamına sahip olanlar, Sheet1! myNamedRange biçiminde olacaktır.

+0

İşinizin büyük bir hayranıyım –