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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 281 След.
Извлечь все данные из выпадающего списка
 
Вариант через пользовательскую функцию.
Это в формулу на лист:
Код
=СПИСОК(A1)

Это в стандартный модуль:
Код
Function СПИСОК(ячейка As Range) As String
    Dim ff As String
    ff = ячейка.Validation.Formula1
    If Left(ff, 1) = "=" Then
        Dim rr As Range
        Set rr = Range(Mid(ff, 2))
        Set rr = Intersect(rr, rr.Parent.UsedRange)
        If rr.Cells.CountLarge = 1 Then
            СПИСОК = rr.Value
            Exit Function
        End If
        
        Dim arr As Variant
        arr = rr.Value
        
        Dim brr As Variant
        ReDim brr(1 To UBound(arr, 1) * UBound(arr, 2))
        
        Dim ya As Long, xa As Long, yb As Long
        For ya = 1 To UBound(arr, 1)
            For xa = 1 To UBound(arr, 2)
                yb = yb + 1
                brr(yb) = arr(ya, xa)
            Next
        Next
        СПИСОК = Join(brr, ";")
    Else
        СПИСОК = ff
    End If
End Function
Условие для СУММПРОИЗВ в работе с текстовыми значениями
 
Код
=СУММПРОИЗВ((--ПСТР(D6:D9;1;ПОИСК("/";D6:D9&"/")-1)))-СУММПРОИЗВ(D6:D9)
Условие для СУММПРОИЗВ в работе с текстовыми значениями
 
Код
=СУММПРОИЗВ((--ПСТР(D6:D9;1;ПОИСК("/";D6:D9&"/")-1)))
Вариант без формулы массива.
Только почему "надо 4650". Выглядит, что это неправильно.
Случайные числа из диапазона в зависимости от числа., Случайное число генерируется, при повышении диапазона.
 
Цитата
написал:
Вставил этот код в структуру листа, но ничего не сработало.
Макрос запускали? С ленты? Из редактора кода?
вывод текста по цвету яейки, вывод текста по цвету ячейки
 
Вариант через пользовательскую функцию.
Код
'Это на лист.
=ЦВЕТЯЧЕЙКИ(A1)

'Это в стандартный модуль.
Function ЦВЕТЯЧЕЙКИ(ячейка As Range) As Long
    ЦВЕТЯЧЕЙКИ = ячейка.Interior.ColorIndex
End Function
СУММЕСЛИМН два условия в одном диапозоне
 
Цитата
написал:
+ если ячейка дата акта пустая.
Код
=СУММЕСЛИМН(C3:C15;B3:B15;"г. Ржев";D3:D15;">="&ДАТАЗНАЧ("01.01.2025"))+СУММЕСЛИМН(C3:C15;B3:B15;"г. Ржев";D3:D15;"=")
СУММЕСЛИМН два условия в одном диапозоне
 
Код
=СУММЕСЛИМН(C3:C15;B3:B15;"г. Ржев";D3:D15;">="&ДАТАЗНАЧ("01.01.2025"))
Объединение файлов с удалением данных.
 
Код
Option Explicit
Private colTargetArrays As Collection
Private ARR_FIELDS As Variant

Sub Неликвиды()
    Dim aFiles As Variant
    aFiles = ShowFileDialog()
    If IsEmpty(aFiles) Then Exit Sub
    Set colTargetArrays = New Collection
    ARR_FIELDS = Array("дней", "Код товара", "Товар")
    
    Application.ScreenUpdating = False
    Dim Application_Calculation As XlCalculation
    Application_Calculation = Application.Calculation
    Application.Calculation = xlCalculationManual
    
    CloseEmptyWb
    
    Dim vFile As Variant, wbSource As Workbook
    For Each vFile In aFiles
        Set wbSource = Workbooks.Open(vFile, False, True)
        GetDataFromWorkbook wbSource
        
        wbSource.Close False
    Next
    If colTargetArrays.Count = 0 Then Exit Sub
    PrintColTargetArrays
    
    Application.Calculation = Application_Calculation
    Application.ScreenUpdating = True
End Sub

