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

Страницы: 1
Изменить уровень расположения именованного диапазона с Worksheet на Workbook, макрос
 
Всем привет.
Как посмотреть уровень расположения именованной ячейки разобрался, а как программно изменить , например , с Worksheet на уровень Workbook, не понимаю.
Фрагмент кода:
Код
 With iName
         Cells(i, 1).Value = .Name
         Cells(i, 3).Value = TypeName(.Parent) 
' у одних имён Name выводится значение Worksheet, а у других Workbook
 End With

Например,  нужно изменить уровни Worksheet на уровень Workbook.
Как это сделать в vba? Интересует как именно присвоить новое значение Workbook.
Изменено: ArtemonX - 26.01.2020 14:21:50
Поиск значения в двумерном массиве
 
Всем привет. Нужна ваша помощь.
Пытаюсь использовать конструкцию =ЕСЛИ($B3:$F13=B2;"";B2)
а в результате #ЗНАЧ!
Файл с примером прилагаю.
Мобильный аналог Excelя
 
Всем привет.
Попал в ситуацию, когда комп за собой не потащишь, а данные нужно вносить в таблицы и находу делать выборку, сортировку и т.п.
Попробовал несколько моб.приложений (WPS Office, Documents To Go) на своем смартфоне и планшете (оба андроидные) и оказалось, что в них документ Excel открывается и даже редактируется, а макросы не работают (кнопки на листах и события).
Может подскажете такое моб.приложение, чтобы макросы работали.  Конечно лучше если бесплатные версии.
Вставка формулы макросом: ошибка "недопустимое имя"
 
Всем привет. Нужна ваша помощь.
В модуле VBA конкретной ячейке присваивается формула. После исполнения VBA-кода формула не срабатывает, а в соотв. ячейке имеет место  "Ошибка-недопустимое имя".  
Фрагмент кода:
Код
Set SW_1 = Application.ThisWorkbook.Worksheets(Sheet_Name)
.....
    SW_1.Range(SW_1.Cells(i + di - 1, stolb_1_symvol_del + 5).Address).Formula = "=СУММ(E492:E505)"

Результат на скриншоте-02.
НО если зайти в строку формул при активной (ошибочной) ячейке и нажать Enter, то формула срабатывает (см. на скриншоте-02 красную поз.2)
Я конечно понимаю, что можно по очереди "пройтись" по всем этим ячейкам с "Ошибкой" понажимать Enter, Но это не устраивает хотя бы потому, что в таблице их много и это не рационально.

Еще пробовал так:
Код
    Application.ReferenceStyle = xlR1C1
    SW_1.Range(SW_1.Cells(i + di - 1, stolb_1_symvol_del + 5).Address).FormulaR1C1 = "=СУММ(R[-1]C[-1]:R[-" & sum_n2 & "]C[-1])"
    Application.ReferenceStyle = xlA1

И так:
Код
    Application.ReferenceStyle = xlA1
    SW_1.Range(SW_1.Cells(i + di - 1, stolb_1_symvol_del + 5).Address).Formula = "=СУММ(E492:E505)"

Сам не могу допереть. Подскажите - в чём нюанс?

 
Изменено: ArtemonX - 31.01.2016 01:19:02
SQL запрос на выборку из таблицы эксель
 
Подскажите, как в Экселе в модуле vba выполнить SQL запрос на выборку из таблицы эксель , а также выполнить SQL запрос на удаление или добавление данных в таблицу эксель ?
поле счетчик в таблице эксель
 
Подскажите, есть ли в Экселе "встроенная" возможность сделать поле счетчик наподобие как в Access?
Ну так , чтобы не городить своё с помощью функций.
определить тип данных в ячейке
 
Приветствую всех.
Нужно определить тип данных в ячейке.

If (TypeName(Range(Cells(stroka_aktiv, N).Address).Value) = Date) Then ' (1) если тип Date
Range(Cells(stroka_aktiv, N).Address).Value = Empty
End If
If (TypeName(Range(Cells(stroka_aktiv, N).Address).Value) = String) Then ' (2) если тип String
Range(Cells(stroka_aktiv, N).Address).Value = ""
End If
If (TypeName(Range(Cells(stroka_aktiv, N).Address).Value) = Empty) Then ' (3) если тип Empty
Range(Cells(stroka_aktiv, N).Address).Value = Empty
End If
If (TypeName(Range(Cells(stroka_aktiv, N).Address).Value) = Double) Then ' (4) если тип Double
Range(Cells(stroka_aktiv, N).Address).Value = 0
End If

