Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
выбор 2 разных диапазонов в формуле
 
Здравствуйте,

Рассчитывается стандарт девиейш без оутлайерсов  стандартное отклонение без выбросов
В формуле, в столбце F нужно правильно добавить диапозон F6:F14. Используется формула массива.
В ячейке К3 указан пример формулы, когда диапозон данных рассположен в одном столбце.  
Код VBA при вылнении вручную через клавищу F8 выполняется, но через "button" совсем неправильное действие происходит.
 
Проблема возникает при вызове других SUB (Protect и Unprotect). Страницы перед выполнением действий защищены protect sheet-ом. Кроме этого, макрос привязан в "Button" на странице "Reyestr". Также, если убрать вызовы sub protect и unprotect, то все начинает работать исправно.

Помогите пожалуйста с ошибкой. Не могу найти в чем проблема. В vba новичок.

Код
Option Explicit

Public MainID As String
Public ReyestrID As String
Public RN As Long
Public Cell As Range
Public bIsEmpty As Boolean
--------------------------------------------------------------


Sub DeleteLastInformationInReyestr()   'Внизу записан еще 2 Sub - Protect и Unprotect . 
                                       'Без них макро справляется с задачей, но когда их вызываешь, то перестает 
                                       'правильно работать. Кроме того, при выполнении 
                                       'посредством F8 все нормально работает. 
    
Unprotect
    
    MainID = Sheets("Main").Range("CS7").Value                           
    ReyestrID = Sheets("Reyestr").Cells(Rows.Count, 97).End(xlUp).Value
    RN = Cells(Rows.Count, 5).End(xlUp).Row
    
    If MainID = ReyestrID Then
       
          Range("E" & RN, Range("E" & RN, "DL" & RN)).Clear  'Button, к которому привязан 
                                                                'этот макрос находится 
                                                                'на этой же странице

    Else
          MsgBox "Don't Do it!", vbCritical
        
    End If

Protect
      
End Sub


----------------------------------------------------------------------
Sub Protect()
               
    ThisWorkbook.Sheets("Main").Protect "PassABC"
    ThisWorkbook.Sheets("Main").EnableSelection = xlNoRestrictions
    ThisWorkbook.Sheets("Reyestr").Protect "PassABC"
    ThisWorkbook.Sheets("Reyestr").EnableSelection = xlNoRestrictions
    
End Sub

---------------------------------------------------------------------
Sub Unprotect()
    
    ThisWorkbook.Sheets("Main").Unprotect "PassABC"
    ThisWorkbook.Sheets("Reyestr").Unprotect "PassABC"

End Sub
Изменено: Максим Аксенов - 29.12.2020 21:26:30
VBA для автокопирования последней строки и вставка ниже от себя (формул и формата)
 
Здравствуйте, друзья.

В таблице нужно, чтоб по нажатию кнопки пользователи могли добавить новую строку после последней записи в строке (т.е. макрос должен копировать определенный диапозон строки и вставить его формулы и форматы ячеек ниже от себя (без записей).

Сделал это с помощь запись макроса и в вба выдало запись кода (на картинке второй макрос ниже).
А в первом попытался автоматизировать этот код. Не смог вписать Selection.Autofill Destination: Range(

Именно вот нужно как-то автоматизировать Range в дестинейшн. На фото наглядно можете увидеть.

------------------------------------------------------------------
Код
Sub Macro2()    --- Это автозапись макроса (действия, копирования формул и формата последней строки и вставка ниже себя)
'
' Macro2 Macro
'
    Range("B56:DJ56").Select
    Selection.AutoFill Destination:=Range("B56:DJ57"), Type:=xlFillDefault
    Range("B56:DJ57").Select
End Sub

----------------------------------------------------------------
Код
Sub SetrElaveEt()    - а это чтоб автоматизировать это действие

       ActiveSheet.Select
       Range("B6").End(xlDown).Select
       Range(ActiveCell, ActiveCell.Offset(0, 112)).Select
       Selection.AutoFill Destination:=Range(Range("B6").End(xlDown), Range("B6").End(xlDown).Offset(0,112)), Type:=xlFillDefault
       Range(ActiveCell, ActiveCell.Offset(0, 112)).Select

End Sub

--------------------------------------------------------------
Изменено: Максим Аксенов - 24.12.2020 10:52:56
Автозаполнение формулы при добавлении новой строки, VBA
 
Нужно автозаполнение ячейки формулами из вышестоящих ячеек, при добавлении новой строки. Есть код для макроса, который это выполняет, но там добавление новой строки задан как двойной клик по ячейке. То есть обычным способом, когда добавляешь новую строку формула автоматом не заполняется, но выполняется это действие если сделать двойной щелчок в ячейке (одновременно добавляется новая строка и заполняется формулой). Мне нужно двойной щелчок заменить на обычный способ добавление строки.

Код макроса:


Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)'Updateby Extendoffice 20160725
   Cancel = True
   Target.Offset(1).EntireRow.Insert
   Target.EntireRow.Copy Target.Offset(1).EntireRow
   On Error Resume Next
   Target.Offset(1).EntireRow.SpecialCells(xlConstants).ClearContents
End Sub
Изменено: Максим Аксенов - 23.08.2019 15:27:19
Как убрать точки в числах
 
Здравствуйте,

Столбец содержит числа в нормальном формате и числа в текстовом формате. Убираю пробелы, а потом точки, но когда последнюю операцию проводишь, то числа в нормальном формате тоже меняются, так как там точка является разделителем целового числа. Как можно решить эту проблему?
как выполнить сложение по нескольким условиям
 
ARecvb 20 days
BInventory     24 days
C Payables n/a
Cash cycle = A +B - C
Здравствуйте. Нужна помощь. Значит в таблице нужно первые 2 значения сложить и вычесть 3-е. Значения в A и B (20 days и 24 days) являются числовыми (как скажем $1000) но значение в C - "n/a" - это текст. N/a может принять любое из А, B, С строк.. Можно ли с помощью формулы выполнить такое сложение и вычитание. Скажем если формула при обнаружении в ячейке текста n/a вместо его значения просто поставил 0 и плюсовал.. В данном случае 20 days + 24 days - 0 = 44 days . Файл с примером прикрепил
Страницы: 1
Наверх