Dansk Regneark Forum
  Hjælp Hjælp  Søg i forum   Arrangementer   Opret ny bruger Opret ny bruger  Log ind Log ind


Emne lukketVBA flet felter og gør del af tekst fed

 Besvar Besvar
Forfatter
MortenManden Se dropdown
Forum Begynder
Forum Begynder
Avatar

Medlem: 22.Apr.2017
Land: Danmark
Status: Offline
Point: 12
Direkte link til dette indlæg Emne: VBA flet felter og gør del af tekst fed
    Sendt: 22.Apr.2017 kl. 20:45
Jeg er ved at bygge en funktion, der fletter 2 celler
Efter at have flettet cellerne vil jeg gerne gøre celle 2s tekst fed

Fletning går fint - men jeg kan ikke få den til efterfølgende at gøre sidste del af teksten fed.
- Len værdier er fine
- Sub bliver kaldt (tjekket med msgBox)

Mit bud er at cellen ikke har modtaget værdien før Sub bliver kaldt og der derfor ikkekan formateres på tekst, der ikke er der

Foreløbig kode:
- - - - - - - - - - - - - - - - - - - - - - - - - - 
Function boldIt(navn As String, ekstra As String)
    
    Dim ln1 As Integer
    Dim ln2 As Integer
    Dim st1 As String
    
    ln1 = Len(navn)
    ln2 = Len(navn) + Len(ekstra)
    
    If (ln1 = ln2) Then
        boldIt = navn
    Else
        boldIt = navn & " - " & ekstra
        boldTxt ln1, ln2
    End If

End Function


Public Sub boldTxt(startPos As Integer, charCount As Integer)
    With ActiveCell.Characters(Start:=startPos, Length:=charCount).Font
        .FontStyle = "Bold"
    End With
End Sub

Til top



Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5417
Direkte link til dette indlæg Sendt: 23.Apr.2017 kl. 09:47
Nu spørger jeg sikkert dumt, men, hvor fletter (.Merge) du cellerne i koden???
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Til top
MortenManden Se dropdown
Forum Begynder
Forum Begynder
Avatar

Medlem: 22.Apr.2017
Land: Danmark
Status: Offline
Point: 12
Direkte link til dette indlæg Sendt: 23.Apr.2017 kl. 14:25
Funktionen bliver kaldt med 2 celler som argumenter (navn, ekstra)
=boldIt(E2:F2)

Så der er de to tekststrenge. De bliver så sat sammen med: 
boldIt = navn & " - " & ekstra

Public Sub modtager startposition for anden del af strengen og længden af hele strengen (opdagede at den manglede 3 tegn " - ", så det skal lægges til ln2)
Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5417
Direkte link til dette indlæg Sendt: 23.Apr.2017 kl. 15:25
Så er det jo heller ikke to celler, du fletter, men to tekst-strenge, du samler til en - og, der er en himmel til forskel.

Du kan ikke formatere en tekst-streng i selve variablen, og du kan ikke formatere et del-resutat af en funktion...
...kort sagt: Hvad du forsøger, er ikke muligt.

Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Til top
MortenManden Se dropdown
Forum Begynder
Forum Begynder
Avatar

Medlem: 22.Apr.2017
Land: Danmark
Status: Offline
Point: 12
Direkte link til dette indlæg Sendt: 23.Apr.2017 kl. 22:24
Hvis du kunne guide mig i retning af hvordan funktionen skal skrues sammen for at opnå det ønskede resultat, så vil det være brugbart :-)
Til top
Bjarnehansen Se dropdown
Platin bruger
Platin bruger
Avatar

Medlem: 20.Nov.2011
Land: DK
Status: Offline
Point: 5485
Direkte link til dette indlæg Sendt: 24.Apr.2017 kl. 07:46
uploads/397/flet_celler.xlsx

her er et eks. med formler uden vba for at for stå det du vil frem til, du ønsker at lave det i vba ikke?


Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Med venlig hilsen - Bjarne Hansen - Microsoft 365 DK
Til top
MortenManden Se dropdown
Forum Begynder
Forum Begynder
Avatar

Medlem: 22.Apr.2017
Land: Danmark
Status: Offline
Point: 12
Direkte link til dette indlæg Sendt: 24.Apr.2017 kl. 09:29
Hej Bjarne

Om det er med eller uden VBA er ligegyldigt - men min foreløbige research siger VBA :-)

Her er et eksempel på data:
Barselstræning HOLDSTART
Mor på stoffer - sy tøj og tilbehør til dit barn
BARSELSCAFE – Bedre sovevaner WORKSHOP
Gravidtræning HOLDSTART
LEGESTUE KOLBØTTEN
Babymassage

De skal gerne flettes til:
Barselstræning - HOLDSTART
Mor på stoffer - sy tøj og tilbehør til dit barn
BARSELSCAFE – Bedre sovevaner - WORKSHOP
Gravidtræning - HOLDSTART
LEGESTUE KOLBØTTEN
Babymassage
Til top
Bjarnehansen Se dropdown
Platin bruger
Platin bruger
Avatar