Сравнения (1) (2) (4) не получаются.
Если сравнение (4) переделать:
Range("B22".Value = TypeName(Range("A22".Value) ' (*)
If (TypeName(Range(Cells(stroka_aktiv, N).Address).Value) = Range("B22".Value) Then ' если тип Double
Range(Cells(stroka_aktiv, N).Address).Value = 0
End If
(*) - это в отдельную ячейку "A22" записать , например, 152, то в ячейке "B22" сохранится Double и сравнение (4) начинает работать. Но мне так не нравится.
Что нужно писать вместо Date , String, Double , чтобы сравнения работали?
Изменено: ArtemonX - 13.03.2013 19:35:25
передача параметров в процедуру, при передача параметров в процедуру выдает ошибку
 
Добрый день.
Написал две процедуры. Одна (нижняя) вызывает другую (верхняя) с передачей четырех значений (dt_nach, kt_nach, dt_kon, kt_kon   )

Private Sub Perenos_saldo_i_obnulit_strok1(dt1 As String, kt1 As String, dt2 As String, kt2 As String)
 MsgBox "  столбец=" & dt1
End Sub

Private Sub CommandButton2_Click()
Dim dt_nach, kt_nach, dt_kon, kt_kon As String
dt_nach = "e"
kt_nach = "f"
dt_kon = "r"
kt_kon = "s"
  Perenos_saldo_i_obnulit_strok1(dt_nach, kt_nach, dt_kon, kt_kon)  ' ошибка компиляции: Syntax error
  Perenos_saldo_i_obnulit_strok1("e","f","r","s")  ' тоже ошибка компиляции: Syntax error
End Sub

Не пойму в чем ошибся.

Пробовал верхнюю процедуру писать так
Private Sub Perenos_saldo_i_obnulit_strok1(ByVal dt1 As String, ByVal kt1 As String, ByVal dt2 As String, ByVal kt2 As String)
и так
Private Sub Perenos_saldo_i_obnulit_strok1(dt1 , kt1 , dt2 , kt2 As String)
и так
Private Sub Perenos_saldo_i_obnulit_strok1(ByVal  dt1 , kt1 , dt2 , kt2 As String)

Помогите!
VBA - запись в ячейку 2 результата вычисления формулой 1
 
Здравствуйте.
Задачка: в ячейку2 (лист2) нужно записать число получившееся в результате вычисления формулой в ячейке1 (лист1) (но не формулу, как у меня получилось).
В связи с этим поискал на форуме и нашел в архиве похожий вопрос:
http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=8&TID=16687
пост №17 содержит пример, в котором я хочу разобраться , что бы применить к своему случаю.
Растолкуйте пожалуйста значения (смысл) команд по-порядку в макросе:

' ZVI:2010-07-25 http://www.planetaexcel.ru/forum.php?thread_id=17730
' Значение ячеек с именами "ОТКУДА*" будут автоматически скопированы в ячейки с именами "КУДА*"
' Например:
' Имя ячейки B3: "Откуда1"
' Имя ячейки B4: "Куда1"
' При пересчете формул значение из B3 будет скопировано в B4
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
Dim Rng As Range, N As Name, s As String
Application.EnableEvents = False ' откюч. обработку событий
On Error Resume Next ' вкл. игнорирование ошибок выполнения
For Each N In Names
s = UCase(N.Name) ' переводит значение строковой переменной на все заглавные буквы
If s Like "ОТКУДА*" Then
Set Rng = Range(N.RefersTo)
If Rng.Parent Is Sh Then
Range(Names("КУДА" & Mid(s, 7)).RefersTo) = Rng.Value
End If
End If
Application.EnableEvents = True ' включ. обработку событий
Next
End Sub
Хочу не только решить задачку, но и понять этот макрос конкретно.
например подчеркнутое - это имя процедуры , а SheetCalculate- это событие или что? и что должно передаваться на вход процедуры в качестве Sh.
Изменено: ArtemonX - 19.02.2013 20:19:50
есть ячейка или удалена, как из vba проверить есть ячейка или удалена
 
Нужна помощь.

На листе "Главн_2" некоторым ячейкам присвоили собственные имена (для удобства обращения к ним из vba) .
Как из vba можно проверить есть ячейка с таким именем (например "Сч282_39")  или удалена пользователем?
А так же как можно из vba  назначать такие собственные имена нужным ячейкам?


(Это строка из модуля - запись числа 530 в ячейку "Сч282_39" на листе "Главн_2"
Worksheets("Главн_2").Range("Сч282_39").Value = 530 )
как добраться до "именованные диапазоны"
 
Всем привет. Подскажите пожалуйста начинающему пользователю Экселя.
В меню ФАЙЛ - Свойства - Состав    есть "именованные диапазоны" с названиями "Товар" и "Товары".  Как к ним добраться с целью редактирования или удаления? Хотел сделать выпадающий список на базе листа "Прайс" - не получилось.
Делал :  Данные - Проверка... - Список - =прайс.   выдает ошибку "Указанный именованный диапазон не найден".
что не правильно?
Страницы: 1
Наверх