Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,452
Default How to avoid getting the IDE window visible?

Wrote some code that will add line numbers to procedures that contain
certain strings.
This works with the free MZ-Tools add-in and all working fine and saving a
lot of time.
There is only one small problem and that is I haven't managed to always keep
the IDE window
invisible. This is better as if this window becomes visible then the code
will run a lot slower
as it has to update all the screens.

This is the full code:

Sub AddLineNumbersToErlProcs()

Dim i As Long
Dim n As Long
Dim c As Long
Dim x As Long
Dim WB As Workbook
Dim VBProj As VBProject
Dim VBC As VBComponent
Dim VBProjectForLineNumbers As VBProject
Dim strFile As String
Dim strFileToNumber As String
Dim msgResult As VbMsgBoxResult
Dim cmb As CommandBarControl
Dim cmbLineNumbers As CommandBarControl
Dim strPreviousProc As String
Dim strCurrentProc As String
Dim bHasLineNumber As Boolean
Dim strPreviousParentName As String

For Each VBProj In Application.VBE.VBProjects
On Error Resume Next
Select Case MsgBox("Add line numbers (if Procedure has Erl) to this
project?", _
vbYesNoCancel + vbDefaultButton2, _
VBProj.Filename)
Case vbYes
Set VBProjectForLineNumbers = VBProj
strFileToNumber = VBProj.Filename
Exit For
Case vbNo
Case vbCancel
Exit Sub
End Select
Next

If VBProjectForLineNumbers Is Nothing Then
Exit Sub
End If

Application.VBE.MainWindow.Visible = True

'find the MZ-Tools add line numbers button
'-----------------------------------------
For Each cmb In Application.VBE.CommandBars("MZ-Tools 3.0").Controls
If cmb.Caption = "Add Line Numbers" Then
Set cmbLineNumbers = cmb
Exit For
End If
Next

If cmbLineNumbers Is Nothing Then
MsgBox "Could not find the MZ-Tools Add line numbers button!", , _
"adding line numbers"
Exit Sub
End If

Application.VBE.MainWindow.Visible = False
Application.Cursor = xlWait

For Each VBC In VBProjectForLineNumbers.VBComponents
With VBC.CodeModule

For i = .CountOfDeclarationLines + 1 To .CountOfLines

strCurrentProc = .ProcOfLine(i, vbext_pk_Proc)

If strCurrentProc < "AddLineNumbersToErlProcs" Then

If InStr(1, .Lines(i, 1), " Erl ", vbBinaryCompare) 0 Or _
InStr(1, .Lines(i, 1), "Erl, ", vbBinaryCompare) 0 Or _
InStr(1, .Lines(i, 1), "CStr(Erl)", vbBinaryCompare) 0 And _
(strCurrentProc < strPreviousProc Or Len(strPreviousProc) = 0)
Then

bHasLineNumber = False

If Asc(Left$(.Lines(i, 1), 1)) 48 And _
Asc(Left$(.Lines(i, 1), 1)) < 58 Then
bHasLineNumber = True
End If

x = 1

If bHasLineNumber = False Then
Do Until Right$(.Lines(i - x, 1), 2) < " _"
If Asc(Left$(.Lines(i - x, 1), 1)) 48 And _
Asc(Left$(.Lines(i - x, 1), 1)) < 58 Then
bHasLineNumber = True
Exit Do
End If
x = x + 1
Loop
End If

If bHasLineNumber = False Then
'this avoids making the IDE window visible, which otherwise
'can happen occasionally, slowing the procedure down a lot
'it still can become visible hence the
'Application.VBE.MainWindow.Visible = False
'----------------------------------------------------------
If .Parent.Name < strPreviousParentName Then
.Parent.Activate
If Application.VBE.MainWindow.Visible = True Then
Application.VBE.MainWindow.Visible = False
End If
End If
.CodePane.SetSelection i, 1, i, 1
cmbLineNumbers.Execute
c = c + 1
Application.StatusBar = " " & c & " procedures done. " &
_
"Last done: " & strCurrentProc
strPreviousParentName = .Parent.Name
End If

strPreviousProc = strCurrentProc
End If
End If
Next i
End With
Next VBC

MsgBox "Added line numbers to " & c & " procedures", , _
"adding line numbers"

With Application
.Cursor = xlDefault
.StatusBar = False
End With

End Sub



Any suggestions how to do handle this better?


RBS

Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Avoid Window Message while deleting a sheet maperalia Excel Programming 4 June 19th 07 04:36 PM
HOW DO I REVERT SCROLL BOX TO CURRENT VISIBLE WINDOW? bak Excel Discussion (Misc queries) 1 April 18th 06 04:35 PM
How do you avoid window that prompts to enable auto query refresh Peter_EZEM Excel Discussion (Misc queries) 3 January 23rd 06 07:17 PM
Command Button Always Visible in window avveerkar Excel Discussion (Misc queries) 2 January 11th 06 12:21 PM
Word doc opens, but not in visible window? Ed[_9_] Excel Programming 2 October 31st 03 03:42 PM


All times are GMT +1. The time now is 10:29 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"