• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

een LineFeed vinden in een Comment

Status
Niet open voor verdere reacties.

DutchOirs

Gebruiker
Lid geworden
30 sep 2009
Berichten
880
Goedemiddag allen,

Zit weer met een vraagje over de text van een Comment.
Probeer de text van een Comment over te zetten naar een Word document.
Tot dusver geen probleem.
Enigste probleem is als de text van deze Comment meerdere regels heeft.
Dan zet hij in het Word Document in een Tabel alle regels achter elkaar.
Dus de vraag wordt hoe haal ik een LineFeed uit de text van een Comment?

Code:
  With Range(KolomLetter & RijNummer)
    Set C = .Comment
    On Error GoTo 0
    If C Is Nothing Then
      MsgBox ("Er is geen comment"), vbExclamation
    Else
      HIER ZOU HET INLEZEN IN REGELS MOETEN KOMEN      
      ' VarComment = C.Text
    End If
  End With

Alvast Many Thanks.

Dutch
 
Plaats een voorbeeld met een dergelijke comment.
Zoek bijvoorbeeld in C.text naar VbLf.
 
Hoi Edmoor,

Hierbij voorbeeldje.

Als hij een comment inleest geeft hij het in een MessageBox goed weer, maar zodra ik het exporteer naar een Word document in een Tabel zet hij alles achter elkaar.

