Gå til innhold

Anbefalte innlegg

Skrevet (endret)

Hei!

 

Jeg kan egentlig ingen koding. Men forstår nok til at jeg kan være inne og endre litt i eksisterende koder. Se først eksisterende kode (utdrag fra et ganske svært opplegg):

 

sText = GetIntermediateGroupText(iClient, lMGrp)
If sText <> "" Then
  FormatRowTop (lRow)
  Cells(lRow, 1) = sText
  FormatText (lRow)
  lRow = lRow + 2
End If

'FormatText' "henviser" da til følgende kode:

 

Public Sub FormatText(ByVal lRow As Long)Dim sR1, sR2 As String

sR1 = "A" & lRow & ":J" & lRow
sR2 = "J" & lRow

Rows(lRow).Select
Selection.Font.Italic = True
Range(sR1).Select
Range(sR2).Activate
With Selection
	.HorizontalAlignment = xlCenter
	.VerticalAlignment = xlTop
	.Orientation = 0
	.AddIndent = False
	.IndentLevel = 0
	.ShrinkToFit = False
	.ReadingOrder = xlContext
	.MergeCells = False
End With
Selection.Merge
With Selection
	.HorizontalAlignment = xlLeft
	.VerticalAlignment = xlTop
	.WrapText = True
	.Orientation = 0
	.AddIndent = False
	.IndentLevel = 0
	.ShrinkToFit = False
	.ReadingOrder = xlContext
	.MergeCells = True
End With
End Sub

Det som er saken er at i blandt er teksten som listes (og som denne koden formaterer) for lang til å få plass på en linje. Det jeg derfor søker er en kodesnutt som angir at radhøyden skal tilpasses teksten (legg merke til at wrap text = true).

 

Håper å slippe kode som hensyntar antall tegn/størrelse/bredde på siden også videre for å sette høyden. Det blir for mye tullball og vanskelig å holde korrekt hvis noe endres.

 

Så det jeg er ute etter er en kode som setter radhøyden slik at all tekst kommer med ("automatisk"). Omtrent som når man dobbeltklikker for å fastsette radhøyde i excel.

 

Finnes det en slik kode?

 

 

På forhånd takk så mye for all hjelp!

Endret av amundsf
Videoannonse
Annonse
Skrevet

Etter å ha googla litt har jeg funnet koden nedenfor, men jeg er mildt sagt rimelig usikker på hvordan jeg kan sy denne inn i koden jeg selv sitter på. Hjelp mottas derfor med takk!

 

Private Sub Worksheet_Change(ByVal Target As Range) 
Dim NewRwHt As Single 
Dim cWdth As Single, MrgeWdth As Single 
Dim c As Range, cc As Range 
Dim ma As Range 

With Target 
If .MergeCells And .WrapText Then 
Set c = Target.Cells(1, 1) 
cWdth = c.ColumnWidth 
Set ma = c.MergeArea 
For Each cc In ma.Cells 
MrgeWdth = MrgeWdth + cc.ColumnWidth 
Next 
Application.ScreenUpdating = False 
ma.MergeCells = False 
c.ColumnWidth = MrgeWdth 
c.EntireRow.AutoFit 
NewRwHt = c.RowHeight 
c.ColumnWidth = cWdth 
ma.MergeCells = True 
ma.RowHeight = NewRwHt 
cWdth = 0: MrgeWdth = 0 
Application.ScreenUpdating = True 
End If 
End With 
End Sub

Skrevet

Mulig jeg har misforstått deg helt nå:

 

 

Cells(2, 2).EntireRow.AutoFit

 

denne lille koden autojusterer radhøyden til rad 2 slik at det passer til innholdet i celle B2.

Skrevet

Ser ikke ut til at den fungerer.

 

Er du sikker på at den fungerer ved sammenslåtte celler? For det er vel ved sammenslåtte celler (med bryting av tekst) som autofitfunksjonen ikke helt fungerer.

Skrevet (endret)
Prøv Greg Wilsons løsning herfra

http://tinyurl.com/b5jdvr

Hei og takk for hjelp Harald!

 

Er ikke Greg Wilson sin løsning den jeg har quota i post nr. 2 i denne tråden? Den har jeg forsøkt, men pga. mitt relativt lave kunnskapsnivå i VBA sliter jeg med å sy den inn i "min" kode (som er gjengitt i post 1).

 

Har du/noen andre tips for hvilke endringer som må gjøres?

 

På forhånd takk så mye for all hjelp! :thumbup:

Endret av amundsf

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...