Имеется форма ввода каждый параметр вводиться поочередно по умолчанию, а у меня таблица очень большая и это занимает секунд 5 (каждый пункт вводиться в ячейку и идет небольшой перечет. manual calculate не могу применить На листе ввода вшиты макросы которые делают изменение только ячеек на 3 столбце вверх и вниз от курсора потому менять параметр manual calculate не могу нужно чтоб вводило все сразу если это возможно конечно….
Как сделать так чтоб вводилось за один заход? пример. как есть 1. вводит CDate 2. вводит exp 3. вводит inc
В заголовке темы вводить в форму, а фактически нужно с формы на лист. Вариант: формируйте массив и выгружайте его на лист. Можно ещё отключить пересчёт, а в конце процедуры снова включить его. P.S. зачем Вы на форме добавили непонятные контролы, перекрывающие сразу два других?
Юрий М написал: зачем Вы на форме добавили непонятные контролы...?
Я не очень силен в VBA. Наверно по незнанию добавил…. Массивом это вводить в одну ячейку, а потом разбивать на все столбцы? А нельзя сделать это кодом VBA?
Отключить калькуляцию не могу, поскольку она у меня отключена по умолчанию и когда я делаю изменения VBA срабатывают на листе, а как отключить отключенное не знаю…..)))
на листе калькуляция у меня
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim shtLog As Worksheet
Dim cll As Variant
Dim lngNextRow As Long
Close #1
Filepath = ThisWorkbook.Path & "\"
'Filename = Left(ThisWorkbook.Name, InStr(ThisWorkbook.Name, ".") - 1) & "_log.txt"
Filename = "LOG_EXCEL.txt"
Open Filepath & Filename For Append As #1
On Error Resume Next
Print #1, Date & " " & Time & " " & ThisWorkbook.Name & " " & " cell " & Target.Address & " : ñòàðå = [" & original & "], íîâå = [" & Target.Value & "]"
On Error Resume Next
Close #1
original = Target.Text
'Code by Sumit Bansal from http://trumpexcel.com
'On Error GoTo Handler
'If Target.Column = 3 And Target.Value <> "" Then
'Application.EnableEvents = False
''Target.Offset(0, -1) = Format(Now(), "dd.mm.yyyy")
'Target.Offset(0, -1) = Date
'Application.EnableEvents = True
'End If
'Handler:
ActiveSheet.Calculate
Dim FilterCol As Integer
Dim FilterRange As Range
Dim CondtitionString As Variant
Dim Condition1 As String, Condition2 As String
If Intersect(Target, Range("ÔÑ")) Is Nothing Then Exit Sub
On Error Resume Next
Application.ScreenUpdating = False
'îïðåäåëÿåì äèàïàçîí äàííûõ ñïèñêà
Set FilterRange = Range("Table7")
'ñ÷èòûâàåì óñëîâèÿ èç âñåõ èçìåíåííûõ ÿ÷ååê äèàïàçîíà óñëîâèé
For Each cell In Target.Cells
FilterCol = cell.Column - FilterRange.Columns(1).Column + 1
If IsEmpty(cell) Then
Target.Parent.Range(FilterRange.Address).AutoFilter field:=FilterCol
' çàëèøຠïóñò³ òà ô³ëüòðè
Sheets("Çâ³ò").Range("A11:S11").EntireRow.Hidden = False
On Error Resume Next
Sheets("Çâ³ò").Range("B6:B15000").SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = False
Else
If InStr(1, UCase(cell.Value), " ÀÁÎ ") > 0 Then
LogicOperator = xlOr
ConditionArray = Split(UCase(cell.Value), " ÀÁÎ ")
Else
If InStr(1, UCase(cell.Value), " ² ") > 0 Then
LogicOperator = xlAnd
ConditionArray = Split(UCase(cell.Value), " ² ")
Else
ConditionArray = Array(cell.Text)
End If
End If
'ôîðìèðóåì ïåðâîå óñëîâèå
If Left(ConditionArray(0), 1) = "<" Or Left(ConditionArray(0), 1) = ">" Then
Condition1 = ConditionArray(0)
Else
Condition1 = "=*" & ConditionArray(0) & "*"
End If
'ôîðìèðóåì âòîðîå óñëîâèå - åñëè îíî åñòü
If UBound(ConditionArray) = 1 Then
If Left(ConditionArray(1), 1) = "<" Or Left(ConditionArray(1), 1) = ">" Then
Condition2 = ConditionArray(1)
Else
Condition2 = "=*" & ConditionArray(1) & "*"
End If
End If
'âêëþ÷àåì ôèëüòðàöèþ
If UBound(ConditionArray) = 0 Then
Target.Parent.Range(FilterRange.Address).AutoFilter field:=FilterCol, Criteria1:=Condition1
' çàëèøຠïóñò³ òà ô³ëüòðè
Sheets("Çâ³ò").Range("A11:S11").EntireRow.Hidden = False
On Error Resume Next
Sheets("Çâ³ò").Range("B6:B15000").SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = False
Else
Target.Parent.Range(FilterRange.Address).AutoFilter field:=FilterCol, Criteria1:=Condition1, _
Operator:=LogicOperator, Criteria2:=Condition2
' çàëèøຠïóñò³ òà ô³ëüòðè
Sheets("Çâ³ò").Range("A11:S11").EntireRow.Hidden = False
On Error Resume Next
Sheets("Çâ³ò").Range("B6:B15000").SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = False
End If
End If
Next cell
Set FilterRange = Nothing
Application.ScreenUpdating = True
End Sub