Excel Kullanarak Tablo Oluştururken Hücrenin Yeniden Boyutlandırılmasından Kaçının


2

İnternette çok geniş kapsamlı olarak arama yaptım, ancak bulduğum soruların tüm çözümleri zaten var olan bir tablodaki veya pivot tabloda bulunan hücrelerin yeniden boyutlandırılmasında nasıl başarılı olunabileceğine ilişkin. Seçenekler altındaki ayarlarda da arama yaptım, ancak sorunumu giderecek herhangi bir ayar görmedim.

Asıl sorunum, yıla göre maaşlarım hakkında bilgi depolayan birden fazla tablo oluşturmak istediğim tek bir çalışma sayfamın olması. Verileri okunmasını kolaylaştırmak için sütunları zaten boyutlandırdığım ilk yıl için ilk tabloyu zaten yaptım. Ancak, yeni başlıklarımı seçtiğimde ve Tablo Olarak Biçimlendir , Excel, tüm metinlerimi yeni metne sığacak şekilde yeniden boyutlandırıyor.

Başlıklarımın bazıları sütunlara tam olarak uymuyor, ancak bu tablo kişisel kullanım içindir ve başlıklarımın daha sonra başvurmak için daha uzun süre açık olmak için açık adlara (daha uzun olsa da) sahip olmalarını tercih ediyorum. Bu yüzden birinin buna bir çözümü olduğunu umuyorum. Tüm sütunları tekrar el ile yeniden boyutlandırmak gerçekten can sıkıcı olurdu.


Bunun için bir seçenek olacağını sanmıyorum.
Máté Juhász

Ctrl + A ... Alt & gt; H & gt; O & gt; I. 2 saniye sürer, ancak istediğinizi yerine getirir. Ctrl + A iken bir masada olmadığınızdan emin olun.
Jacob

1
@ Jacob Bu akılda tutulması gereken iyi bir kısayol, ancak bu aslında istediğim şeyin tam tersini gerçekleştiriyor. Düzenleme: Yazmayı bitirmeden önce gönderilen özensiz parmaklar
David

Neden Tablo için Otomatik Sığdır özelliğini kapatmıyorsunuz?
Rajesh S

Yanıtlar:


1

Bunu gerçekleştirmenin iki yolu vardır:

  1. En basit yol boş bir tablo oluşturmaktır. ilk ve sonra istediğiniz şekilde ayarlayın.
  2. Seçimin sütun genişliklerini kaydeden, Tablo olarak biçimlendiren ve ardından sütun genişliklerini geri yükleyen bir makro kullanın. Makro, bir kısayol tuşu veya bir komut düğmesiyle çalışmak üzere ayarlanabilir veya kurdeleye eklenebilir. Kesişmesini sağlamak bile mümkündür Format as Table şerit aracı.

Yöntem 2 için, standart bir modüle aşağıdaki kodu ekleyin:

'============================================================================================
' Module     : <any standard module>
' Version    : 0.1.0
' Part       : 1 of 1
' References : N/A
' Source     : https://superuser.com/a/1332155/763880
'============================================================================================
Option Explicit

Public Sub ToggleTable_NoResize()
       Dim ¡ As Long

  Const s_DefaultStyle As String = "TableStyleMedium9" ' Change this for a different default style

  Dim asngColumnWidths() As Single
  ReDim asngColumnWidths(1 To Selection.Columns.Count)
  For ¡ = LBound(asngColumnWidths) To UBound(asngColumnWidths)
    asngColumnWidths(¡) = Selection.Columns(¡).ColumnWidth
  Next ¡
  Application.ScreenUpdating = False
    Dim loNewTable As ListObject
    On Error Resume Next
      Set loNewTable = ActiveSheet.ListObjects.Add(xlSrcRange, Selection, , xlYes)
    On Error GoTo 0
    If loNewTable Is Nothing Then
      Dim loExistingTable As ListObject
      On Error Resume Next
        Set loExistingTable = Selection.ListObject
      On Error GoTo 0
      If Not loExistingTable Is Nothing Then
        loExistingTable.Unlist
      End If
    Else
      loNewTable.TableStyle = s_DefaultStyle
      For ¡ = LBound(asngColumnWidths) To UBound(asngColumnWidths)
        Selection.Columns(¡).ColumnWidth = asngColumnWidths(¡)
      Next ¡
    End If
  Application.ScreenUpdating = True

End Sub

Kısayol tuşu ile ayarlamak için:

  • Geliştirici sekmesinin gösterildiğinden emin olun
  • Basın Alt + L + P + M ; makroyu seçin; basın Options…; ve kısayol tuşunu ayarlayın.

