Добрый день! можно ли заменить работу пользовательской функции - макросом. Пример во вложение.
Можно ли что бы при изменение ячеек в диапазоне A2:A5000 макрос разбивал текс ячеек на куски по разделителям.
Нашол похожее, но не знаю как объединить два этих макроса.
Function ExtractElement(Txt, n, Separator) As String
' Функция выдает n-ый элемент текстовой строки Txt, где
' символ Separator используется как разделитель
Dim Txt1 As String, TempElement As String
Dim ElementCount As Integer, i As Integer
Txt1 = " "
' Если в качестве разделителя используется пробел, то убираем лишние
' и двойные пробелы
If Separator = Chr(32) Then Txt1 = Application.Trim(Txt1)
' Добавляем разделитель в конец строки (если необходимо)
If Right(Txt1, 1) <> Separator Then Txt1 = Txt1 & Separator
' Начальные значения
ElementCount = 0
TempElement = ""
' Извлекаем элемент
For i = 1 To Len(Txt1)
If Mid(Txt1, i, 1) = Separator Then
ElementCount = ElementCount + 1
If ElementCount = n Then
' Found it, so exit
ExtractElement = TempElement
Exit Function
Else
TempElement = ""
End If
Else
TempElement = TempElement & Mid(Txt1, i, 1)
End If
Next i
ExtractElement = ""
End Function
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cc As Range
Application.ScreenUpdating = False
Application.EnableEvents = False
For Each cc In Target
If Not Intersect(cc, Range("A2:A5000")) Is Nothing Then
With cc(1, 14)
.Value = IIf(Trim(cc) = "", "", Day(Now))
.EntireColumn.AutoFit
End With
End If
Next
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
<EM><STRONG>Файл удален</STRONG> - велик размер - [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>
Можно ли что бы при изменение ячеек в диапазоне A2:A5000 макрос разбивал текс ячеек на куски по разделителям.
Нашол похожее, но не знаю как объединить два этих макроса.
Function ExtractElement(Txt, n, Separator) As String
' Функция выдает n-ый элемент текстовой строки Txt, где
' символ Separator используется как разделитель
Dim Txt1 As String, TempElement As String
Dim ElementCount As Integer, i As Integer
Txt1 = " "
' Если в качестве разделителя используется пробел, то убираем лишние
' и двойные пробелы
If Separator = Chr(32) Then Txt1 = Application.Trim(Txt1)
' Добавляем разделитель в конец строки (если необходимо)
If Right(Txt1, 1) <> Separator Then Txt1 = Txt1 & Separator
' Начальные значения
ElementCount = 0
TempElement = ""
' Извлекаем элемент
For i = 1 To Len(Txt1)
If Mid(Txt1, i, 1) = Separator Then
ElementCount = ElementCount + 1
If ElementCount = n Then
' Found it, so exit
ExtractElement = TempElement
Exit Function
Else
TempElement = ""
End If
Else
TempElement = TempElement & Mid(Txt1, i, 1)
End If
Next i
ExtractElement = ""
End Function
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cc As Range
Application.ScreenUpdating = False
Application.EnableEvents = False
For Each cc In Target
If Not Intersect(cc, Range("A2:A5000")) Is Nothing Then
With cc(1, 14)
.Value = IIf(Trim(cc) = "", "", Day(Now))
.EntireColumn.AutoFit
End With
End If
Next
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
<EM><STRONG>Файл удален</STRONG> - велик размер - [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>