Private Sub PrintColTargetArrays()
    Dim vv As Variant, arr As Variant, yt As Long, ys As Long, xs As Long
    For Each vv In colTargetArrays
        arr = vv
        yt = yt + UBound(arr(0), 1)
    Next
    Dim aTarg As Variant
    ReDim aTarg(1 To yt, 1 To UBound(arr) + 2)
    yt = 0
    For Each vv In colTargetArrays
        arr = vv
        For ys = LBound(arr(0)) To UBound(arr(0))
            yt = yt + 1
            For xs = LBound(arr) To UBound(arr)
                aTarg(yt, xs + 1) = arr(xs)(ys, 1)
            Next
            aTarg(yt, 4) = "[Код товара] = " & aTarg(yt, 2) & "ИЛИ"
        Next
    Next
    Set colTargetArrays = Nothing
    
    PrintColTargetArray aTarg
End Sub

Private Sub PrintColTargetArray(arr As Variant)
    With Workbooks.Add(1)
        With .Worksheets(1)
            With .Cells(1, 1).Resize(, UBound(ARR_FIELDS) + 1)
                .Value = ARR_FIELDS
                .Cells(1, .Columns.Count + 1).Value = "КОДЫ ИТОГ"
                With .Cells(1, 1).Resize(1, UBound(ARR_FIELDS) + 2)
                    .Font.Bold = True
                End With
                .HorizontalAlignment = xlCenter
                
                Dim vBorder As Variant
                For Each vBorder In Array(xlEdgeLeft, xlEdgeTop, xlEdgeBottom, xlEdgeRight, xlInsideVertical, xlInsideHorizontal)
                    With .Cells(1, 1).Resize(UBound(arr, 1) + 1, UBound(arr, 2)).Borders(vBorder)
                        .LineStyle = xlContinuous
                        .ColorIndex = xlAutomatic
                        .TintAndShade = 0
                        .Weight = xlThin
                    End With
                Next
                
                With .Cells(2, 1).Resize(UBound(arr, 1), UBound(arr, 2))
                    .Value = arr
                    .EntireColumn.AutoFit
                End With
            End With
        End With
    End With
End Sub

Private Sub GetDataFromWorkbook(wbSource As Workbook)
    Dim sh As Worksheet
    For Each sh In wbSource.Worksheets
        GetDataFromWorkbsheet sh
    Next
End Sub

Private Sub GetDataFromWorkbsheet(shSource As Worksheet)
    Dim tb As ListObject
    On Error Resume Next
    Set tb = shSource.ListObjects("Таблица1")
    On Error GoTo 0
    If Not tb Is Nothing Then
        GetDataFromListObject tb
    End If
End Sub

Private Sub GetDataFromListObject(tbSource As ListObject)
    Dim aFields As Variant, vField As Variant
    aFields = ARR_FIELDS
    
    Dim obj As ListColumn, arr As Variant, ya As Long
    ReDim arr(LBound(aFields) To UBound(aFields))
    ya = LBound(arr) - 1
    For Each vField In aFields
        On Error Resume Next
        Set obj = tbSource.ListColumns(vField)
        On Error GoTo 0
        If obj Is Nothing Then Exit Sub
        ya = ya + 1
        arr(ya) = GetArrayFromRange(obj.DataBodyRange)
        
        Set obj = Nothing
    Next
    
    colTargetArrays.Add arr
End Sub

Private Function ShowFileDialog() As Variant
    'ShowFileDialog = Application.FileDialog(msoFileDialogFolderPicker)
    
    Dim rInitialFileName As Range
    On Error Resume Next
    Set rInitialFileName = ThisWorkbook.Names("SourceFile").RefersToRange
    On Error GoTo 0
    
    Dim sInitialFileName As String
    If Not rInitialFileName Is Nothing Then
        sInitialFileName = rInitialFileName.Value
        If Left(sInitialFileName, 2) = ".\" Then
            sInitialFileName = Mid(sInitialFileName, 2)
            sInitialFileName = ThisWorkbook.Path & sInitialFileName
        End If
    End If
    
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    Dim oFD As FileDialog
    Dim lf As Long
    'назначаем переменной ссылку на экземпляр диалога
    Set oFD = Application.FileDialog(msoFileDialogFilePicker)
    With oFD 'используем короткое обращение к объекту
    'так же можно без oFD
    'With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = True
        .Title = "Выбрать файлы" 'заголовок окна диалога
        .Filters.Clear 'очищаем установленные ранее типы файлов
        .Filters.Add "Excel files", "*.xls*", 1 'устанавливаем возможность выбора только файлов Excel
        '.Filters.Add "Text files", "*.txt", 2 'добавляем возможность выбора текстовых файлов
        .FilterIndex = 1 'устанавливаем тип файлов по умолчанию - Text files(Текстовые файлы)
        .InitialFileName = sInitialFileName
        .InitialView = msoFileDialogViewDetails 'вид диалогового окна(доступно 9 вариантов)
        If .Show = 0 Then Exit Function 'показывает диалог
        Dim arr As Variant, sName As String
        'цикл по коллекции выбранных в диалоге файлов
        For lf = 1 To .SelectedItems.Count
            sName = fso.GetFileName(.SelectedItems(lf))
            If Left(sName, 2) <> "~$" Then
                If sName <> ThisWorkbook.Name Then
                    If IsEmpty(arr) Then
                        ReDim arr(1 To 1)
                        If Not rInitialFileName Is Nothing Then
                            sInitialFileName = .SelectedItems(lf)
                            sInitialFileName = Replace(sInitialFileName, ThisWorkbook.Path, ".")
                            rInitialFileName.Value = sInitialFileName
                        End If
                    Else
                        ReDim Preserve arr(1 To UBound(arr) + 1)
                    End If
                    arr(UBound(arr)) = .SelectedItems(lf)  'считываем полный путь к файлу
                End If
            End If
        Next
        ShowFileDialog = arr
    End With