Notlar:

Tablonun varsayılan stili belirtilen kodda değiştirilebilir.

Ek bir özellik olarak, makroyu tekrar çalıştırmak Tabloyu tekrar normal bir hücre aralığına dönüştürecektir.


0

RobinCTS tarafından yaratılan orijinal marco'ya tam kredi.

Ancak, makroda küçük sorunlar var. Kodlarda özel bir "¡" (ünlem işareti yazılı) işareti bulunur. Çalıştırdığınızda hata veriyor. Düzeltmek için küçük değişiklikler yaptım.

Varsayılan davranış da değişmiştir. Tablonun geçerli formatını / stilini korur ve herhangi bir formatlama / stil uygulamaz.

Makroyu tekrar çalıştırmak bir tabloyu tekrar veri aralığına dönüştürecektir.

Option Explicit

'A slight modification of the code from https://superuser.com/a/1332155/763880    
Public Sub ToggleTable_NoResize()
  Dim var As Long

  Const s_DefaultStyle As String = "" 'Change this if you want a different default style

  Dim asngColumnWidths() As Single
  ReDim asngColumnWidths(1 To Selection.Columns.Count)
  For var = LBound(asngColumnWidths) To UBound(asngColumnWidths)
    asngColumnWidths(var) = Selection.Columns(var).ColumnWidth
  Next var
  Application.ScreenUpdating = False
    Dim loNewTable As ListObject
    On Error Resume Next
      Set loNewTable = ActiveSheet.ListObjects.Add(xlSrcRange, Selection, , xlYes)
    On Error GoTo 0
    If loNewTable Is Nothing Then
      Dim loExistingTable As ListObject
      On Error Resume Next
        Set loExistingTable = Selection.ListObject
      On Error GoTo 0
      If Not loExistingTable Is Nothing Then
        loExistingTable.Unlist
      End If
    Else
      loNewTable.TableStyle = s_DefaultStyle
      For var = LBound(asngColumnWidths) To UBound(asngColumnWidths)
        Selection.Columns(var).ColumnWidth = asngColumnWidths(var)
      Next var
    End If
  Application.ScreenUpdating = True

End Sub

Ayrıca 'i' harfini kullanmanın yaygın bir uygulama olduğu '¡' yi de fark ettim, ancak SE'nin buraya koyduğu kod için imzasının bir tür olduğunu düşünüyorum. Ancak, ünlem işareti nedeniyle sizin için koşmadığını garip buluyorum, çünkü yazdırılabilir 128'in üzerindeki herhangi bir ASCII karakterini bildiğim kadarıyla VB6 ve VBA'daki değişkenler için adil bir oyundur. Şimdi işlevin stilleri nasıl yönettiği ile ilgili olarak, biçimlendirmeyi temizlemek aslında istediğim bir şeydi, ancak sürümünüz bununla karşılaşan başkalarına yardımcı olabilir.
David

Genişletilmiş ASCII'ye aittir. Belgelere göre, değişken ismi sadece alfabetik karakterleri, ondalık sayıları ve alt çizgileri kabul eder. Kodları yapıştırdığınızda / çalıştırdığınızda hata alamadınız mı? Excel 2016 ve VBA 7.1 kullanıyorum. Orijinal kodları yapıştırdığımda hata attı.
masterton

Yukarıdakilerin dışında değişken ismi alfabetik karakter veya alt çizgi ile başlamalıdır. Bir alt çizgi ile başlıyorsa, en az bir alfabetik karakter veya ondalık basamak içermelidir. 1023 karakterden uzun olamaz.
masterton

Kodunu yeni bir çalışma kitabında yeniden sıraladım ve ayrıca genişletilmiş setten rastgele ASCII karakterlerini kullanarak iyi bir ölçüm için tek karakterli değişkenlerle kukla bir genel işlev yaptım ve her ikisi de gayet iyi geçti. Tam ifade budur Foo = • ^ ¡ * ˆ - × Not; ayrıca, daha önce söylediklerimi kendim düzeltirim, çünkü yazdırılamayan karakterler bile tanımlayıcı olarak kullanılabilir.
David

1
Bu tuhaf. İkimiz de Excel 2016 kullanıyoruz. Her neyse, alt çizgi dışında semboller kullanırsam kod çalışmaz. Her durumla uyumlu olmadığından bunları kullanmaktan kaçının. İşte belge: docs.microsoft.com/en-us/dotnet/visual-basic/programming-guide/...
masterton
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.