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

Страницы: 1
VBA создание Массива, используя имя таблицы
 
Спасибо, всё шикарно подошло. Long указал, так как в других примерах его использовали когда ожидалось много строк.
Ну и путаница. Кое что смотрю из "Приемов" у вас, кое что на др сайтах/форумах, а по формам вообще на ютубе смотрел.

Имеется ли рекомендуемая литература, чтобы банально не путаться с синтаксисом? Может более целенаправленное и системное изучение поможет.
VBA создание Массива, используя имя таблицы
 
Взял на вооружение 'массив значений ОБЛАСТИ ДАННЫХ 'умной' таблицы.
Написал так.
Код
Private Sub UserForm_Initialize()
Dim ArrSpisok() As Long
ArrSpisok = ActiveSheet.ListObjects("Список").DataBodyRange.Value ' имеется Таблица "Список"
UserForm1.ComboBox1.Value = ArrSpisok
End Sub
Всё верно, таблица у меня 'умная' http://www.planetaexcel.ru/techniques/2/136/
UserForm1.ComboBox1.List= ArrSpisok то же пробовал

Пишет Run-time error '13': Type mismatch

VBA создание Массива, используя имя таблицы
 
Здравствуйте, в одном из последних моих вопросов был совет начать работать с массивами.
Вот уже на первом этапе возникла проблема - Как создать Массив, используя имя таблицы?

Информации как объявить массив много и вроде всё понятно, но там ничего не сказано можно ли создать массив по имени таблицы?
Здесь  http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=8&TID=30500
"... Но взять в массив просто:  "
Код
Dim a  
a=[a1:b100] 

или

Код
a=[a1:b100].Value 

Далее был еще пример, попробовал разобрать
Код
Sub io()  
Dim v, x  'Объявление и инициализация массива Dim, Private, Public, ReDim, Static https://msdn.microsoft.com/RU-RU/library/office/gg251320.aspx
' но не указыван тип? https://msdn.microsoft.com/ru-ru/library/office/gg251750.aspx
With Sheets("СПБ") ' 'Оператор With используется для указания объекта, с которым мы будем работать. 
'Здесь Лист СПБ. Sheets это вроде коллекция?
v = .Range(.[A3], .Cells(.UsedRange.Rows.Count, "R")).Value ' массив таблицы  - там таблица от A до R 
'квадратные скобки А3 
'Свойства CurrentRegion и UsedRange  очень полезны, когда программа работает с диапазонами, размерами которых Вы не можете управлять.
' Мы не знали колличство строк поэтому вместо строк пишем .UsedRange.Rows.Count?  
'правда это была инфа из "MS Office. Руководство программиста по Visual Basic для MS Office 97" http://mf.grsu.by/UchProc/konspekt/VBA/ch02/ch04/ch03
ReDim x(1 To UBound(v), 1 To 18)   'Меняем размер массива?
End With  
End Sub

Но почему в этом примере не дают таблице имя и не создают массив по имени таблицы?

Здесь https://msdn.microsoft.com/ru-ru/library/office/gg264844.aspx "Функция Array" тоже имеет пример
Код
Dim A As Variant
A = Array(10,20,30)
B = A(2)
тоже не использовали ни разу имя таблицы

Читал про Оператор Dim https://msdn.microsoft.com/ru-ru/library/office/gg251750.aspx и то же  ничего для этой задачи не нашел

Возник вопрос. Вообще можно создавать массивы указывая не конкретные ячейки, а имя таблицы? По логике, если для ComboBox можно указать имя, значит и для массива должна быть возможность.
Совместное редактирование файла в Excel 2016
 
Пробовали заменить 2007 офис на 2016 ? там должна быть Одновременная работа нескольких пользователей над книгами Excel с помощью функции совместного редактирования Хотя, наверное, эту информацию Вы уже находили и она не подошла.
ВПР в VBA какие методы есть? И их принцип работы
 
Ох, понял вас. значит  
  1. Посмотрю тогда справки и руководства по массивам.
  2. Смотреть справку по "ПОИСКПОЗ" и "ИНДЕКС" (не знал что ПОИСКПОЗ=Match, ИНДЕКС = Index), только брать данные из массива. Если ПОИСКПОЗ=Match, ИНДЕКС = Index, то должно получится провести аналогия в VBA, главное не запутаться в синтаксисе)
Изменено: Molov - 02.09.2017 13:27:03
ВПР в VBA какие методы есть? И их принцип работы
 
