Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: VB5,VB6
Expertise: Advanced
Jul 31, 1999



Building the Right Environment to Support AI, Machine Learning and Deep Learning

ConvertSelectedTex - Convert text selected in code window

' Convert to uppercase, lowercase, or propercase the text that is
' currently selected in the active code window

Sub ConvertSelectedText(VBInstance As VBIDE.VBE, Optional conversion As Long = _

    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
        ' 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
        ' 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), _
        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, endCol
End Sub

Francesco Balena
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date