Bezig met VbLf, maar niet te achterhalen nog. :-(

Wel hoe ik deze door kan geven naar Tabel in Word met

Code:
VarComment = "Test#1" & vbCrLf & "Test#2" & vbCrLf & "Test#33"     '= nieuwe Enter invoeren, werkt!
Zet de teksten onder elkaar.

Nu nog het uitpluizen om Comtext te splitsen?
 

Bijlagen

Laatst bewerkt:
Hoi Edmoor,

Sluit hier de vraag en ga verder op het Help.Mij Excel VBA forum.

Zit hier denk ik verkeerd met de vraag.
 
Goedenavond huijb,

Nee heb geen haast..

Maar dacht dat het meer onder Excel VBA thuishoorde.. vandaar
 
Wel heb een manier gevonden om de LineFeed boven water te halen in een comment.

op naar volgende stap

Code:
Private Sub TekstSplitsen2()
  Dim cl As Range, i As Integer, pos1(10) As Integer, pos2(10) As Integer, veld(10) As String, aantal As Integer
    
  For Each cl In Selection.Cells
    aantal = 0
    For i = 1 To Len(cl)
      If Mid(cl, i, 1) = vbLf Then              ' laatste regel een vbLf
 '       MsgBox ("i =  " & i)
        aantal = aantal + 1
        If aantal = 1 Then pos1(1) = aantal
        If aantal > 1 Then pos1(aantal) = (pos1(aantal - 1) + pos2(aantal - 1) + 1)
        pos2(aantal) = i - pos1(aantal)
 '       MsgBox ("pos1 =  " & pos1(aantal) & "  pos2 =  " & pos2(aantal))
        veld(aantal) = Mid(cl, pos1(aantal), pos2(aantal))
        MsgBox ("0 Veld =  " & veld(aantal))
        If i = Len(cl) Then Exit For
      End If
      If i = Len(cl) And aantal > 0 Then        ' één regel zonder vbLf
        aantal = aantal + 1
        pos1(aantal) = (pos1(aantal - 1) + pos2(aantal - 1) + 1)
        pos2(aantal) = (i + 1) - pos1(aantal)
        veld(aantal) = Mid(cl, pos1(aantal), pos2(aantal))
        MsgBox ("1 Veld =  " & veld(aantal))
      End If
      If i = Len(cl) And aantal = 0 Then        ' twee regels één met vbLf en laatste zonder vbLf
 '       MsgBox ("nul")
        aantal = aantal + 1
        pos1(aantal) = (pos1(aantal - 1) + pos2(aantal - 1) + 1)
        pos2(aantal) = (i + 1) - pos1(aantal)
        veld(aantal) = Mid(cl, pos1(aantal), pos2(aantal))
        MsgBox ("2 Veld =  " & veld(aantal))
      End If
    Next i
  Next
End Sub

zie vb-tje
 

Bijlagen

ik begrijp niet wat je wil bewijzen, nu gaat het over de inhoud van de cellen, niet de comments.
Je wil toch uitkomen op het aantal stukken dat er in een tekst staan omdat dan om te zetten naar iets dat in Word in een tabel kan.
Word is mijn ding niet echt.
Code:
Sub TekstSplitsen3()
     For Each cl In ActiveSheet.UsedRange.SpecialCells(xlConstants)
          Application.Goto cl
          sp = Split(cl.Value, vbLf) 'splitsen op vblf=chr(10)
          MsgBox cl.Address & vbLf & "inhoud : " & cl.Value & vbLf & "samengevoegd  : |" & Join(sp, "|") & "|" & vbLf & "aantal delen : " & UBound(sp) + 1
          cow18 = Join(sp, Chr(11)) 'zo zou je die tekst in Word moeten brengen volgen cow18 = samenvoegen op chr(11)=vbVerticalTab
          snb = Join(sp, Chr(13)) 'zo zou je die tekst in Word moeten brengen volgen snb = samenvoegen op chr(13)=CR
          MsgBox cow18 & vbLf & snb
     Next
End Sub
 
Laatst bewerkt:
Goedemorgen Cow18,

Wil niets bewijzen, ben alleen maar aan het zoeken en houd voor de liefhebber jullie op de hoogte.

Probleem was met een comment, om de gegevens naar Word document in een tabel over te zetten.
Daarbij bleek dat bij het overzetten de regel einde genegeerd werd en dat alles achter elkaar kwam te staan.
Ben nu staps gewijs het probleem aan het oplossen.
Deze stap is het uit elkaar halen van de comment gegevens.
Volgende stap er voor zorgen dat in het Word document (Tabel) alles net zo (onder elkaar) komt te staan.

uiteindelijk doel om b.v. een cel aan te klikken in Excel waar een comment aan zit, vervolgens op een knop klikken en dat de comment gegevens overgezet worden naar het Word document.
En uiteindelijk dit x aantal keren kunnen doen.

Is een iets extra's maar wel gemakkelijk voor uitleg.
 
Voor het onder elkaar zetten van die regels in een Word tabel moeten de regels worden gescheiden met een paragraaf.
VBA: Selection.TypeParagraph of Selection.InsertParagraphAfter

Zelf heb ik er geen ervaring mee.
Wellicht ook een voorbeeldje van het Word document plaatsen?
 
thanks edmoor, ben ermee bezig, nu eerst uitpluizen hoe het van cow18 werkt.

maar zal vandaag vb-tje maken

één v/d problemen is dat er meerdere mogelijkheden zijn om een comment te make c.q. af te sluiten.

meerdere regels in een comment maken met alt-enter en af te sluiten ZONDER een alt-enter
meerdere regels in een comment maken met alt-enter en af te sluiten MET een alt-enter
of één regel af te sluiten ZONDER een alt-enter
of één regel af te sluiten MET een alt-enter
of twee regels met een alt-enter voor volgende regel en af te sluiten ZONDER een alt-enter
of twee regel met een alt-enter voor volgende regel en af te sluiten MET een alt-enter

pff is nogal wat maar met vb-tje Tekstsplitsen 2 was dit allemaal onderbouwd en krijgt men één of meerdere strings om door te geven naar het Word document.

heb een nieuw vb-tje TekstSpliten #3 bijgevoegd met voorbeelden van hierboven.
 

Bijlagen

Laatst bewerkt:
Gelukkig is 'Word' helemaal 'mijn ding'.

Code:
Sub M_snb()
   ReDim sn(Blad1.Cells.SpecialCells(2, 2).Count)

   For Each it In Blad1.Cells.SpecialCells(2, 2)
     sn(n) = Trim(Replace(it, vbLf, " "))
     n = n + 1
   Next

   With CreateObject("Word.document")
     .Content = Join(sn, vbCr)
     .Content.ConvertToTable
     .Windows(1).Visible = True
   End With
End Sub

Als het, in tegenstelling tot je bestand, om 'comments' gaat:

Code:
  ReDim sn(Blad1.Comments.Count)
  For Each it In Blad1.Comments
    sn(n) = Trim(Replace(it.Text, vbLf, " "))
    n = n + 1
  Next
 
  MsgBox Join(sn, vbLf)

NB. Kun je svp de titel van deze draad aanpassen, zodat de titel de lading dekt ?
 
Laatst bewerkt:
Hoi Edmoor,

Eindelijk weer even bezig geweest.

Ben eruit, al is het misschien op een omslachtige manier, maar het werkt..

snb, begrijp je code niet helemaal, maar werk er nog aan.

Nieuw vb-tje met een Wordt (basis) document.
Bedoeling was om in de Tabel van het Word document de tekst van de opmerking in Excel onder elkaar te krijgen.

Is gelukt dacht ik.
 

Bijlagen

Laatst bewerkt:
Misschien nog een handigheidje om de kolomletter(s) te bepalen in plaats van de code die je er nu voor gebruikt ;)
Code:
Function KolomLetter(Kolom As Integer) As String
    KolomLetter = Split(Cells(1, Kolom).Address, "$")(1)
