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

Страницы: 1
VBA не нравится имя переменной
 
Да, это я уже впоследствии пытался сам выявить причину и менял по 10 раз.
Убрал Value. Заработало!!! Спасибо!
VBA не нравится имя переменной
 
Добрый день.
Почему ему не нравится переменная?
Я так понял судя по ошибке


Код
Option Explicit
Public Function Vznosi(Legal_Entity As String, ZP As Long, coefficient_FSS As Double, Nalogi_Full_PS As Double, Nalogi_Full_EOM As Double)
    If coefficient_FSS.Value = 12 Then
        If Legal_Entity = "12" Then
            Vznosi = ZP * NalogiFull_PS
        Else
            Vznosi = ZP * Nalogi_Full_EOM
        End If
    End If
End Function
Изменено: G-man - 16.05.2017 10:38:05
VBA. Проверка формата ячейки
 
Цитата
А как работает VBA-шная, не знаете
2 основных отличия:
1. Вы переименовали аргументы в "rRng1" и "rRng2", но тогда они не будут говорящими. Я через пол-года не вспомню что в них должно быть, поэтому прописал Кирилицей, т.к. хотел чтобы аргументы были "говорящие":

2. Добавился параметр Value. Но для меня пока загадка почему он нужен, т.к. и без него работает.
VBA. Проверка формата ячейки
 
Цитата
vikttur написал: Непонятно, что хотите получить, если форматы не процентные.
Ну, как работает функция "если" (экселевская) я знаю, я же не буду Вас грузить сотней условий. Поэтому упростил вопрос.

О замечаниях: хорошо, буду иметь ввиду.
То, что Вы скинули сверху работает. Спасибо!
Условное форматирование по переменному стажу, разные цвета в зависимости от стажа
 
Я бы так сделал.
VBA. Проверка формата ячейки
 
Всем привет. Пытаюсь сделать свою функцию, одно из условий проверяет формат другой ячейки. Однако не получается правильно прописать условия...
Код
Public Function Myfunc(Знач1 As Long, Знач2 As Long)   
    If Знач1 = Cell.Style = "Percent" Or Знач2 = Cell.Style = "Percent" Then
        Myfunc = "N/A"
    ElseIf Знач1 =1 Then
        Myfunc = Знач1
    ElseIf Знач2 =2 Then
        Myfunc = Знач2
End Function

В принципе разные варианты пробовал, но просто только когда уже знаешь синтаксис.
Поиск ничего полезного не дал...
Изменено: G-man - 09.10.2016 11:51:37
VBA. Формат ячеек в столбце после преобразования (или чем заменить многократный F2, Enter)
 
oktan73, прибавьте 0 к диапазону и еще раз поменяйте формат ячеек. Мне помогает.
VBA. Поиск значения, на основе которого необходимо выделить диапазон
 
Hugo, спасибо большое, работает., единственное я поменял "1" и "2", т.к. Вы цикл запустили сверху вниз.
Для тех, кто искать будет Итоговый вариант:
Код
Option Explicit
 
Sub FormatCell()
    Dim ColN As Integer, LastRow As Long, i As Long, Form As Long, st_ As Range, fn_ As Range
    ColN = InputBox("Укажите номер столбца для поиска диапазона", "Системное сообщение")
    Form = InputBox("Укажите номер столбца который надо форматировать", "Системное сообщение")
    LastRow = Cells(Rows.Count, ColN).End(xlUp).Row    'Определяем номер последней строки
    For i = 1 To LastRow
        If Val(Cells(i, ColN)) = 1 Then    'проверяем значение из ячейки на условие равное 1
            Set st_ = Cells(i, Form)
        End If
        If Val(Cells(i, ColN)) = 2 Then    'проверяем значение из ячейки на условие равное 2
            Set fn_ = Cells(i, Form)
            If Not st_ Is Nothing Then условноеФорматирование Range(st_, fn_)
            Set st_ = Nothing
            Set fn_ = Nothing
        End If
    Next
End Sub
 
 
Sub условноеФорматирование(r As Range)
    r.FormatConditions.AddColorScale ColorScaleType:=3
    r.FormatConditions(r.FormatConditions.Count).SetFirstPriority
    r.FormatConditions(1).ColorScaleCriteria(1).Type = _
    xlConditionValueLowestValue
    With r.FormatConditions(1).ColorScaleCriteria(1).FormatColor
        .Color = 8109667
        .TintAndShade = 0
    End With
    r.FormatConditions(1).ColorScaleCriteria(2).Type = _
    xlConditionValuePercentile
    r.FormatConditions(1).ColorScaleCriteria(2).Value = 50
    With r.FormatConditions(1).ColorScaleCriteria(2).FormatColor
        .Color = 8711167
        .TintAndShade = 0
    End With
    r.FormatConditions(1).ColorScaleCriteria(3).Type = _
    xlConditionValueHighestValue
    With r.FormatConditions(1).ColorScaleCriteria(3).FormatColor
        .Color = 7039480
        .TintAndShade = 0
    End With
