Jak dostosować wysokości wierszy w zależności od zawartości komórki?

2

Mam tabelę z jedną kolumną i ponad 200 wierszami. Chcę dostosować wysokość tych rzędów w zależności od ich zawartości.

Na przykład, gdy komórka ma mniej niż 10 znaków, wiersz musi mieć 25 pikseli, a jeśli ma więcej lub 10 znaków, wiersz musi mieć 50 pikseli.

Te zdjęcia mogą wyjaśnić, co chcę zrobić:

przed

do

po

zarqos.os
źródło
Formatowanie warunkowe nie może zmienić wysokości wiersza, jedyną opcją jest użycie makra. Nie rozumiem jednak, dlaczego potrzebujesz takiego formatowania.
Máté Juhász
Moja prawdziwa tabela to rachunek zawierający opis elementów, gdy opis jest zbyt długi, zostanie automatycznie zawinięty, ale komórka nie pokazuje całego tekstu i nie chcę używać wierszy autodopasowania, ponieważ chcę użyć własnego wartości ich wysokości. (przepraszam za mój zły angielski)
zarqos.os
Twoje pytanie nie jest właściwie jasne, ponieważ telekomunikacja wydaje się być w wyższej komórce, ale nie ma więcej niż 20 znaków ...
Dave
Zredagowałem pytanie, a drugie stwierdzenie zawiera więcej niż 10
znaków
dwie wypowiedzi:> = 10 lub <10 :)
zarqos.os

Odpowiedzi:

1

Jest to oparte na twoim niejasnym pytaniu! Opublikowałem również opcję dynamiczną

Option Explicit
Sub ChangeRowsColsInPixels()
  Dim r As Range

  For Each r In ActiveSheet.UsedRange

    Dim length As Integer
    length = Len(r.Value)
    If length > 0 Then
        If length < 10 Then     
            r.RowHeight = 25
        End If

        If length >= 10 Then
            r.RowHeight = 50
        End If
    End If

  Next r

End Sub

Jak dodać VBA w MS Office?

Nie pytałeś o wyrównanie tekstu w komórce, ale jak możesz middle align, zakładam, że to wystarczy

Wygląda na to, że nie chcesz podejmować żadnych działań, jeśli liczba znaków wynosi od 10 do 20

Przed

wprowadź opis zdjęcia tutaj

Po

wprowadź opis zdjęcia tutaj

I z Middle Align

wprowadź opis zdjęcia tutaj

Dave
źródło
Działa dobrze, ale czy istnieje sposób, aby makro to zostało wykonane automatycznie po naciśnięciu klawisza Enter, wchodzi w życie? tak przy okazji, wyryłem swoje pytanie, ponieważ popełniłem błąd w związku z drugim stwierdzeniem.
zarqos.os
Tak, dodałem nawet link, jak dodać makro, które to pokazuje
Dave
Mam na myśli to, że kiedy wprowadzam dane do komórki i po wciśnięciu entre, aby sprawdzić te dane, makro zostanie wykonane automatycznie.
zarqos.os
Spójrz na mój drugi post, pokazuje, czego chcesz zsub worksheet_change
Dave
0

Jako drugie rozwiązanie do mojego drugiego postu , zaoferuje to bardziej dynamiczne podejście, w którym wysokość będzie aktualizowana na podstawie liczby znaków (nie zostało to odpowiednio przetestowane pod kątem górnych limitów / maksimów, a więc z długim długim łańcuchem / wartość, prawdopodobnie zgłosi wyjątek, więc dodałem sztywny limit, który wydaje się być mniejszy niż limit w programie Excel 2010)

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim r As Range
  Dim defaultHeight As Integer
  defaultHeight = 25

  Dim maxHeight As Integer
  maxHeight = 399

  For Each r In ActiveSheet.UsedRange

    Dim length As Integer
    length = Len(r.Value)
    If length > 0 Then
        Dim heightToUse As Double
        heightToUse = defaultHeight + length
        If (heightToUse > maxHeight) Then
            r.RowHeight = maxHeight
        Else
            r.RowHeight = heightToUse
        End If
    End If

  Next r

End Sub

Pamiętaj, aby dodać go do konkretnego arkusza roboczego, ponieważ uruchamia się on i ponownie oblicza w miarę wprowadzania nowych wartości

Jak dodać VBA w MS Office?

Przed
wprowadź opis zdjęcia tutaj

Po (z Middle Alignna karcie Wyrównanie wstążki)

wprowadź opis zdjęcia tutaj

Dave
źródło
Wypróbowałem ten kod i działa, ale zauważam, że wysokość jest zmienna, zależy od wprowadzonej długości tekstu, ale chcę, aby przyjmował dwie wartości: 25 i 50 pikseli.
zarqos.os
erm ... Tak. Czy nie rozumiesz, że dałem 2 odpowiedzi? Jest to podejście bardziej dynamiczne, ponieważ może być przydatne dla innych. Zawiera także dodatkowe informacje, takie jak aktualizowanie w locie (cóż, gdy zmienia się wartość komórki). Jestem pewien, że możesz użyć bitów z obu postów?
Dave