VBA Строковые символы Excel - PullRequest
       0

VBA Строковые символы Excel

0 голосов
/ 14 апреля 2020

Я - полный новичок в VBA, поэтому, пожалуйста, наберите как можно больше ответов.

Мне нужно выделить жирным шрифтом str2. Я разработал, как это сделать, основываясь на заданном количестве символов, однако у меня есть проблема, потому что str02 - это Dynami c. Это имя клиента, поэтому длина меняется, и я не могу считать символы, потому что не знаю, сколько их будет.

, т. Е.

Уважаемый господин клиент (длина изменяется),

полужирный Ваш запрос был одобрен полужирный

Спасибо

Public Sub ExampleConcatenate()

    Dim str1 As String
    Dim str01 As String
    Dim str02 As String
    Dim str03 As String
    Dim str2 As String
    Dim str3 As String

    str1 = Range("A14").Value
    str01 = " "
    str02 = Worksheets("Restructure Calculator").Range("D5").Value
    str03 = vbNewLine
    str2 = Range("A15").Value
    str3 = Range("A16").Value

    Range("A1").Value = str1 & str01 & str02 & str03 & str03 & str2 & str03 & str3

End Sub

1 Ответ

1 голос
/ 14 апреля 2020

Вот как может выглядеть ваш код. Пожалуйста, попробуйте.

Sub ExampleConcatenate()

    Dim Output As String
    Dim Project As String
    Dim ProjectID As String
    Dim Decision As String
    Dim BodyText As String
    Dim n As Integer

    Project = Range("A14").Value
    ProjectID = Worksheets("Restructure Calculator").Range("D5").Value
    Decision = Range("A15").Value
    BodyText = Range("A16").Value

    Output = Project & " " & ProjectID & String(2, Chr(10))
    n = Len(Output)
    Output = Output & Decision & Chr(10) & BodyText

    With Cells(1, "A")
        .Value = Output
        With .Characters(Start:=n + 1, Length:=Len(Decision)).Font
            .Name = "Calibri"
            .FontStyle = "Bold"
            .Size = 12
            .Underline = True ' xlUnderlineStyleNone
        End With
    End With
    Rows(1).AutoFit
End Sub

А затем исправьте это.

  1. Ваша система нумерации строк приведет к необходимости в телефонной книге для отслеживания ваших номеров. Дайте значимые имена вашим переменным и не давайте обобщенных c имен существующим переменным, которые уже имеют значимые имена, такие как Str03 = vbNewLine, что, кстати, не имеет большого логического смысла, если учесть, что Str03 объявлен как string, тогда как vbNewLine - перечисление типа данных Long.
  2. Я дал имена переменным, которые позволили мне разобраться. Я уверен, что это не будет смысл, который вы намеревались. Вы можете использовать Edit> Replace, чтобы переименовать переменные в коде.
  3. vbNewLine не отображается как CR в ячейке Excel (по крайней мере, в связи с функцией String (), которая не была для меня) ). Я заменил его на Chr (10).
  4. За исключением ссылки на рабочую таблицу ("Калькулятор реструктуризации"), все ссылки на листы находятся на ActiveSheet, что означает, что для них не объявлена ​​рабочая таблица. Это всего лишь вопрос времени, когда ваш код случайно запишет в рабочую таблицу («Калькулятор реструктуризации»), уничтожив там данные. Лучше создать переменную для рабочего листа, в который вы хотите записать, до того, как это произойдет, и убедиться, что все диапазоны и ячейки в вашем коде идентифицированы с рабочим листом, к которому они относятся.
  5. Мой код показывает вам, как идентифицировать расположение текста, который вы sh выделите. Также показано, как установить шрифт для этого раздела текста. Вы можете wi sh изменить настройки. Это легко сделать с помощью настроек, которые я предоставляю.

И последнее, но не менее важное: имейте в виду, что Excel начинает нарушать некоторые ограничения, когда в одной ячейке содержится более 255 символов. Чтобы избежать возможных проблем в будущем, рассмотрите возможность размещения текста по нескольким строкам, если его общая длина превышает 255 символов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...