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

Страницы: 1
Worksheet_Change: почему не меняется цвет?
 
Цитата
JayBhagavan пишет: Чем УФ не подходит?
УФ не хочу т.к. таргет колонок достаточно много и листов с этими колонками..
Worksheet_Change: почему не меняется цвет?
 
Вместо Selection
Target(1,1).Interior.ThemeColor = xlThemeColorAccent1
дает ту же ошибку :(

Нужно сделать так чтобы таргет-ячейка менял цвет (на любой), на 2003 как раз и нужно бы..
Изменено: Portolomeo - 25.07.2014 13:56:55
Worksheet_Change: почему не меняется цвет?
 
Код прекрасно работает так:
Код
Private Sub Worksheet_Change(ByVal Target As Range) 
'Application.ScreenUpdating = False: On Error Resume Next 
Select Case Target.Column 
Case 3, 8, 13, 18, 23, 28, 33, 38, 43, 48, 53, 58 
   If Not IsEmpty(Target(1, 0)) Then 
      If Target(1, 1).Value <> "На руках" And Not IsEmpty(Target(1, 1)) Then 
         Application.EnableEvents = False 
         Target.Offset(, 2).Value = Date 
         Application.EnableEvents = True 
   End If 
End If 
теперь мне нужно сделать так, чтобы помимо добавления в соседней ячейке Текущей даты дополнительон изменялся цвет Таргет ячейки,
я добавил строки
Код
Selection.Interior.ThemeColor = xlThemeColorAccent1 
Selection.Interior.TintAndShade = 0.599993896298105 
что вызывает ошибку Application defined or object-defined error
Worksheet_Change: почему не меняется цвет?
 
Форумчане,
помогите пожалуйста с ошибкой,
ниже код который срабатывает при изменении указанных колонок на Листе,
но после того как добавил строки изменить цвет ячейки (Selection.Interior...)
стал ругаться что Application defined or object-defined error
Код
Private Sub Worksheet_Change(ByVal Target As Range)
'Application.ScreenUpdating = False: On Error Resume Next
Select Case Target.Column
Case 3, 8, 13, 18, 23, 28, 33, 38, 43, 48, 53, 58
  If Not IsEmpty(Target(1, 0)) Then
    If Target(1, 1).Value <> "На руках" And Not IsEmpty(Target(1, 1)) Then
        Application.EnableEvents = False
        Target.Offset(, 2).Value = Date
        Selection.Interior.ThemeColor = xlThemeColorAccent1
        Selection.Interior.TintAndShade = 0.599993896298105
        Application.EnableEvents = True
    End If
  End If
при открытии файла автоматически проставлять Выпадающие списки на нужных колонках
 
И вправду сработало, почему-то раньше когда записывал Макрос выпадающий список проставлял только на первой выбранной колонке, а сейчас ОК!
Повесил на Активацию Листа, спасибо!!!
при открытии файла автоматически проставлять Выпадающие списки на нужных колонках
 
Уважаемые форумчане,
помогите пожалуйста с такой задачей, можно ли сделать так или нет.

Есть файл в котором на 3-х листах на определенных колонках (например C3:C65536, G3:G65536 и т.д.) проставлены Выпадающие списки, принимающие значения:
Продано / Бесплатно / Возврат / На руках (называется =Types).

Так вот при работе с файлом пользователи бывает достаточно регулярно делают копирование ячейки без выпадающего списка в ячейку с выпадающим списком, т.о. ячейка теряет свойство выбирать из выпадающего списка.. :) Хоть и говорили миллион раз но все равно это происходит,

и хотелось бы сделать так чтобы при открытии файла все выбранные ячейки автоматом проставлялись как с Выпадающим списком..  
удаление ячеек по условию
 
Sanja,
спасибо вам огромное, такой лаконичный код!
По поводу организации данных - у нас 3 листа на каждом из которых по 12 номенклатур, чтобы не плодить листы оставили данный рабочий вариант..

Спасибо еще раз!!
удаление ячеек по условию
 
Уважаемые форумчане,
помогите пожалуйста с задачей,
нужен макрос который бы сравнивал даты в колонках Сдача на листе (колонки E, K, Q и т.д.) с текущей системной датой, и если они меньше + не пустые то удалять соседние ячейки на соответствующей строке под соответствующей номенклатурой - например B4-E12 под первой номенклатурой, H2-K4 под второй и т.д.
После этого, чтобы не образовывались пустые строки, макрос должен делать сортировку соответствующих колонок (B-E, H-K, N-Q и т.д.) по значениям например B.
вставка формул из листа в несколько файлов
 