End Function
 
Hee thanks edmoor, even proberen

Kom er even niet uit :-(

Heb dus de "KolomLetter" nodig.

Wordt de aanroep van de Function:

Code:
Run "KolomLetter(Kolom) "
 
Laatst bewerkt:
Code:
[COLOR="#FF0000"]sp = Split(VarComment, vbLf)
          aantal = UBound(sp)[/COLOR]

          aantal = 0
          For i = 1 To Len(VarComment)
               If Mid(VarComment, i, 1) = vbLf Then             ' laatste regel een vbLf
                    aantal = aantal + 1
                    If aantal = 1 Then pos1(1) = aantal
                    If aantal > 1 Then pos1(aantal) = (pos1(aantal - 1) + pos2(aantal - 1) + 1)
                    pos2(aantal) = i - pos1(aantal)
                    veld(aantal) = Mid(VarComment, pos1(aantal), pos2(aantal))
                    If i = Len(cl) Then Exit For
               End If
               If i = Len(VarComment) And aantal > 0 Then       ' één regel zonder vbLf
                    aantal = aantal + 1
                    pos1(aantal) = (pos1(aantal - 1) + pos2(aantal - 1) + 1)
                    pos2(aantal) = (i + 1) - pos1(aantal)
                    veld(aantal) = Mid(VarComment, pos1(aantal), pos2(aantal))
               End If
               If i = Len(VarComment) And aantal = 0 Then       ' twee regels één met vbLf en laatste zonder vbLf
                    aantal = aantal + 1
                    pos1(aantal) = (pos1(aantal - 1) + pos2(aantal - 1) + 1)
                    pos2(aantal) = (i + 1) - pos1(aantal)
                    veld(aantal) = Mid(VarComment, pos1(aantal), pos2(aantal))
               End If
die 2 rode regels doen net hetzelfde als de erna volgende zwarte regels.
Alleen opletten, sp start bij 0, niet bij 1.
 
Hee thanks edmoor, even proberen

Kom er even niet uit :-(

Heb dus de "KolomLetter" nodig.

Wordt de aanroep van de Function:

Code:
Run "KolomLetter(Kolom) "

Het is een functie, dus bijvoorbeeld:
Code:
MsgBox Kolomletter(65)
Waarbij die 65 het nummer is van de kolom waar je de letter(s) van wilt hebben.
 
Thanks Cow18 & Edmoor

Voor Edmoor:

Aanroep heb:

Code:
Private Sub CommandButton1_Click()
  KolomNummer = 5
  Run "KolomsLetter(KolomNummer)"
    
End Sub

Onder Module:
Function KolomsLetter(KolomNummer As Integer) As String
    KolomLetter = Split(Cells(1, KolomNummer).Address, "$")(1)
End Function

Zit even met de aanroep van de function.
Bedoeling is het KolomNummer doorgeven en de Letter (KolomsLetter) terugkrijgen.

pfff ja heb hem :-)
 
Laatst bewerkt:
Ok dan :)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan