Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


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

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

Francesco Balena
 
Comment and Contribute

 

 

 

 

 


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

 

 

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