devxlogo

ConvertSelectedTex – Convert text selected in code window

ConvertSelectedTex – Convert text selected in code window

' Convert to uppercase, lowercase, or propercase the text that is' currently selected in the active code windowSub ConvertSelectedText(VBInstance As VBIDE.VBE, Optional conversion As Long = _    vbUpperCase)    Dim startLine As Long, startCol As Long    Dim endLine As Long, endCol As Long    Dim codeText As String    Dim cpa As VBIDE.CodePane    Dim cmo As VBIDE.CodeModule    Dim i As Long       On Error Resume Next       ' get a reference to the active code window and the underlying module    ' exit if no one is available    Set cpa = VBInstance.ActiveCodePane    Set cmo = cpa.CodeModule    If Err Then Exit Sub       ' get the current selection coordinates    cpa.GetSelection startLine, startCol, endLine, endCol    ' exit if no text is highlighted    If startLine = endLine And startCol = endCol Then Exit Sub       ' get the code text    If startLine = endLine Then        ' only one line is partially or fully highlighted        codeText = cmo.Lines(startLine, 1)        Mid$(codeText, startCol, endCol - startCol) = StrConv(Mid$(codeText, _            startCol, endCol - startCol), conversion)        cmo.ReplaceLine startLine, codeText    Else        ' the selection spans multiple lines of code        ' first, convert the highlighted text on the first line        codeText = cmo.Lines(startLine, 1)        Mid$(codeText, startCol, Len(codeText) + 1 - startCol) = StrConv(Mid$ _            (codeText, startCol, Len(codeText) + 1 - startCol), conversion)        cmo.ReplaceLine startLine, codeText               ' then convert the lines in the middle, that are fully highlighted        For i = startLine + 1 To endLine - 1            codeText = cmo.Lines(i, 1)            codeText = StrConv(codeText, conversion)            cmo.ReplaceLine i, codeText        Next              ' finally, convert the highlighted portion of the last line        codeText = cmo.Lines(endLine, 1)        Mid$(codeText, 1, endCol - 1) = StrConv(Mid$(codeText, 1, endCol - 1), _            conversion)        cmo.ReplaceLine endLine, codeText    End If       ' after replacing code we must restore the old selection    ' this seems to be a side-effect of the ReplaceLine method    cpa.SetSelection startLine, startCol, endLine, endColEnd Sub

devx-admin

Share the Post: