4:06 AM 3/10/2019 Help PleaseAnyone who knows the more complex VBA ?
When I close a file, I have several things I have to do, they are now all done by the VBA. I was able tofigure out. This Timer and the If-then-else seem to be way above my ability.I now have to remember to detach reference files before sending them in, but when I open and close the .dgn file while making changes I do not want to detach the reference then. Only upon completion of the .dgn. when I close for the last timebefore sending in my work.This is the simple Macro that detaches the reference file:Sub XrefDet() 'the () is the ( and ) but it looks funny ' 031019 - Detach Reference file CadInputQueue.SendCommand "Reference Detach All" End Sub
So I wanted to have an If-then-else that would time out in say 4-8seconds and it would equal a noor a strike say space bar and it = no, but you could put Y if you wanted it to detach. I am attaching the timer from the help file. I could not get to work myself, but this is it.
This example uses the Timer function to pause the application. The example also uses DoEvents to yield to other processes during the pause.
Dim PauseTime, Start, Finish, TotalTimeIf (MsgBox("Press Yes to pause for 5 seconds", 4)) = vbYes Then PauseTime = 5 ' Set duration. Start = Timer ' Set start time. Do While Timer < Start + PauseTime DoEvents ' Yield to other processes. Loop Finish = Timer ' Set end time. TotalTime = Finish - Start ' Calculate total time. MsgBox "Paused for " & TotalTime & " seconds"Else EndEnd If
I also looked up the if-then-else and it is also attached.This example shows both the block and single-line forms of the If...Then...Else statement. It also illustrates the use of If TypeOf...Then...Else.
Dim Number, Digits, MyStringNumber = 53 ' Initialize variable.If Number < 10 Then Digits = 1ElseIf Number < 100 Then' Condition evaluates to True so the next statement is executed. Digits = 2Else Digits = 3End If ' Assign a value using the single-line form of syntax.If Digits = 1 Then MyString = "One" Else MyString = "More than one"
Use If TypeOf construct to determine whether the Control passed into a procedure is a text box.
Sub ControlProcessor(MyControl As Control) If TypeOf MyControl Is CommandButton Then Debug.Print "You passed in a " & TypeName(MyControl) ElseIf TypeOf MyControl Is CheckBox Then Debug.Print "You passed in a " & TypeName(MyControl) ElseIf TypeOf MyControl Is TextBox Then Debug.Print "You passed in a " & TypeName(MyControl) End IfEnd Sub
These are beyond my ability to under stand, I have tried on my own and spent a number of hours trying to get something even simple and than build from there. Any Help ? All I can say is thank you and offer some money for the help.
It is better to implement your task by using MDL because there is an existed event for file close. VBA is not very suitable for doing underlying works.
thank you, but I am not sure what MDL or how to use them
there was a VBA Routine already detaching the References, but at times I do not want them unloaded and I was going to use the if then to ask me if I wanted to detach the files and I could respond yes Y or No N or press any key like the space bar and it would not detach unless I specifically responded with a Y. not sure how I would use an MDL for this, but thank you for even giving a reply.
Version: MicroStation V8i SS 10
RJB Phillips III (Richard) Praise the Lord for His Mercy and grace in Christ Jesus
Richard Phillips said: if I wanted to detach the files and I could respond yes Y or No N or press any key like the space bar and it would not detach unless I specifically responded with a Y.
When I key in Reference Detach All in Key-in window, MS will pop up a dialog to ask me this. So why do you still need to program? Please see my attached pic.
Thank you so much I did try the key-In you posted but I never got the question you mentioned Barry Lothina also replied and it is working .Thank you again for your responses and help.
Richard Phillips said:I did try the key-In you posted [Reference Detach All] but I never got the question you mentioned
The key-in works, whether or not you see the question. It does what it says on the tin: detaches all reference attachments.
The first time you use that key-in, it pops the message box with the question. There's also a tick-box Don't ask me this question again. If you checked that box, then you don't see the question again. The first time you used that key-in may have been some time (maybe years) ago, so it's easy to forget that you already chose that option.
If you want to know more about Reference Detach All please post a new question in the MicroStation Forum.
Regards, Jon Summers LA Solutions
There is a confusion. a Young man
Youngan. Fu kept wanting me to try that
so I did and was replying to his comment. Sorry I was trying to let him know that it did not work for me