Как правильно отформатировать текстовое оформление Ascii для Excel MsgBox

#excel #vba #text #format

#excel #vba #текст #формат

Вопрос:

Запоздалое поздравление с 1 апреля, друзья. Как и большинство из вас, я всегда чувствовал, что Excel не хватает графического изображения черепа и костей как части vba MsgBox рутины. Честно говоря, красный vbCritical просто не заходит достаточно далеко, чтобы встревожить пользователей, когда они действительно сделали что-то ужасное.

Итак, я подумал, хватит, мне нужен ЧЕРЕП! У многих моих клиентов есть уровень профессионализма, который не позволяет мне создавать индивидуальные ФОРМЫ. Таким образом, не желая нарушать какие-либо правила поведения, я рассмотрел графические текстовые параметры ASCII-ЧЕРЕПОВ. Быстрый поиск в DuckDuck принес мне несколько лучших коллекций черепов в Интернете.

На данный момент я решил, что собираюсь заняться бизнесом, но, как вы можете видеть ниже, MsgBox версия моего любимого шедевра оставляет желать лучшего! Ясно, что это никого не встревожит… 🙁

Я подозреваю, что проблема заключается в том, что метод, который я использую для хранения рисунков (поскольку Comment.Text ), форматируется каким-то нежелательным образом. Есть ли способ контролировать это или есть лучший способ сохранить текст в Excel, чтобы сохранить формат текстового оформления?

Мой код vba является базовым: MsgBox Range("A1").Comment.Text

Недостаточно страшно!

Также …. это отлично работает на SO!

                  uuuuuuu
             uu$$$$$$$$$$$uu
          uu$$$$$$$$$$$$$$$$$uu
         u$$$$$$$$$$$$$$$$$$$$$u
        u$$$$$$$$$$$$$$$$$$$$$$$u
       u$$$$$$$$$$$$$$$$$$$$$$$$$u
       u$$$$$$$$$$$$$$$$$$$$$$$$$u
       u$$$$$$"   "$$$"   "$$$$$$u
       "$$$$"      u$u       $$$$"
        $$$u       u$u       u$$$
        $$$u      u$$$u      u$$$
         "$$$$uu$$$   $$$uu$$$$"
          "$$$$$$$"   "$$$$$$$"
            u$$$$$$$u$$$$$$$u
             u$"$"$"$"$"$"$u
  uuu        $$u$ $ $ $ $u$$       uuu
 u$$$$        $$$$$u$u$u$$$       u$$$$
  $$$$$uu      "$$$$$$$$$"     uu$$$$$$
u$$$$$$$$$$$uu    """""    uuuu$$$$$$$$$$
$$$$"""$$$$$$$$$$uuu   uu$$$$$$$$$"""$$$"
 """      ""$$$$$$$$$$$uu ""$"""
           uuuu ""$$$$$$$$$$uuu
  u$$$uuu$$$$$$$$$uu ""$$$$$$$$$$$uuu$$$
  $$$$$$$$$$""""           ""$$$$$$$$$$$"
   "$$$$$"                      ""$$$$""
     $$$"                         $$$$"
  

Комментарии:

1. В текстовом оформлении ASCII часто используется шрифт с одним интервалом (непропорциональный), который не используется Msgbox…

2. @SiddharthRout чтобы было понятно, я копирую на ЗАМЕТКУ или желтую вкладку в ячейке, которая кажется более удобной для текста, чем сама ячейка.

3. Спасибо @TimWilliams. Я не был знаком с термином «Моно-интервал», но я подозреваю, что это может быть проблемой. Я проведу несколько поисков, используя этот термин, и посмотрю, найду ли я что-нибудь.

4. То, что вы хотите от Msgbox (изменить шрифт по умолчанию), не так просто — google.com /…

5. Сохранение текста в комментарии не влияет на содержимое — если вы измените шрифт комментария на (например) Courier, он будет выглядеть «правильно»

Ответ №1:

Как указано в комментариях: ASCII-формат часто использует шрифт с моноразрядным интервалом (непропорциональный), который не является тем, что используется из коробки Msgbox . Так что это очень сложно, если не невозможно, сделать строго с помощью MsgBox инструмента.

Однако вместо этого создайте свой собственный MsgBox и вызывайте его при необходимости. Используя Courier в качестве шрифта для Label1 (Courier имеет моно-интервал).

введите описание изображения здесь

 Option Explicit
Private Sub UserForm_Initialize()
    Dim DispStr() As String

    ReDim DispStr(1 To 26)

DispStr(1) = "                 uuuuuuu"
DispStr(2) = "             uu$$$$$$$$$$$uu"
DispStr(3) = "          uu$$$$$$$$$$$$$$$$$uu"
DispStr(4) = "         u$$$$$$$$$$$$$$$$$$$$$u"
DispStr(5) = "        u$$$$$$$$$$$$$$$$$$$$$$$u"
DispStr(6) = "       u$$$$$$$$$$$$$$$$$$$$$$$$$u"
DispStr(7) = "       u$$$$$$$$$$$$$$$$$$$$$$$$$u"
DispStr(8) = "       u$$$$$$""   ""$$$""   ""$$$$$$u"
DispStr(9) = "       ""$$$$""      u$u       $$$$"""
DispStr(10) = "        $$$u       u$u       u$$$"
DispStr(11) = "        $$$u      u$$$u      u$$$"
DispStr(12) = "         ""$$$$uu$$$   $$$uu$$$$"""
DispStr(13) = "          ""$$$$$$$""   ""$$$$$$$"""
DispStr(14) = "            u$$$$$$$u$$$$$$$u"
DispStr(15) = "             u$""$""$""$""$""$""$u"
DispStr(16) = "  uuu        $$u$ $ $ $ $u$$       uuu"
DispStr(17) = " u$$$$        $$$$$u$u$u$$$       u$$$$"
DispStr(18) = "  $$$$$uu      ""$$$$$$$$$""     uu$$$$$$"
DispStr(19) = "u$$$$$$$$$$$uu    """"""""""    uuuu$$$$$$$$$$"
DispStr(20) = "$$$$""""""$$$$$$$$$$uuu   uu$$$$$$$$$""""""$$$"""
DispStr(21) = """""""      """"$$$$$$$$$$$uu """"$"""""""
DispStr(22) = "           uuuu """"$$$$$$$$$$uuu"
DispStr(23) = "  u$$$uuu$$$$$$$$$uu """"$$$$$$$$$$$uuu$$$"
DispStr(24) = "  $$$$$$$$$$""""""""           """"$$$$$$$$$$$"""
DispStr(25) = "   ""$$$$$""                      """"$$$$"""""
DispStr(26) = "     $$$""                         $$$$"""

Me.Label1.Caption = Join(DispStr, vbNewLine)
End Sub

Private Sub CommandButton1_Click()
    Unload Me
End Sub
  

введите описание изображения здесь

Очевидно, вы можете поиграть с форматированием самостоятельно, чтобы получить желаемый конечный результат