Formatted MsgBoxes
I got really tired of having MsgBoxes that reached across the screen to deliver one or two lines of text, so I decided to write a function that would keep them about the same width. The function will add line breaks to keep the length of each line about 70, with variation according to content. I tried to keep the context of the input about the same by only breaking at spaces, dashes, and underscores. The code's a little sloppy, in my opinion, but sadly I'm not even sure how to clean it up.
AI
AIサマリー: This codebase represents a historical implementation of the logic described in the metadata. Our preservation engine analyzes the structure to provide context for modern developers.
ソースコード
Public Function FormattedMsg(Prompt As String, Optional Buttons As VbMsgBoxStyle = vbOKOnly, Optional Title As String = "MsgBox") As VbMsgBoxResult If Len(Prompt) > 80 Then Dim L As Long, R As Long, LChr As String, RChr As String, Break As Long, tmp(1) As String tmp(0) = Prompt Prompt = "" Do Until tmp(0) = "" L = 69 R = 70 LChr = Mid(tmp(0), L, 1) RChr = Mid(tmp(0), R, 1) Do Until LChr = " " Or LChr = "-" Or LChr = "_" Or L = 1 L = L - 1 LChr = Mid(tmp(0), L, 1) Loop Do Until RChr = " " Or RChr = "-" Or RChr = "_" Or R = Len(tmp(0)) R = R + 1 RChr = Mid(tmp(0), R, 1) Loop Break = IIf(70 - L < R - 70, L, R) tmp(1) = Left(tmp(0), Break) & vbCrLf tmp(1) = IIf(Left(tmp(1), 1) <> " ", tmp(1), Mid(tmp(1), 2)) tmp(0) = Mid(tmp(0), Break) If Len(tmp(0)) < 76 Then tmp(1) = tmp(1) & IIf(Left(tmp(0), 1) <> " ", tmp(0), Mid(tmp(0), 2)) tmp(0) = "" End If Prompt = Prompt & tmp(1) Loop End If FormattedMsg = MsgBox(Prompt, Buttons, Title) End Function
オリジナルのコメント (3)
Wayback Machineから復元