Наши преимущества

VBA в Excel

vitaly3000

Турист
Credits
0
Помогите разобраться с таким вопросом.

В VBA вообще ни бум-бум. Так что вопрос простой.

Есть текст в ячейке таблицы. По Alt+Enter я могу его разбить на несколько строк в пределах одной ячейки. Как это сделать средствами VBA? То есть какой макрос надо написать, чтобы в большой таблице преобразовать однотипные ячейки.

Например, у меня есть столбец ФИО - там данные расположены в строчку таким образом:
фамилия_имя_отчество.

Надо, чтобы было в столбец так:
фамилия
имя
отчество
 
Просто вставь перевод строки.
Например:
Dim sh As Excel.Worksheet
Set sh = ActiveSheet
sh.Cells(1, 1) = "qwe" & Chr(10) & "asd"

В ячейке будет:
qwe
asd
 
ploki сказал(а):
Просто вставь перевод строки.
Например:
Dim sh As Excel.Worksheet
Set sh = ActiveSheet
sh.Cells(1, 1) = "qwe" & Chr(10) & "asd"

В ячейке будет:
qwe
asd

Спасибо, но как же именно разбить строку, которая уже есть в этой ячейке? Как выглядит функция замены подстроки в строке (которая, например, все пробелы в строке заменит переводами строки)?
 
Replace(expression, find, replace[, start[, count[, compare]]])

Например:
Dim sh As Excel.Worksheet
Dim st As String

Set sh = ActiveSheet
st = sh.Cells(1, 1)
st = Replace(st, " ", Chr(10))
sh.Cells(1, 1) = st
 
Последнее редактирование модератором:
Спасибо ploki!

Я уже нашел эту функцию и вставил ее в рабочую книгу Excel таким образом:

Dim sh As Excel.Worksheet
Set sh = ActiveSheet

For nCounter = 1 To ПоследняяСтрока Step 1
sh.Cells(nCounter, 2) = Replace(sh.Cells(nCounter, 1), " ", Chr(10))
Next


Сформировал отдельный столбик значений, отформатированных нужным образом.
 
В VВА есть стандартная функция SPLIT("исходная строка","разделитель")
получишь массивю Выглядит это так.
txt="Привет с большого бадуна"
str=split(txt," ")
получаешь массив str(), где:
str(0)="Привет"
str(1)="с"
str(2)="большого"
str(3)="бадуна"
Чтобы объеденить -> функ. JOIN - синтаксис такой же.
 
ffantasm сказал(а):
В VВА есть стандартная функция SPLIT("исходная строка","разделитель")
Чтобы объеденить -> функ. JOIN - синтаксис такой же.

Спасибо за полезную информацию, ffantasm! Если бы знал это месяц назад, то не было бы проблем с решением другой проблемы по формированию простенькой БД в txt формате :) Сейчас задачи изменились и мне проще использовать xml.
 
Последнее редактирование модератором:
Такой вопрос :
Есть ли в VBA для Excel такая штука как выполнения макроса при закрытии и открытии книги .

Смысл в чем:
Человеку открывающему файл листы которые ему не нужны прячутся, он жмакается кнопа выбирающая тип работы с файлом, в зависимости от нажатия визибл присваивается нужным листам.
При закрытии все листы становятся визибл.

Такой фишки как workbook.oncreate workbook.onopen workbook.onclose не нашел :((
 
Добавил макрос в модуль пустой книги, открываю , закрываю книгу ничего не происходит, макрос не срабатывает.
Тестовый макро такой

Private Sub Workbook_Open()
Dim Msg, Style, Title, Help, Ctxt, Response, MyString
Msg = "Do you want to continue ?" ' Define message.
Style = vbYesNo + vbCritical + vbDefaultButton2 ' Define buttons.
Title = "MsgBox Demonstration" ' Define title.
Help = "DEMO.HLP" ' Define Help file.
Ctxt = 1000 ' Define topic
' context.
' Display message.
Response = MsgBox(Msg, Style, Title, Help, Ctxt)
If Response = vbYes Then ' User chose Yes.
MyString = "Yes" ' Perform some action.
Else ' User chose No.
MyString = "No" ' Perform some action.
End If
End Sub
 
Да нет. Макросы включены сто процентов... Блин таки нет решения... Жаль
 
Ну а пошаговое выполнение что дает? Может в самом макросе чушь написана )))
 
Процедура где находится? в модуле объекта книга
Microsoft Excel objects/ThisWorkbook(ЭтаКнига)?
или в модулях книги?
Modules/Module1?
Должна быть в модуле объекта
 
Сработало ! Не туда засунул , спасибо аграменнейшее!
 
Верх