Добрый день,
помогите пожалуйста форумчане,
у меня есть более 200 файлов excel - все однотипные с одинаковыми листами и т.п., только имена файлов разные.

Возникла необходимость внести во всех этих файлах в листе "Свод по дате" исправленные формулы, допустим в Range("D2:I34"  ;)  .
Исправленные формулы находятся в файле tmp - записал через макрос рекордер - но там ссылается на файл excel который уже принял участие в замене листа,
можно ли как-то заменить в коде так чтобы я любой файл который открыл и запустил соотв. макрос (при наличии открытого tmp) - чтобы он проделывал нужную операцию копи-пейст?
Код
    Windows("tmp.xlsx").Activate
    Range("D2:I34").Select
    Selection.Copy
    Windows("KIOSK - User1.xls").Activate
    Range("D2:I34").Select
    ActiveSheet.Paste
т.е. чтобы иметь возможность открывать файлы KIOSK - User2.xls, KIOSK - User3.xls и т.п. и смело запускать макрос на копи-пейст..  
Изменено: Portolomeo - 04.06.2014 10:58:36
события протягивания ячеек
 
С Удалением разобрался, ваш совет очень помог, спасибо большое!!
Теперь бы заставить работать макрос Автодобавления и скрипт под Private Sub Worksheet_Change..
события протягивания ячеек
 
К сожалению данное решение конфликтует с одним макросом в файле - AvtoDobavlenie, который при нажатии кнопки Серийный номер (как раз вторая таргет колонка B)
добавляет нужное количество серийников автоматом, данное решение было найдено на данном форуме, пример в файле.
Помимо того что макрос автоматом добавляет номера серийников, в соседних колонках добавляются Статус (На руках) и текущая Дата.

И вот в этот момент код под Private Sub Worksheet_Change(ByVal Target As Range) срабатывает и добавляет Дату в дополнительных двух колонках справа..
Как можно этого избежать?

Макрос выглядит так:
Код
Sub AvtoDobavlenie()
    Dim lNum, arrDan(), i As Long, strFormat As String, dDay As Date
    Dim startRng As Range, x As Long, strPref As String, q
    On Error Resume Next
    Set startRng = Application.InputBox _
          (Prompt:="Выделите ячейку для ввода серийных номеров", _
           Title:="Заполнение данных", Type:=8)
    lNum = InputBox("Введите количество ", "Ввод данных", startRng.Value)
     x = Len(startRng.Value)
     ReDim arrDan(1 To lNum, 1 To 3)
     x = Val(Right(startRng.Value, x))
    dDay = Date
    For i = 1 To lNum
     If i = 1 Then
     arrDan(i, 1) = strPref & Format(x, strFormat)
     Else
     arrDan(i, 1) = strPref & Format(x, strFormat)
     arrDan(i, 2) = "На руках"
     arrDan(i, 3) = dDay
     End If
     x = x + 1
    Next i
    startRng.Resize(lNum, 3) = arrDan()
End Sub
Изменено: Portolomeo - 02.06.2014 15:12:54
события протягивания ячеек
 
А еще один вопрос, помогите пожалуйста,
как в данном коде разграничить событие удаления ячейки?

Т.е. под Private Sub Worksheet_Change(ByVal Target As Range)
любые изменения таргет-ячеек влекут заведенные действия, но как исключить отсюда операции Удаления содержимого ячейки?
Чтобы при удалении соседние ячейки оставались без изменения?
события протягивания ячеек
 
Красота!!
Спасибо большое! :D  
события протягивания ячеек
 
Добрый день, уважаемые знатоки,
как можно зафиксировать событие "протягивания" ячеек? К примеру у меня в листе следующий код – когда пользователи меняют колонки B / H / N и т.п. – в соседних колонках проставляются статус – «На руках» и рядом дата выдачи (текущая дата события).
Но почему-то этот блок не срабатывает когда в нужных колонках происходит не добавление/изменение ячеек, а протягивание ячеек, тогда соседние колонки остаются пустыми, как можно учесть этот момент?
Код
Private Sub Worksheet_Change(ByVal Target As Range)  If Target.Column = 2 Then      Target(1, 2).Value = "На руках"
     Target(1, 3).Value = Date
    End If

    If Target.Column = 8 Then
     Target(1, 2).Value = " На руках "
     Target(1, 3).Value = Date
    End If

    If Target.Column = 14 Then
     Target(1, 2).Value = " На руках "
     Target(1, 3).Value = Date
    End If 

