2014-06-19 4 views
0

Я беру ввод как строки из Userform, и мне нужно вывести их в ячейку. На выходе все строки объединены, но только некоторые из них выделены курсивом. Я не могу вывести строки, выделенные курсивом. Я попытался выполнить поиск документации, обмена стеками и нескольких других блогов, но все они требуют выбора из ячейки, а не для обработки строки, полученной от Userform. Любую помощь или указатели приветствуем.Печать строки, выделенной курсивом

Выходной сигнал: [1] R. Welder. Как сварить. Сварочный цех: Издатель, 2014, стр. 25-32.

Желаемый результат: [1] R. Welder. Как сварить. Сварочный цех: Издатель, 2014, стр. 25-32.

Private Sub Ok_Click() 
Dim emptyRow As Long 
Dim bookAuthor, bookTitle, loc, publish, yearBook, pageBook As String 

'Make Sheet2 active 
Sheet2.Activate 

'Determine emptyRow 
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1 

'Format Information 
bookAuthor = Author.Value + ". " 
bookTitle = TitleOfBook.Value + ". " 'Needs to be Italicized 
'bookTitle.Font.Italic 'Error: Object Required 
'TitleOfBook.Font.Italic = True 'Italicizes in userform but not in cell 
loc = Location.Value + ": " 
publish = Publisher.Value + ", " 
yearBook = Year.Value + ", " 
pageBook = "pp. " + Pages.Value + ". " 

'Transfer information 
Cells(emptyRow, 1).Value = "[" + CStr(emptyRow) + "] " + bookAuthor + bookTitle + loc + publish + yearBook + pageBook 

Unload Me 
End Sub' 
+1

Пожалуйста, разместить свой код ... – SilverShotBee

+0

«Я получаю сообщение об ошибке» не является полезным описание проблемы. Вы знаете, что это за ошибка, потому что у вас это прямо перед вами. Нет абсолютно никаких причин не включать его в свой вопрос. Какой код вы используете для 'Font.Italic' и какую ** конкретную ** ошибку вы получаете? Мы не можем отлаживать код для вас, который вы не включаете в свой вопрос. –

+1

Просто замечание относительно вашего кода: строка 'Dim bookAuthor, bookTitle, loc, publish, yearBook, pageBook Поскольку String будет объявлять только' pageBook' как строку, все остальные переменные будут 'Variant'. – MP24

ответ

3

Настройте стиль шрифта ячейки, в которой вы пишете, в качестве своей ячейки, выделенной курсивом, а не строки;

With Range("A1") 
    .Font.Italic = True 
    .Value = "Roast Beef" 
End With 

Edit; Чтобы наклонная часть ячейки выбрать его содержание по смещению и длиной:

emptyRow = 1 
bookAuthor = "R. Welder." 
bookTitle = "How to weld" 
loc = "Welding Shop" 
publish = "Publisher" 
yearBook = "2014" 
pageBook = "pp25-32" 

Dim temp As String, begin As Long 
'// store everything upto the start of italic part 
temp = "[" & emptyRow & "] " & bookAuthor & " " 
'// store its length 
begin = Len(temp) 

With Range("A1") 
    '// set the value to everything 
    .Value = temp & bookTitle & " " & loc & " " & publish & " " & yearBook & " " & pageBook 
    '// we know where the italic text need to be 
    .Characters(begin + 1, Len(bookTitle)).Font.Italic = True 
End With 
+0

Привет, Алекс, мне нужно сделать курсивом только часть букв в камере. Скажите только «Говядина» из «Жареная говядина». – JustAJunior

+0

Обновлен ответ –

+0

Alex, есть ли общий способ сделать это? Скажем, что две строки «Жареный» и «Говядина» могут меняться в зависимости от ввода пользователя. Скажем, что пользователь ввел «Непровожденный» и «Хэм». Как я мог сделать вторую строку («Хэм», «Говядина») курсивом? Я мог использовать счетчики для подсчета длины строки и использовать метод, показанный выше, но просто интересно, может ли быть лучший метод. – JustAJunior

Смежные вопросы