End Function

Private Function GetArrayFromRange(rr As Range) As Variant
    Dim arr As Variant
    If rr.Cells.CountLarge = 1 Then
        ReDim arr(1 To 1, 1 To 1)
        arr(1, 1) = rr.Value
    Else
        arr = rr.Value
    End If
    GetArrayFromRange = arr
End Function

Private Sub CloseEmptyWb()
    Dim wb As Workbook
    For Each wb In Application.Workbooks
        If wb.Path = "" Then wb.Close False
    Next
End Sub
Определить начало и конец таблицы excel
 
Цитата
написал:
с возможностью переопределения ее границ - кликнуть в начале, кликнуть в конце
Код
Sub Resize_table()
    With Range(Selection.Areas(1), Selection.Areas(Selection.Areas.Count))
        .Rows(1).Copy
        .PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    End With
    Application.CutCopyMode = False
End Sub
Как удалить все строки, которые содержат ячейки #Н/Д
 
Вариант несколько быстрее.
Код
Sub Fast_deletion()
    Dim aSource As Variant, aTarg As Variant
    aSource = ActiveSheet.UsedRange.Value
    ReDim aTarg(1 To UBound(aSource, 1), 1 To UBound(aSource, 2))
    
    Dim udrow As Long, udcol As Long, needPrint As Boolean, targrow As Long
    For udrow = 1 To UBound(aSource, 1)
        needPrint = True
        For udcol = 1 To UBound(aSource, 2)
            If IsError(aSource(udrow, udcol)) Then
                needPrint = False
                Exit For
            End If
        Next
        If needPrint Then
            targrow = targrow + 1
            For udcol = 1 To UBound(aSource, 2)
                aTarg(targrow, udcol) = aSource(udrow, udcol)
            Next
        End If
    Next
    ActiveSheet.UsedRange.Value = aTarg
End Sub
Случайные числа из диапазона в зависимости от числа., Случайное число генерируется, при повышении диапазона.
 
Код
Option Explicit

Sub Fill_random()
    Dim sh As Worksheet
    Set sh = ActiveSheet
    
    Fill_range sh.Columns("B:B"), sh.Columns("C:C"), sh.Range("E3").Value, sh.Range("F3").Value
End Sub

Private Sub Fill_range(rSource As Range, rTarget As Range, dMin As Double, dMax As Double)
    Dim aSource As Variant, aTarget As Variant
    aSource = Intersect(rSource, rSource.Parent.UsedRange).Formula
    aTarget = Intersect(rTarget, rTarget.Parent.UsedRange).Resize(UBound(aSource, 1)).Formula
    
    Dim iPrecision As Byte
    iPrecision = WorksheetFunction.Max(GetPrecision(dMin), GetPrecision(dMax))
    
    Randomize
    Dim ys As Long, dd As Double
    For ys = 1 To UBound(aSource, 1)
        If IsError(aSource(ys, 1)) Then
        ElseIf IsEmpty(aSource(ys, 1)) Then
        ElseIf IsNumeric(Replace(aSource(ys, 1), ".", ",")) Then
            dd = CDbl(Replace(aSource(ys, 1), ".", ","))
            If dd > 0 Then
                If dd >= dMin And dd <= dMax Then
                    aTarget(ys, 1) = aSource(ys, 1)
                Else
                    aTarget(ys, 1) = (dMax - dMin) * Rnd() + dMin
                    aTarget(ys, 1) = Round(aTarget(ys, 1), iPrecision)
                    aTarget(ys, 1) = WorksheetFunction.Max(dMin, aTarget(ys, 1))
                    aTarget(ys, 1) = WorksheetFunction.Min(dMax, aTarget(ys, 1))
                End If
            End If
        End If
    Next
    
    Intersect(rTarget, rTarget.Parent.UsedRange).Resize(UBound(aTarget, 1), UBound(aTarget, 2)).Formula = aTarget
