![]() |
There must be a better way to code this
I am no VBA pro but I do write several semi complicated macro.
Here is that I wrote to check for two errors using if then else statements. It works perfectly but I wonder I it could be written more professionally. If error1 < 0 Then 'error 1 check If error2 < 0 Then 'error 1 & 2 found MsgBox error1 & " data input are missing and highlighted in yellow. " _ & error2 & " entries are a missmatch and highlighted in blue." Exit Sub Else 'error 1 only found MsgBox error1 & " data input are missing and highlighted in yellow." Exit Sub End If Else If error2 < 0 Then 'error 2 only found MsgBox error2 & " entries entries are a missmatch and highlighted in blue." Exit Sub Else ' no error Exit Sub End If End If |
There must be a better way to code this
Hi
The exit sub statements are not needed, as the code will terminate after all. Look at this: Sub aaa() If error1 < 0 And error2 < 0 Then 'error 1 & 2 found 'error 1 check MsgBox error1 & " data input are missing and highlighted in yellow. " _ & error2 & " entries are a missmatch and highlighted in blue." ElseIf error1 < 0 Then 'error 1 only found MsgBox error1 & " data input are missing and highlighted in yellow." ElseIf error2 < 0 Then 'error 2 only found MsgBox error2 & " entries entries are a missmatch and highlighted in blue." End If End Sub Regards, Per On 21 Jan., 22:01, Frank wrote: I am no VBA pro but I do write several semi complicated macro. Here is that I wrote to check for two errors using if then else statements. It works perfectly but I wonder I it could be written more professionally. If error1 < 0 Then 'error 1 check * * If error2 < 0 Then *'error 1 & 2 found * * * * MsgBox error1 & " data input are missing and highlighted in yellow. " _ * * * * & error2 & " entries are a missmatch and highlighted in blue." * * * * Exit Sub * * * * Else 'error 1 only found * * * * MsgBox error1 & " data input are missing and highlighted in yellow." * * * * Exit Sub * * End If * * Else * * If error2 < 0 Then *'error 2 only found * * * * MsgBox error2 & " entries entries are a missmatch and highlighted in blue." * * * * Exit Sub * * * * Else ' no error * * * * Exit Sub * * End If End If |
There must be a better way to code this
Dim msg As String
msg = "" If error1 < 0 Then 'error 1 check msg = error1 & " data input are missing and highlighted in yellow." End If If error2 < 0 Then 'error 1 & 2 found msg = error2 & " entries entries are a missmatch and highlighted in blue." End If If msg < "" Then MsgBox msg HTH Bob "Frank" wrote in message ... I am no VBA pro but I do write several semi complicated macro. Here is that I wrote to check for two errors using if then else statements. It works perfectly but I wonder I it could be written more professionally. If error1 < 0 Then 'error 1 check If error2 < 0 Then 'error 1 & 2 found MsgBox error1 & " data input are missing and highlighted in yellow. " _ & error2 & " entries are a missmatch and highlighted in blue." Exit Sub Else 'error 1 only found MsgBox error1 & " data input are missing and highlighted in yellow." Exit Sub End If Else If error2 < 0 Then 'error 2 only found MsgBox error2 & " entries entries are a missmatch and highlighted in blue." Exit Sub Else ' no error Exit Sub End If End If |
There must be a better way to code this
Untested but only slightly restructured
If error1 < 0 and error2 < 0 Then 'error 1 and error 2 detected MsgBox error1 & " data input are missing and highlighted in yellow. " _ & error2 & " entries are a missmatch and highlighted in blue." Elseif error1 < 0 'error 1 only found MsgBox error1 & " data input are missing and highlighted in yellow." Elseif error2 < 0 Then 'error 2 only found MsgBox error2 & " entries entries are a missmatch and highlighted in blue. End If There is no need for Exit Sub if this is all there is since whenever an IF condition is satisfied control passes to the the statements below that if and then to endif without testing other conditions If you sub has more code after this, then how about adding after the above If error1 < 0 or error2 < 0 then exit sub "Frank" wrote in message ... I am no VBA pro but I do write several semi complicated macro. Here is that I wrote to check for two errors using if then else statements. It works perfectly but I wonder I it could be written more professionally. If error1 < 0 Then 'error 1 check If error2 < 0 Then 'error 1 & 2 found MsgBox error1 & " data input are missing and highlighted in yellow. " _ & error2 & " entries are a missmatch and highlighted in blue." Exit Sub Else 'error 1 only found MsgBox error1 & " data input are missing and highlighted in yellow." Exit Sub End If Else If error2 < 0 Then 'error 2 only found MsgBox error2 & " entries entries are a missmatch and highlighted in blue." Exit Sub Else ' no error Exit Sub End If End If |
There must be a better way to code this
You could try this. Its not that much shorter, but its a little easier to
read. Hope this helps! If so, let me know, click "YES" below. Select Case True Case error1 < 0 And error2 < 0 MsgBox error1 & " data input are missing and highlighted in yellow. " _ & error2 & " entries are a missmatch and highlighted in blue." Exit Sub Case error1 < 0 MsgBox error1 & " data input are missing and highlighted in yellow." Exit Sub Case error2 < 0 MsgBox error2 & " entries entries are a missmatch and highlighted in blue." Exit Sub Case Else Exit Sub End Select -- Cheers, Ryan "Frank" wrote: I am no VBA pro but I do write several semi complicated macro. Here is that I wrote to check for two errors using if then else statements. It works perfectly but I wonder I it could be written more professionally. If error1 < 0 Then 'error 1 check If error2 < 0 Then 'error 1 & 2 found MsgBox error1 & " data input are missing and highlighted in yellow. " _ & error2 & " entries are a missmatch and highlighted in blue." Exit Sub Else 'error 1 only found MsgBox error1 & " data input are missing and highlighted in yellow." Exit Sub End If Else If error2 < 0 Then 'error 2 only found MsgBox error2 & " entries entries are a missmatch and highlighted in blue." Exit Sub Else ' no error Exit Sub End If End If . |
There must be a better way to code this
On Jan 21, 1:56*pm, Per Jessen wrote:
Hi The exit sub statements are not needed, as the code will terminate after all. Look at this: Sub aaa() If error1 < 0 And error2 < 0 Then 'error 1 & 2 found 'error 1 check * * MsgBox error1 & " data input are missing and highlighted in yellow. " _ * * & error2 & " entries are a missmatch and highlighted in blue." ElseIf error1 < 0 Then 'error 1 only found * * MsgBox error1 & " data input are missing and highlighted in yellow." ElseIf error2 < 0 Then *'error 2 only found * * MsgBox error2 & " entries entries are a missmatch and highlighted in blue." End If End Sub Regards, Per On 21 Jan., 22:01, Frank wrote: I am no VBA pro but I do write several semi complicated macro. Here is that I wrote to check for two errors using if then else statements. It works perfectly but I wonder I it could be written more professionally. If error1 < 0 Then 'error 1 check * * If error2 < 0 Then *'error 1 & 2 found * * * * MsgBox error1 & " data input are missing and highlighted in yellow. " _ * * * * & error2 & " entries are a missmatch and highlighted in blue." * * * * Exit Sub * * * * Else 'error 1 only found * * * * MsgBox error1 & " data input are missing and highlighted in yellow." * * * * Exit Sub * * End If * * Else * * If error2 < 0 Then *'error 2 only found * * * * MsgBox error2 & " entries entries are a missmatch and highlighted in blue." * * * * Exit Sub * * * * Else ' no error * * * * Exit Sub * * End If End If- Hide quoted text - - Show quoted text - Thanks. Not familiar with elseif but it looks very simple! |
There must be a better way to code this
I tend to do that sort of thing this way:
msg="" If error1 < 0 Then msg = error1 & _ " data input are missing and highlighted in yellow. " If error2 < 0 Then if msg < "" then msg = msg & " " msg = msg & error2 & " entries are a missmatch and highlighted in blue." end if If msg < "" Then MsgBox msg Exit Sub End If --- "Frank" wrote: Here is that I wrote to check for two errors using if then else statements. It works perfectly but I wonder I it could be written more professionally. |
There must be a better way to code this
Try doing it like this...
Dim Msg As String ........ ........ Msg = "" If Error1 < 0 Then Msg = Error1 & " data input are missing and highlighted in yellow." If Error2 < 0 Then Msg = Trim(Msg & " " & Error2 & " entries are a mismatch and highlighted in blue.") If Len(Msg) 0 Then MsgBox Msg -- Rick (MVP - Excel) "Frank" wrote in message ... I am no VBA pro but I do write several semi complicated macro. Here is that I wrote to check for two errors using if then else statements. It works perfectly but I wonder I it could be written more professionally. If error1 < 0 Then 'error 1 check If error2 < 0 Then 'error 1 & 2 found MsgBox error1 & " data input are missing and highlighted in yellow. " _ & error2 & " entries are a missmatch and highlighted in blue." Exit Sub Else 'error 1 only found MsgBox error1 & " data input are missing and highlighted in yellow." Exit Sub End If Else If error2 < 0 Then 'error 2 only found MsgBox error2 & " entries entries are a missmatch and highlighted in blue." Exit Sub Else ' no error Exit Sub End If End If |
All times are GMT +1. The time now is 11:24 AM. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com