Здравствуйте, знаю что подобные вопросы поднимались не раз.
По поиску есть результаты, например, Аналог формулы ИНДЕКС в VBA в которой Казанский советовал "Функции ИНДЕКС, ПОИСКПОЗ и многие другие доступны в VBA:"
Код
Sub Макрос7()   
    i = Application.Match(Cells(23, 1), Range("A2:A20"), 0)   
    j = Application.Match(Cells(23, 2), Range("B1:G1"), 0)   
    Cells(24, 1).Value = Application.Index(Range("B2:G20"), i, j)   
End Sub
Здесь пробовал гуглить "Application.Match", чтобы понять что оно делает, но информации на русском почти не нашел.
Дальнейшие поиски
Скрытый текст

К чему стремлюсь
В примере ComboBox2 берет значения колонки "Имя" в таблице "Список", а в  Label4 подставляем соответствующее значение из колонки "Статус" той же таблицы.
Изменено: Molov - 02.09.2017 12:33:10
Более красивая запись, If comboBox = "несколько значений"
 
Спасибо vikttur к сожалению в тех примерах, что видел просто перечисляли значение, но они были и не к ComboBox
Sanja, большое спасибо за Case.
Изменено: Molov - 01.09.2017 19:42:51
Более красивая запись, If comboBox = "несколько значений"
 
Имеется ComboBox и TextBox
Нужно, чтобы TextBox отображался только при определенных значениях в ComboBox
Самый банальный вариант выглядит так
Код
Private Sub ComboBox3_Change()
    If ComboBox3 = "Начисление" Then
        TextBox1.Visible = True
    ElseIf ComboBox3.Value = "Траты" Then
        TextBox1.Visible = True
    ElseIf ComboBox3.Value = "Отпуск" Then
        TextBox1.Visible = True
    Else
        TextBox1.Visible = False
    End If
End Sub
Хотел упростить написание, ведь условий может быть множество. В некоторых примерах пишут о записях вида
Код
If arg1 = "someText" OR "SomeOtherText" 
Но если я пишу
Код
  If ComboBox3 = "Начисление" Or "Отпуск" Then 
        TextBox1.Visible = True
    Else
        TextBox1.Visible = False
    End If
то получаю ошибку Run-time error 13 Type mismatch Изменение на ComboBox3.Value не помогает.
Или лучше это делать с помощью Case?
Вставка рядом со вставкой в последнюю ячейку, Вставка значения рядом со вставленным значением в последнюю ячейку.
 
Спасибо, это то, что нужно)
Вставка рядом со вставкой в последнюю ячейку, Вставка значения рядом со вставленным значением в последнюю ячейку.
 
о, шикарно. Всё работает и, кажется, понял как делать)

А как можно сделать, чтобы если выбрано значение не только в ComboBox1 а еще и в ComboBox2 то этим:
Код
.Cells(lRw, 1).Value = Label8.Caption         
.Cells(lRw, 2).Value = ComboBox1.Value
вставляло это:
Код
.Cells(lRw, 1).Value = Label8.Caption         
.Cells(lRw, 2).Value = ComboBox2.Value
А если в  ComboBox2 ничего не выбрано то не вставлять его.

пробовал  добавить
Код
If ComboBox2.Value = True Then
            lRw2 = .Cells(.Rows.Count, "A").End(xlUp).Row + 2
            .Cells(lRw2, 1).Value = Label8.Caption .
            .Cells(lRw2, 2).Value = ComboBox1.Value
            .Cells(lRw2, 3).Value = ComboBox3.Value
        End If
но очевидно это не то и вообще скорее бред.
а по поиску "vba записать значение только когда в ComboBox есть данные" ничего не нашел, там о вставке в ComboBox только находятся (типа  Вставить значения в ComboBox формы но такое пока не подходит)

п.с Жаль, что когда создаю сообщение значков форматирования. Приходится сначала написать как есть, а потом через редактирование появляется полное форматирование.
Изменено: Molov - 01.09.2017 18:19:07
Вставка рядом со вставкой в последнюю ячейку, Вставка значения рядом со вставленным значением в последнюю ячейку.
 
Добро время суток. Никак не могу понять как вставлять справа от заполняемой ячейки
Таким макросом записываю дату из Lable8,
Код
Private Sub CommandButton1_Click()
' определяем последнюю заполненную ячейку в столбце А
' и смещаемся на одну ячейку вниз, чтобы получить незаполненную ячейку
    Dim ra As Range
    Set ra = Range("A" & Rows.Count).End(xlUp).Offset(1)
    ra = Label8
End Sub
Он вставляет по нажатию кнопки дату из lable8 в лист "История" (так как его активным делаю) .
Как в добавок к этому записывать рядом выбранное в форме Имя (из ComboBox1.Value) ?