End Sub

Private Function GetPrecision(dd As Double) As Byte
    If InStr(CStr(dd), ",") = 0 Then
        GetPrecision = 0
    Else
        GetPrecision = Len(Split(CStr(dd), ",")(1))
    End If
End Function
Изменено: МатросНаЗебре - 14.07.2025 11:33:50 (aTarget(ys, 1) = WorksheetFunction.Max(dMin, aTarget(ys, 1)))
Как извлечь слово из текста ячейки и вернуть в соседнюю
 
Код
=ИНДЕКС($G$1:$G$9;МАКС(НЕ(ЕОШ(НАЙТИ($G$1:$G$9;E4)))*($G$1:$G$9<>"")*СТРОКА($G$1:$G$9)))
Ввести как формулу массива Ctrl+Shift+Enter.
Определения 4 чисел, из заданного диапазона, с определённым условиями, Помогите пожалуйста
 
Создание макросов и пользовательских функций на VBA
Способ 1. Создание макросов в редакторе Visual Basic
[ Закрыто] Нужно разработать алгоритм ротации товаров между торговыми точками для оптимизации закупок и оборачиваемости товаров
 
Цитата
написал:
ЗП_кандидат As Integer
Тонкая ирония, что больше 32768 он не получит.  :D
А ему ещё тут платить!
Как обновить форму при выборе из ComboBox
 
Цитата
написал:
Что-то я вообще не понял, какая форма и как она должна перезагрузится?
Тоже было недопонимание.
Какой заяц! Какая блоха!

Предполагаю, что на форум выложен вариант, из которого исключили работу с другими формами. Потом разумеется возник закономерный вопрос "а почему другие формы не работают?" Тут уже возник встречный вопрос "какие формы?".
Как обновить форму при выборе из ComboBox
 
Код
Option Explicit
Option Base 1
 
Private disableEvents As Boolean
 
Private Sub CommandButton42_Click()
ComboBox31.Value = Empty
Sheets("Данные").Range("G5").Value = Empty
End Sub
 
 
Private Sub UserForm_Initialize()
 

Dim s&
 
ComboBox31.MatchEntry = fmMatchEntryNone
 
With Sheets("Нор_Док_МРК") ' с какого листа построение списка
 
s = .Cells(Rows.Count, 18).End(xlUp).Row ' с какой строки построения списка
ComboBox31.List = myDate(.Range(.Cells(3, 18), .Cells(s, 18)).Value) '.Range(.Cells(с какой строки, с какого столбца), .Cells(s, с какого столбца)).Value
If disableEvents = False Then
    disableEvents = True
    Me.ComboBox31 = ['Данные'!G5] ' куда сделать запись при выборе
    disableEvents = False
End If
End With
 
End Sub
 
Private Function myDate(arr As Variant) As Variant
    Dim ya As Long
    For ya = 1 To UBound(arr, 1)
        If IsDate(arr(ya, 1)) Then arr(ya, 1) = Format(arr(ya, 1), "DD.MM.YYYY")
    Next
    myDate = arr
End Function
 
'Список № 31 !!!!! Откуда и куда делать запись
 
'Private Sub ComboBox31_Click()
'Sheets("Данные").Range("G5") = ComboBox31.Value 'сделать запись в ячейку
'End Sub
'
Private Sub ComboBox31_Change()
    Sheets("Данные").Range("G5") = ComboBox31.Value
    If disableEvents Then Exit Sub
    ComboBox31.DropDown
    disableEvents = True
    UserForm_Initialize
    disableEvents = False
End Sub
 
Private Sub ComboBox31_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim n&, b&
Dim txt$
Dim Spisok(), NewSpisok()
 