End Sub 
Изменено: Portolomeo - 02.06.2014 10:46:54
метод Find в VBA для поиска нескольких значений
 
Уважаемые форумчане,
помогите пож-та, как сделать в VBA поиск значений методом Find, где в параметре What находилось бы условие - например найти все что меньше заданной даты?

Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)
удаление ячеек, если дата их изменения устарела
 
Добрый день!
Прошу вас о помощи, или хотя бы подсказать возможно ли такое решение.

Имеется файл с 2мя листами, в каждом листе идентичные шапки в следующем виде:
колонка А - номенклатура, колонка В - серийный номер, колонка С - дата (когда вносится значение серийного номера в колонке В, дата проставляется автоматом), далее через одну пустую колонку (D) эти 3 столбца повторяются, но уже для другой номенклатуры и т.д. Т.е. колонка E - номенклатура, колонка F - серийный номер, колонка G - дата, снова пропуск и так для 10 номенклатур.
Задача состоит в том, чтобы иметь возможность "одним движением" удалять все данные в ячейках (не строках, т.к. могут удалиться значения других номенклатур, где дата еще свежая), которые устарели - например нужно удалить все ячейки с прошлого месяца.

Т.е. я хочу удалить все серийные номера апреля по каждой номенклатуре в обоих листах - без того чтобы делать фильтр или сортировку по каждой номенклатуре отдельно и удалять вручную..
Существует ли такая возможность?
значение по умолчанию в выпадающем списке, для нескольких колонок в листе
 
Понял, спасибо  :)
Код
If Target.Column = 5 Then
        With Cells(Target.Row, "F"  )
            If .Text = "" Then
                Application.EnableEvents = False
                   .Value = "Text"
                Application.EnableEvents = True
            End If
         End With
    End If
    
    If Target.Column = 12 Then
        With Cells(Target.Row, "M"  )
            If .Text = "" Then
                Application.EnableEvents = False
                   .Value = "Text"
                Application.EnableEvents = True
            End If
         End With
    End If
значение по умолчанию в выпадающем списке, для нескольких колонок в листе
 
Добрый день!
Прошу вас помочь, искал информацию но нашел более менее нормальное решение здесь же в архиве
http://www.planetaexcel.ru/forum/?PAGE_NAME=read&FID=8&TID=38289,
само решение выглядит так
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column > 4 Then Exit Sub
    With Cells(Target.Row, "F" ;) 
        If .Text = "" Then
            Application.EnableEvents = False
               .Value = "no"
            Application.EnableEvents = True
        End If
    End With
End Sub

но это работает для случая ввода значений в любую колонку до 4-й, можно ли сделать так чтобы значение по умолчанию в выпадающем списке повлялось в колонке F при вводе значения в колонку E?
И помимо этого также для колонок например L и M - при вводе значения в L по умолчанию в выпадающем списке в M принимало определенное значение.
учет числа кликании на Гиперссылки
 
Прекрасный код, прекрасно работает!
Но я забыл тот факт, что данный сетевой файл-справочник закрыт для редактирования для всех, доступ есть только у двоих:)
Счетчик при открытии ссылок работает, но файл не сохраняется..
При таком раскладе было бы супер вести учет открытии в другом файле в той же сетевой папке, например.


ADO это что-то совсем сложное?
учет числа кликании на Гиперссылки
 
Ухтыш!
Значит вполне реализуемо!?
Смогу проверить работу только дома))
Кстати, вариант с VBA остается рабочим если файл сетевой, и необходимо вести учет переходов всех пользователей (суммарно)?
Спасибо!

Если не получится приведу пример, попозже.
Надеюсь все же получится.  
Изменено: Portolomeo - 17.04.2014 15:38:10
учет числа кликании на Гиперссылки
 
Всем добрый день!
Прошу помочь с решением данного вопроса, если он вообще решается в Excel.
Существует ли возможность ведения учета числа переходов при кликании на гиперссылки?

Имеется большой файл с кучей строк, все строки первой колонки являются гиперссылками на определенные файлы (word/excel/pdf).
Чтобы иметь возможность видеть частые переходы и те куда вообще не заходят.

Заранее спасибо за участие!
Страницы: 1
Наверх