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

Страницы: 1
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 можно указать имя, значит и для массива должна быть возможность.
ВПР в 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 = "несколько значений"
 
Имеется 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?
Вставка рядом со вставкой в последнюю ячейку, Вставка значения рядом со вставленным значением в последнюю ячейку.
 
Добро время суток. Никак не могу понять как вставлять справа от заполняемой ячейки
Таким макросом записываю дату из 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 только городить каскад ЕСЛИ ?

Автоподстановка с соседнюю ячейку по условию
 
Здравствуйте.
Вроде и простая задачка, а никак не найду решение.
Имеем: Лист, где размещены названия объектов их состояние и количество.
Необходимо: на другом листе при вводе названия объекта, чтобы шел поиск в диапазоне столбцов, которым задано имя и в соседние ячейки приписывалось его состояние и количество с первого листа.

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

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

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

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

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