If KeyCode <> 38 And KeyCode <> 40 And KeyCode <> 13 Then
    With Sheets("Нор_Док_МРК") 'с какого листа построение списка
        n = .Cells(Rows.Count, 18).End(xlUp).Row ' с какой строки построения списка
        Spisok = .Range(.Cells(3, 18), .Cells(n, 18)).Value '.Range(.Cells(с какой строки, с какого столбца), .Cells(n, с какого столбца)).Value
    End With
     
    b = 0
    txt = ComboBox31.Text
    If txt = "" Then ComboBox31.List = Spisok: Exit Sub
     
    ComboBox31.Clear
    Erase NewSpisok
     
    For n = 1 To UBound(Spisok)
        If InStr(1, Spisok(n, 1), txt, vbTextCompare) Then
            b = b + 1
            ReDim Preserve NewSpisok(b)
            NewSpisok(b) = Spisok(n, 1)
        End If
    Next n
     
    If b <> 0 Then ComboBox31.List = NewSpisok
End If
End Sub
Как обновить форму при выборе из ComboBox
 
Цитата
написал:
только форма не перезагружается
Ааа...., судя по всему, эта фраза должна звучать "только другая форма не перегружается".
Как обновить форму при выборе из ComboBox
 
А вам точно отдельная форма нужна?
В Excel есть штатное средство.
ДАННЫЕ-Проверка данных-Проверка данных-Тип данных: Список-Источник:
Код
=СМЕЩ(Нор_Док_МРК!R3;0;0;СЧЁТЗ(Нор_Док_МРК!R:R);1)
Как обновить форму при выборе из ComboBox
 
Цитата
написал:
не перезагружается при выборе из "ComboBox, куда дописать это?:
Это две разных проблемы?
[ Закрыто] Нужно разработать алгоритм ротации товаров между торговыми точками для оптимизации закупок и оборачиваемости товаров
 
Цитата
Msi2102 написал:
Интересно, а это тестовое задание при приеме на работу?
В принципе, будет неплохо, если кандидата возьмут, а он из-за нехватки знаний будет размещать задачи в платной ветке.
Всем хорошо. Работник - работает, работодатель - получает решения своих задач, мы - кодим. :D
Как обновить форму при выборе из ComboBox
 
А так?
Скрытый текст
[ Закрыто] Нужно разработать алгоритм ротации товаров между торговыми точками для оптимизации закупок и оборачиваемости товаров
 
А оно там есть :D  
Как обновить форму при выборе из ComboBox
 
Код
Option Explicit
Option Base 1

Private Sub CommandButton42_Click()
ComboBox31.Value = Empty
Sheets("Данные").Range("G5").Value = Empty
End Sub


Private Sub UserForm_Initialize()
Dim s&

ComboBox31.MatchEntry = fmMatchEntryNone

With Sheets("Нор_Док_МРК") ' с какого листа построение списка

s = .Cells(Rows.Count, 18).End(xlUp).Row ' с какой строки построения списка
ComboBox31.List = myDate(.Range(.Cells(3, 18), .Cells(s, 18)).Value) '.Range(.Cells(с какой строки, с какого столбца), .Cells(s, с какого столбца)).Value
Me.ComboBox31 = ['Данные'!G5] ' куда сделать запись при выборе
   
End With

End Sub

Private Function myDate(arr As Variant) As Variant
    Dim ya As Long
    For ya = 1 To UBound(arr, 1)
        If IsDate(arr(ya, 1)) Then arr(ya, 1) = Format(arr(ya, 1), "DD.MM.YYYY")
    Next
    myDate = arr
End Function

'Список № 31 !!!!! Откуда и куда делать запись

Private Sub ComboBox31_Click()
Sheets("Данные").Range("G5") = ComboBox31.Value 'сделать запись в ячейку
End Sub

Private Sub ComboBox31_Change()
ComboBox31.DropDown
UserForm_Initialize
End Sub

Private Sub ComboBox31_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim n&, b&
Dim txt$
Dim Spisok(), NewSpisok()

If KeyCode <> 38 And KeyCode <> 40 And KeyCode <> 13 Then
    With Sheets("Нор_Док_МРК") 'с какого листа построение списка
        n = .Cells(Rows.Count, 18).End(xlUp).Row ' с какой строки построения списка
        Spisok = .Range(.Cells(3, 18), .Cells(n, 18)).Value '.Range(.Cells(с какой строки, с какого столбца), .Cells(n, с какого столбца)).Value
    End With
    
    b = 0
    txt = ComboBox31.Text
    If txt = "" Then ComboBox31.List = Spisok: Exit Sub
    
    ComboBox31.Clear
    Erase NewSpisok
    
    For n = 1 To UBound(Spisok)
        If InStr(1, Spisok(n, 1), txt, vbTextCompare) Then
            b = b + 1
            ReDim Preserve NewSpisok(b)
            NewSpisok(b) = Spisok(n, 1)
        End If
    Next n
    
    If b <> 0 Then ComboBox31.List = NewSpisok