П.с Если можно, подскажите еще как прикрепить запись к листу. "История" Не могу правильно вставить Worksheets.
Изменено: Molov - 01.09.2017 17:13:50
Вычитание из числа двух формул с рандом. коэффициентом, каждое вычитание в новой строке,, Из числа вычитаются две формулы пока не достигнут 0, каждое вычитаение в новой строке. При достижении 0 вывод текста какая достигла.
 
Добрые сутки.
Случалось у Вас задавать и добрые люди помогали найти  решение. Проблемы были банальными, практически из-за незнания базовых  формул и отсутствия опыта.
Думаю сейчас столкнулся с чем-то поинтереснее, в любом случае не вижу решения и надеюсь на вашу помощь.

Всё  так как в заголовке, есть число и есть 2 формулы, содержащие СЛУЧМЕЖДУ.  Происходит вычитание, при этом, если число не достигло 0 эти формулы  вычитаются еще раз. Это все записывается пошагово и при достижении 0 в  конце выводится текст какая из формул его достигла, или обе.

пример с пояснениями прикрепляю.  
Случайное число со смещением, но невыходя за диапазон
 
Здравствуйте. Насколько понял без VBA рандомное число генерируется с помощью СЛУЧМЕЖДУ(минимум;максимум). Встала задача, чтобы случайное число зависело от смещения.

Имеется таблица
цифратекст
получить из неё рандомный текст просто, достаточно указать СЛУЧМЕЖДУ(1;последняя_цифра) и через ВПР получить текст. Это я понимаю, но такая генерация не зависит от смещения.
Если генерировать  СЛУЧМЕЖДУ(1;последняя_цифра+смещение), то понятное дело мы выйдем из диапазона.
Можно ли сделать, чобы при выходе за диапазон шло по второму кругу?

Например, СЛУЧМЕЖДУ выдает 5, а чисел всего 10, смещение задано 15 и в итоге получается 25. В таком случае нужно чтобы он выдал 5.

Полагал сделать обычную генерацию СЛУЧМЕЖДУ(1;последняя_цифра+смещение) в одной ячейки, а конченый результат получать в другой через
Код
=ЕСЛИ((Ячейка_генерации>10);(-(10-Ячейка_генерации);Ячейка_генерации)

Но это поможет если только превышено на 1 порядок. Получается без VBA только городить каскад ЕСЛИ ?

Автоподстановка с соседнюю ячейку по условию
 
Спасибо Sanja и Александр, то что надо.
Автоподстановка с соседнюю ячейку по условию
 
Спасибо, все отлично сработало.
А возможно ли, чтобы не было видно #Н/Д в ячейки когда объект не находится?
Попробую скрыть, может получится у самого через условие "Если" ставить "-"
Изменено: asadwe - 12.09.2016 21:55:33
Автоподстановка с соседнюю ячейку по условию
 
Здравствуйте.
Вроде и простая задачка, а никак не найду решение.
Имеем: Лист, где размещены названия объектов их состояние и количество.
Необходимо: на другом листе при вводе названия объекта, чтобы шел поиск в диапазоне столбцов, которым задано имя и в соседние ячейки приписывалось его состояние и количество с первого листа.

Названия объектов в первом листе не дублируется, а вот состояние практически всегда.
Желательно без VBA по нему крайне мало знаний.
Изменено: asadwe - 12.09.2016 21:12:04
Прибавить значения из одной ячейки, если есть нужное слово в другой
 
Спасибо) Блин ну так и думал, что до стыдности просто делает. Жаль кнопки "спасибо" на форуме нет, ну или для моего статуса нет  ;)
Прибавить значения из одной ячейки, если есть нужное слово в другой
 
Здравствуйте.
К сожалению слабо знаком с Excel и самому не получается делать, хотя кажется решение доолжно быть не трудным. Обращаюсь за помощью)

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

Требуется, чтобы в"итого Наименование1" складывались числа из ячеек, которые напротив (или в той же строке) где само Наименование1 ) т.е. чтобы одна запись итого складывала все суммы одного товара, а другая другого.

Думал через функцию типа "=СЧЁТЕСЛИ(G2:G26;"Название" ;) " чтобы проверяло в столбце, но она просто складывает найденные, а что дописать (и возможно ли) чтобы складывала числа из соседних ячеек хз)

Для наглядное, наверное, прикреплю файлик. Конечно наиболее интересно решение без макросов, но и от них не откажусь)
Изменено: asadwe - 28.10.2013 10:16:20
Страницы: 1
Наверх