Medlem: 20.Nov.2011
Land: DK
Status: Offline
Point: 5485
Direkte link til dette indlæg Sendt: 24.Apr.2017 kl. 10:12
ok hvordan ser dit ark ud det vil måske lette forståelsen af det....
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Med venlig hilsen - Bjarne Hansen - Microsoft 365 DK
Til top
Bjarnehansen Se dropdown
Platin bruger
Platin bruger
Avatar

Medlem: 20.Nov.2011
Land: DK
Status: Offline
Point: 5485
Direkte link til dette indlæg Sendt: 24.Apr.2017 kl. 10:33
hvor har du din data og hvor skal den flyttes hen og flettes
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Med venlig hilsen - Bjarne Hansen - Microsoft 365 DK
Til top
MortenManden Se dropdown
Forum Begynder
Forum Begynder
Avatar

Medlem: 22.Apr.2017
Land: Danmark
Status: Offline
Point: 12
Direkte link til dette indlæg Sendt: 24.Apr.2017 kl. 10:42
De to kolonner, der skal kopieres er:
Plan!E2 og ned
Plan!F2 og ned

De skal kopieres til 
Kalender!F2 og ned

Mellem dem skal indsættes " - " (mellemrum bindestreg mellemrum)
Bindestreg og frem skal være fed

Hvis det er svært at indsætte løs String, så kan bindestreg mv sættes i selvstændig kolonne
Til top
Bjarnehansen Se dropdown
Platin bruger
Platin bruger
Avatar

Medlem: 20.Nov.2011
Land: DK
Status: Offline
Point: 5485
Direkte link til dette indlæg Sendt: 24.Apr.2017 kl. 10:57
Noget i stil med dette data står i ark1 de flettes i ark2



uploads/397/flet_celler2.xlsx
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Med venlig hilsen - Bjarne Hansen - Microsoft 365 DK
Til top
MortenManden Se dropdown
Forum Begynder
Forum Begynder
Avatar

Medlem: 22.Apr.2017
Land: Danmark
Status: Offline
Point: 12
Direkte link til dette indlæg Sendt: 24.Apr.2017 kl. 11:11
Ja, bortset fra at de 3 celler i ark2 gerne skulle være 1 celle / String :-)
Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5417
Direkte link til dette indlæg Sendt: 24.Apr.2017 kl. 12:16
Citér Ja, bortset fra at de 3 celler i ark2 gerne skulle være 1 celle / String :-)
Og, det er så det, jeg siger, ikke kan lade sig gøre, hvis det skal oprettes med en formel og skal have forskellig formatering i del-resultatet.
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Til top
MortenManden Se dropdown
Forum Begynder
Forum Begynder
Avatar

Medlem: 22.Apr.2017
Land: Danmark
Status: Offline
Point: 12
Direkte link til dette indlæg Sendt: 24.Apr.2017 kl. 21:36
Så er den klaret :-) Har faktisk 2 løsninger - men den ene er temmelig tung - så her er den lette variant:

Sub boldIt()
    Dim pos_bold As Integer
    Dim celltxt As String
    
    For i = 2 To 200000
        ' first cell will always be populated - if not - exit
        If (Range("Plan!E" & i).Value = "") Then Exit For
        
        ' if second cell is empty - take only first cell as normal txt
        If (Range("Plan!F" & i).Value = "") Then
            Range("Kalender!F" & i).Value = Range("Plan!E" & i).Value
        Else
            ' calculate start of bold text
            pos_bold = Len(Range("Plan!E" & i).Value) + 1
            
            ' create the string
            celltxt = Range("Plan!E" & i).Value & " - " & Range("Plan!F" & i).Value
            ' add string to field and add bold to last part
            With Worksheets("Kalender").Range("F" & i)
                .Value = celltxt
                .Characters(pos_bold).Font.Bold = True
            End With
        End If
    Next i
End Sub


Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5417
Direkte link til dette indlæg Sendt: 25.Apr.2017 kl. 12:33
Citér Så er den klaret :-)
Klaret og klaret...
Du gør jo ikke, som du selv beder om - i stedet samler du blot en tekst, i en celle og formatere indholdet i denne celle...

Der er, hverken cellefletning, funktion eller en endelig tekst streng variabel i det...

Hvis du blot havde skrevet, at du ønskede, at samle indholdet af to celler i en tredje celle ved hjælp af en makro, så havde du været langt mere præcist - din makro der, gør intet af det, som du oprindeligt bad om...
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
Til top
MortenManden Se dropdown
Forum Begynder
Forum Begynder
Avatar

Medlem: 22.Apr.2017
Land: Danmark
Status: Offline
Point: 12
Direkte link til dette indlæg Sendt: 26.Apr.2017 kl. 17:25
Jeg har blot lyttet til dig Excelgaard :-)

Som du skriver kunne det ikke løses med en funktion - derfor er jeg gået over til den her løsning, der giver det ønskede slutresultat - ikke som jeg først tænkte / ønskede det, men så resultatet er hvad jeg har brug for.

Dette er min første Excel- / VBA makro, så ja jeg kunne nok ha forklaret mig bedre, men man skal jo i gang... 
Til top
 Besvar Besvar

Skift forum Forum tilladelser Se dropdown

© 2010 - 2024 Dansk Regneark Forum - en del af Excel-regneark.dk