End If
End Sub

Выделить столбцы в умной таблице
 
Для несвязанных диапазонов.
Код
Option Explicit

Sub Выделить_ниже_активных()
    Dim cl As Range, ru As Range
    For Each cl In Intersect(Selection, ActiveSheet.UsedRange).Cells
        Set ru = myUnion(GetBottom(cl), ru)
    Next
    If Not ru Is Nothing Then ru.Select
End Sub
 
Private Function myUnion(rr As Range, ru As Range) As Range
    If rr Is Nothing Then
        Set myUnion = ru
    ElseIf ru Is Nothing Then
        Set myUnion = rr
    Else
        Set myUnion = Union(rr, ru)
    End If
End Function

Private Function GetBottom(cl As Range) As Range
    On Error Resume Next
    Dim rr As Range
    Set rr = cl
    Set rr = cl.Areas(1)
    Set rr = rr.Offset(1)
    Set rr = rr.Resize(rr.ListObject.DataBodyRange.Rows.Count)
    Set rr = Intersect(rr, rr.ListObject.DataBodyRange)
    Set GetBottom = rr
    On Error GoTo 0
End Function
Выделить столбцы в умной таблице
 
Цитата
написал:
ниже выделенных ячеек
Для непрерывных диапазонов.
Код
Option Explicit

Sub Выделить_ниже_активной()
    GetBottom(Selection).Select
End Sub
 
Sub Значения_ниже_активной()
    With GetBottom(Selection)
        .Value = .Value
    End With
End Sub
 
Private Function GetBottom(cl As Range) As Range
    On Error Resume Next
    Dim rr As Range
    Set rr = cl
    Set rr = cl.Areas(1)
    Set rr = rr.Offset(1)
    Set rr = rr.Resize(rr.ListObject.DataBodyRange.Rows.Count)
    Set rr = Intersect(rr, rr.ListObject.DataBodyRange)
    Set GetBottom = rr
    On Error GoTo 0
End Function
Выделить столбцы в умной таблице
 
Выглядит всё-таки, что выделение это промежуточный этап. Вот вам макросы и выделяющие, и заменяющие формулы на значения.
Код
Sub Выделить_ниже_активной()
    GetBottom.Select
End Sub

Sub Значения_ниже_активной()
    With GetBottom
        .Value = .Value
    End With
End Sub

Private Function GetBottom() As Range
    On Error Resume Next
    Dim rr As Range
    Set rr = ActiveCell
    Set rr = rr.Cells(2, 1)
    Set rr = rr.Resize(rr.ListObject.DataBodyRange.Rows.Count)
    Set rr = Intersect(rr, rr.ListObject.DataBodyRange)
    Set GetBottom = rr
    On Error GoTo 0
End Function
Выделить столбцы в умной таблице
 
Цитата
написал:
но захватывает активную
Код
Sub Выделить_ниже_активной()
    On Error Resume Next
    
    Dim rr As Range
    Set rr = ActiveCell
    Set rr = rr.Cells(2, 1)
    Set rr = rr.Resize(rr.ListObject.DataBodyRange.Rows.Count)
    Set rr = Intersect(rr, rr.ListObject.DataBodyRange)
    rr.Select
    
    On Error GoTo 0
End Sub
Выделить столбцы в умной таблице
 
Код
Sub Выделить_ниже_активной()
    On Error Resume Next
    
    Dim rr As Range
    Set rr = ActiveCell
    Set rr = rr.Resize(rr.ListObject.DataBodyRange.Rows.Count)
    Set rr = Intersect(rr, rr.ListObject.DataBodyRange)
    rr.Select
    
    On Error GoTo 0
End Sub
Макрос скрытие пустых строк при изменении ячейки
 
Код
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
'Updateby Extendoffice
    If Target.Address(0, 0, xlA1) = "M5" Then
       Dim xRg As Range
       Application.ScreenUpdating = False
           For Each xRg In Range("FJ38:FJ67")
               If xRg.Value = "" Then
                   xRg.EntireRow.Hidden = True
           
               Else
                   xRg.EntireRow.Hidden = False
               End If
           Next xRg
       Application.ScreenUpdating = True
    End If
End Sub
Если изменятся фамилия в ячейке M5, то скрываются или отображаются строки 38:67, в зависимости от значений в FJ38:FJ67.
Определения 4 чисел, из заданного диапазона, с определённым условиями, Помогите пожалуйста
 
А, это нормально  :D  
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 281 След.
Наверх