End Sub
VBA. Поиск значения, на основе которого необходимо выделить диапазон
 
Всем привет!
Есть Столбец A, в котором указаны числа "1" или "2", Есть столбец B, в котором указаны данные.
Необходимо, чтобы макрос шел по столбцу A, увидел число "2" и с этого момента начал выделение области, но столбца B, а когда дошел до числа "1", закончил выделение области и применил форматирование.
Есть такое код:
Код
Option Explicit
Sub FormatCell()
    Dim ColN As Integer, LastRow As Long, i As Long, Form As Long
    ColN = InputBox("Укажите номер столбца для поиска диапазона", "Системное сообщение")
    Form = InputBox("Укажите номер столбца который надо форматировать", "Системное сообщение")
    LastRow = Cells(Rows.Count, ColN).End(xlUp).Row 'Определяем номер последней строки
    For i = LastRow To 1 Step -1 'Идем циклом снизу вверх чтоб не вызвать зацикливания
    If Val(Cells(i, ColN)) = 2 Then 'проверяем значение из ячейки на условие равное 2
      
    End If
  Next
End Sub

Как начать выделение диапазона и как его закончить? Предполагаю что нужен вложенный цикл, но не знаю как прописать условия.

С помощью макрорекордера записал выделение и форматирование, но выделение мне не помогает, а форматирование еще рано применять:
Код
Sub выделение_ячейки()
    Range("B3:B13").Select
End Sub

Sub Форматирование()
    Selection.FormatConditions.AddColorScale ColorScaleType:=3
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    Selection.FormatConditions(1).ColorScaleCriteria(1).Type = _
        xlConditionValueLowestValue
    With Selection.FormatConditions(1).ColorScaleCriteria(1).FormatColor
        .Color = 8109667
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).ColorScaleCriteria(2).Type = _
        xlConditionValuePercentile
    Selection.FormatConditions(1).ColorScaleCriteria(2).Value = 50
    With Selection.FormatConditions(1).ColorScaleCriteria(2).FormatColor
        .Color = 8711167
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).ColorScaleCriteria(3).Type = _
        xlConditionValueHighestValue
    With Selection.FormatConditions(1).ColorScaleCriteria(3).FormatColor
        .Color = 7039480
        .TintAndShade = 0
    End With
End Sub

В принципе возможна и ситуация когда макрос идет от "1" до "2", просто я взял за основу чужой макрос и решил не менять этот пункт.
Макрос на объединение ячеек, ошибка
 
Kuzmich, ахринеть... и правда русская буква закралась.
Спасибо, я думал в чем-то сложнее проблема...
Макрос на объединение ячеек, ошибка
 
Всем привет!
Есть макрос на объединение ячеек:
Код
Sub ОбъединениеЯчеек()
Dim RowIndex As Long
Dim StartRow As Long
Dim LastRow As Long
Dim ColumnToMerge As Long
    
    StartRow = 1 ' с какой строки начинать
    ColumnToMerge = 1 ' в какой колонке объединять

    LastRow = Cells(Rows.Count, ColumnToMerge).End(xlUp).Row

    Application.DisplayAlerts = False

    For RowIndex = StartRow + 1 To LastRow
        With Cells(RowIndex, ColumnToMerge)
            If .Value = .Offset(-1, 0).MergeArea.Cells(1).Value Then
                Range(Cells(RowIndex, ColumnToMerge), .Offset(-1, 0)).Merge
            End If
        End With
    Next RowIndex

    Application.DisplayAlerts = True
    
End Sub
Надо чтобы я мог в диалоговом окне указать какой столбец и с какой строки начинать анализ. Добавил меню ввода:
Код
Sub ОбъединениеЯчеекМод()
Dim RowIndex As Long
Dim StartRow As Long
Dim LastRow As Long
Dim ColumnToMerge As Long
Dim r As Long
Dim c As Long
    r = InputBox("С какой строки начать объединение?", "Системное сообщение")
    с = InputBox("В каком столбце искать значения?", "Системное сообщение")
    StartRow = r ' с какой строки начинать
    ColumnToMerge = c ' в какой колонке объединять

    LastRow = Cells(Rows.Count, ColumnToMerge).End(xlUp).Row

    Application.DisplayAlerts = False

    For RowIndex = StartRow + 1 To LastRow
        With Cells(RowIndex, ColumnToMerge)
            If .Value = .Offset(-1, 0).MergeArea.Cells(1).Value Then
                Range(Cells(RowIndex, ColumnToMerge), .Offset(-1, 0)).Merge
            End If
        End With
    Next RowIndex

    Application.DisplayAlerts = True
    
End Sub

Однако теперь макрос не работает...

В чем может быть ошибка?  
Страницы: 1
Наверх