Gå til innhold

Anbefalte innlegg

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
Lenke til kommentar
Videoannonse
Annonse

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

Lenke til kommentar
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
Lenke til kommentar

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å
×
×
  • Opprett ny...