Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.70/37: Рейтинг темы: голосов - 37, средняя оценка - 4.70
27 / 2 / 0
Регистрация: 20.02.2013
Сообщений: 126

Запись в ячейку по строке и заголовку

20.02.2013, 11:19. Показов 7726. Ответов 73
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Прошу помочь с макросом.

Программа с поддержкой VBA должна открыть фаил Excel и записать своё значение в конкретную ячейку, зная название заголовка (Уголок-1) и название строки (Длина). Пересечение двух названий даёт ячейку куда нужно записать значение. Потом программа генерирует новое название заголовка (Стенка-2) и новое название строки (Ширина) и записывает значение.

Просьба помочь в решении
Миниатюры
Запись в ячейку по строке и заголовку  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.02.2013, 11:19
Ответы с готовыми решениями:

Запись в ячейку по строке и заголовку
Добрый день! Прошу помочь с макросом. Во вложении пример. необходимо с первого листа выбирая из ниспадающего меню выбирать...

Оставить в строке первую ячейку, среди повторяющихся ячеек в строке
Добрый день. Как оставить в строке первую ячейку, среди повторяющихся ячеек в строке (остальные удалить). Текстовая таблица. Столбцов...

Как узнать значение первой ячейки в строке (QTableView) при нажатии на любую ячейку в строке?
Сразу извинюсь за корявость речи. Знатоки, подскажите, как узнать значение первой ячейки в строке (QTableView) при нажатии на любую...

73
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
20.02.2013, 11:46
Цитата Сообщение от trvi Посмотреть сообщение
Программа с поддержкой VBA должна открыть фаил Excel
Что значит "Программа с поддержкой VBA"? Эта программа должна быть написана на каком-то языке (Си, Паскаль)?
Или это программа на VBA - тогда в каком приложении (Excel, Word, Autocad)?
0
693 / 99 / 10
Регистрация: 25.06.2011
Сообщений: 718
20.02.2013, 12:44
я думаю что здесь нужен пример
0
27 / 2 / 0
Регистрация: 20.02.2013
Сообщений: 126
20.02.2013, 13:16  [ТС]
Программа с поддержкой VBA - Это программа в которую встроен Visual Basic. Программа AutoCAD.

Я бы хотел чтобы AutoCAD вписывал значения.
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
20.02.2013, 15:12
В общем это можно сделать программой, которая в общем ничего кроме VB и не имеет
Наприммер скриптом vbs (используя установленный Excel).
Но в деталях не понятна сама задача.
1. На каком листе искать?
2. Где искать?
3. Что делать, если не найдёт?
4. Генерировать всегда правее?
5. А если там значение?
6. А если уже некуда?
7. А если уже есть?
8. Зачем это всё?
9. Может проще просто создать такой файл с нуля? Это не противоречит вводной...
0
27 / 2 / 0
Регистрация: 20.02.2013
Сообщений: 126
20.02.2013, 17:14  [ТС]
Можно и как, из самого Excel средствами VBA сделать такое:

1. Название листа - Лист 1
2. Задать диапазон поиска (см. рисунок выше) - A110.
3. Искать в диапазоне: поиск такой:

найти заголовок с названием "Уголок-1", запомнить номер столбца
найти строку с названием "Длина", запомнить номер строки
пересечение столбца со строкой даст ячейку в которую нужно ввести данные, например 15.


4. Если есть ошибка - выход.
5. Если там уже есть значение - перезаписать.

Давайте без тролинга.
Парни очень нужна помощь. Есть ли спецы??? Нужна помощь!!!
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
20.02.2013, 17:50
Что-то типа такого
Visual Basic
1
2
3
4
5
6
7
8
9
10
set MyCell = MySheet.rows(1).find("Уголок-1",,xlvalues,xlwhole)
if not MyCell is nothing then
    col=MyCell.column
    set MyCell = MySheet.columns(1).find("Длина",,xlvalues,xlwhole)
    if not MyCell is nothing then
        row=MyCell.Row
        'продолжение банкета
    end if
end if
'заголовки не найдены
Если не подключена библиотека Excel, константы можно определить или заменить на значения:
Code
1
2
xlvalues=-4163
xlwhole=1
Добавлено через 4 минуты
Цитата Сообщение от trvi Посмотреть сообщение
как, из самого Excel средствами VBA сделать такое
Обычно на такой вопрос дает ответ "запись макроса"
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
20.02.2013, 18:07
И где тут троллинг? Вопросы по делу - если это не прояснить, то КПД программы возможно будет никакой...
Ещё забыл спросить - файл то где? Открыт? Или нужно слепо открыть? Или дать пользователю выбрать с диска, чтоб открыть? Что с ним делать после всего?

Вот когда все мелочи проясните - тогда возможно получите код, который сразу и подойдёт

Ну а узнать номер строки/столбца легко:


Visual Basic
1
2
3
4
5
6
7
Sub tt()
    Dim x As Range, y As Range
    Set x = Range("A1:D10").Find("Уголок-1", , xlValues, xlWhole)
    If Not x Is Nothing Then MsgBox "Столбец " & x.Column
    Set y = Range("A1:D10").Find("Длина", , xlValues, xlWhole)
    If Not y Is Nothing Then MsgBox "Строка " & y.Row
End Sub
Упс, припоздал... Ну и ладно...
0
 Аватар для KoGG
5640 / 1622 / 418
Регистрация: 23.12.2010
Сообщений: 2,430
Записей в блоге: 1
20.02.2013, 18:17
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Sub trvi()
    Dim Iskomoe1$, Iskomoe2$, Stroka&, Stolbec&
    Dim RezPoiska As Range
    Iskomoe1 = "Длина"
    Iskomoe2 = "Уголок-1"
    Workbooks.Open Filename:="C:\Temp\trvi_example.xlsx", UpdateLinks:=0, ReadOnly:=False
    With ActiveWorkbook.Worksheets("Лист1")
        Set RezPoiska = .Columns(1).Find(What:=Iskomoe1, LookIn:=xlValues, _
            LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False)
        If RezPoiska Is Nothing Then
            MsgBox "Не найдено " & Iskomoe1
        Else
            Stroka = RezPoiska.Row
        End If
        Set RezPoiska = .Rows(1).Find(What:=Iskomoe2, LookIn:=xlValues, _
            LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False)
        If RezPoiska Is Nothing Then
            MsgBox "Не найдено " & Iskomoe2
        Else
            Stolbec = RezPoiska.Column
        End If
        If Stroka > 0 And Stolbec > 0 Then
            .Cells(Stroka, Stolbec) = 15 ' Свое значение
            ' Если надо поменять названия найденных строки и столбца
            .Cells(Stroka, 1) = "Длина"
            .Cells(1, Stolbec) = "Стенка-2"
            ' Альтернативно: если надо поменять названия строки и столбца следующих за найденными
            '.Cells(Stroka + 1, 1) = "Длина"
            '.Cells(1, Stolbec + 1) = "Стенка-2"
        End If
    End With
End Sub
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
20.02.2013, 19:35
Можно использовать формулу листа, в которую подставлять искомые строки:
Visual Basic
1
2
3
4
5
6
On Error Resume Next
Set MyCell = MySheet.Evaluate("INDEX(A1:J25,MATCH(""Длина"",A1:A25,),MATCH(""Уголок-1"",A1:J1,))")
If Err Then
    'заголовок не найден
End If
'MyCell - ячейка на пересечении
0
27 / 2 / 0
Регистрация: 20.02.2013
Сообщений: 126
21.02.2013, 09:52  [ТС]
Всй неплохо, но:

1. Как сделать так, чтобы записать и сохранить в фаиле example.xlsx - невидимо, скрытно и т.п.
2. Смотри в коде *



Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Sub trvi()
 
' * Можно ли записать как Dim Is(любое число) чтобы не вводить каждый раз число? Их может быть много.
 
    Dim Is1$, Is2$, Si1$, Si2$, Stroka&, Stolbec&
    Dim RezPoiska As Range
 
    Is1 = "Длина"
    Is2 = "Ширина"
' * Этих параметров может быть много    
    
    Si1 = "Уголок-1"
    Si2 = "Стенка-1"
' * Этих параметров может быть много
 
   Workbooks.Open Filename:="C:\example.xlsx", UpdateLinks:=0, ReadOnly:=False
   
' * Как сделать, чтобы он сначала вписывал значение для Is1 и Si1, потом для Is2 и Si2 и так далее...
 
   With ActiveWorkbook.Worksheets("1")
        Set RezPoiska = Range("A1:D10").Find(What:=Si2, LookIn:=xlValues, _
            LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False)
        If RezPoiska Is Nothing Then
            MsgBox "Не найдено " & Si2
        Else
            Stolbec = RezPoiska.Column
        End If
    
    
    
        Set RezPoiska = Range("A1:D10").Find(What:=Is2, LookIn:=xlValues, _
            LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False)
        If RezPoiska Is Nothing Then
            MsgBox "Не найдено " & Is2
        Else
 
            Stroka = RezPoiska.Row
        End If
  
  
  
        If Stroka > 0 And Stolbec > 0 Then
            Cells(Stroka, Stolbec) = 15 ' Свое значение
        End If
    End With
End Sub

Как узнать насколько это оптимальный код??? Хотелось бы иметь код, который работал бы быстрее... Это самый оптимальный код на VBA для данной задачи?

Спасибо!!! Казанский, KoGG, Hugo121 - всё по делу!!!
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
21.02.2013, 10:14
Ну в общем поиск одного значения (или даже двух) по небольшоу диапазону find'ом - это думаю самое быстрое решение.
Да и в общем на таких объёмах как не делай - разницы по скорости не заметите

Ну а задача в целом не вполне понятна. я предпочитаю продумывать алгоритм для задачи в целом, а не по отдельным шагам.
Если смотреть узко - составьте массив (или два) значений, и ищите пары проходя по массиву циклом. Если пары нет - пора выйти из цикла и добавлять значения.
1
27 / 2 / 0
Регистрация: 20.02.2013
Сообщений: 126
21.02.2013, 10:29  [ТС]
Всем и так понятно, что я валенок VBA - только начинаю учится... Вот разбираюсь на конкретной задачи.

Huggo121 - я тебя понимаю, что когда все целиком яснее, но повторюсь, пытаюсь сам разобраться по шагам.

В коде выше я * написал вопросы которые для меня важны. Как создать массив по нескольким значениям - не знаю.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Sub trvi()
 
' * Можно ли записать как Dim Is(любое число) чтобы не вводить каждый раз число? Их может быть много.
 
    Dim Is1$, Is2$, Si1$, Si2$, Stroka&, Stolbec&
    Dim RezPoiska As Range
 
    Is1 = "Длина"
    Is2 = "Ширина"
' * Этих параметров может быть много    
    
    Si1 = "Уголок-1"
    Si2 = "Стенка-1"
' * Этих параметров может быть много
 
   Workbooks.Open Filename:="C:\example.xlsx", UpdateLinks:=0, ReadOnly:=False
   
' * Как сделать, чтобы он сначала вписывал значение для Is1 и Si1, потом для Is2 и Si2 и так далее...
' Массив по значениям. Как создать?
 
   With ActiveWorkbook.Worksheets("1")
        Set RezPoiska = Range("A1:D10").Find(What:=Si2, LookIn:=xlValues, _
            LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False)
        If RezPoiska Is Nothing Then
            MsgBox "Не найдено " & Si2
        Else
            Stolbec = RezPoiska.Column
        End If
    
    
    
        Set RezPoiska = Range("A1:D10").Find(What:=Is2, LookIn:=xlValues, _
            LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False)
        If RezPoiska Is Nothing Then
            MsgBox "Не найдено " & Is2
        Else
 
            Stroka = RezPoiska.Row
        End If
  
  
  
        If Stroka > 0 And Stolbec > 0 Then
            Cells(Stroka, Stolbec) = 15 ' Свое значение
        End If
    End With
End Sub
0
 Аватар для KoGG
5640 / 1622 / 418
Регистрация: 23.12.2010
Сообщений: 2,430
Записей в блоге: 1
21.02.2013, 13:52
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Sub trvi2()
    Dim KolichestvoParUsloviy%, i%
    KolichestvoParUsloviy = 2
    'Is- неудачное имя для переменной, совпадает с оператором Is
    ReDim Iss$(KolichestvoParUsloviy), Si$(KolichestvoParUsloviy), Znachenie#(KolichestvoParUsloviy)
    Dim Stroka&, Stolbec&
    Dim RezPoiska As Range
    Iss(1) = "Длина"
    Iss(2) = "Ширина"
    Si(1) = "Уголок-1"
    Si(2) = "Стенка-1"
    Znachenie(1) = 15  ' Подставляемое значение для 1-ой пары
    Znachenie(2) = 16.9999 ' Подставляемое значение для 2-ой пары
    Application.ScreenUpdating = False ' для скрытности
   Workbooks.Open Filename:="C:\example.xlsx", UpdateLinks:=0, ReadOnly:=False
 For i = 1 To KolichestvoParUsloviy
   With ActiveWorkbook.Worksheets("1")
        Set RezPoiska = Range("A1:D10").Find(What:=Si(i), LookIn:=xlValues, _
            LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False)
        If RezPoiska Is Nothing Then
            MsgBox "Не найдено " & Si(i)
        Else
            Stolbec = RezPoiska.Column
        End If
        Set RezPoiska = Range("A1:D10").Find(What:=Iss(i), LookIn:=xlValues, _
            LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False)
        If RezPoiska Is Nothing Then
            MsgBox "Не найдено " & Iss(i)
        Else
            Stroka = RezPoiska.Row
        End If
        If Stroka > 0 And Stolbec > 0 Then
            Cells(Stroka, Stolbec) = Znachenie(i) ' Свое значение
        End If
    End With
Next i
    Application.ScreenUpdating = True
End Sub
Если важна скорость, то MsgBox лучше выкинуть, тогда для не найденных условий ничего не будет меняться.

Добавлено через 14 минут
А чтобы сохранить и закрыть тоже невидимо то перед Application.ScreenUpdating = True
добавить строку
Visual Basic
1
ActiveWorkbook.Close SaveChanges:=True
1
27 / 2 / 0
Регистрация: 20.02.2013
Сообщений: 126
22.02.2013, 08:04  [ТС]
KoGG - красавчик! Но извини переменные изменил для себя... Я убрал открытие книги - пока тестирую внутри книги.

1. Получается если заполнять с поиском по типу: сначала тип (Уголок-1) затем заполни все параметры (Длина, Ширина и т. д.), затем тип (Стенка-1) и заполни все параметры (Длина, Ширина и т. д.), то получается два цикла:

Может как-то можно упростить? А то получается два цикла и чем больше типов (например: Уголок-1), тем больше циелов...

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
Sub trvi()
 
    Dim Step%, i%
    Step = 4
 
    ReDim a1$(Step), b1$(Step), f#(Step)
    Dim Strk&, Stlb&
    Dim Rez As Range
 
 
    a1(1) = "Длина"
    a1(2) = "Ширина"
    a1(3) = "Высота"
    a1(4) = "Толщина"
    
    b1(1) = "Уголок-1"
    b1(2) = "Стенка-1"
 
 
    f(1) = 11 ' Подставляемое значение для 1-ой пары
    f(2) = 12 ' Подставляемое значение для 2-ой пары
    f(3) = 13 ' Подставляемое значение для 1-ой пары
    f(4) = 14 ' Подставляемое значение для 2-ой пары
 
' Цикл-1
For i = 1 To Step
        Set Rez = Range("A1:D20").Find(What:=b1(1), LookIn:=xlValues, _
        LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)
 
        If Rez Is Nothing Then
            MsgBox "Не найдено " & b1(1)
        Else
            Stlb = Rez.Column
        End If
 
        Set Rez = Range("A1:D20").Find(What:=a1(i), LookIn:=xlValues, _
        LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)
 
        If Rez Is Nothing Then
            MsgBox "Не найдено " & a1(i)
        Else
            Strk = Rez.Row
        End If
 
        If Strk > 0 And Stlb > 0 Then
            Cells(Strk, Stlb) = f(i)
        End If
Next i
 
' Цикл-2
For i = 1 To Step
        Set Rez = Range("A1:D20").Find(What:=b1(2), LookIn:=xlValues, _
        LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)
 
        If Rez Is Nothing Then
            MsgBox "Не найдено " & b1(2)
        Else
            Stlb = Rez.Column
        End If
 
        Set Rez = Range("A1:D20").Find(What:=a1(i), LookIn:=xlValues, _
        LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)
 
        If Rez Is Nothing Then
            MsgBox "Не найдено " & a1(i)
        Else
            Strk = Rez.Row
        End If
 
        If Strk > 0 And Stlb > 0 Then
            Cells(Strk, Stlb) = f(i)
        End If
Next i
End Sub
0
 Аватар для KoGG
5640 / 1622 / 418
Регистрация: 23.12.2010
Сообщений: 2,430
Записей в блоге: 1
22.02.2013, 14:09
Для упрощения нужно иметь ясность в голове и в изложении мысли.
Последние формулировки в корне отличаются от первоначальной задачи.
Если надо заполнить всю матрицу, то надо по другому продумать архитектуру алгоритма.
Циклы лучше сделать вложенными, по i, по j, а массив f() сделать двумерным, на пересечении нужных номеров строк и столбцов массива будет нужное значения.
Step - недопустимое имя для переменной , служебное слово конструкции:
Visual Basic
1
For i=1 to 12 step 4
- меняем на KolStrok и KolStolbcov , так как матрица может быть и прямоугольной.
и т.д. и т.п.
А для начала нарисуй схему на бумаге, чего действительно нужно.
1
27 / 2 / 0
Регистрация: 20.02.2013
Сообщений: 126
22.02.2013, 15:24  [ТС]
Цитата Сообщение от KoGG Посмотреть сообщение
Для упрощения нужно иметь ясность в голове и в изложении мысли.
Последние формулировки в корне отличаются от первоначальной задачи.
Если надо заполнить всю матрицу, то надо по другому продумать архитектуру алгоритма.
Циклы лучше сделать вложенными, по i, по j, а массив f() сделать двумерным, на пересечении нужных номеров строк и столбцов массива будет нужное значения.
Step - недопустимое имя для переменной , служебное слово конструкции:
Visual Basic
1
For i=1 to 12 step 4
- меняем на KolStrok и KolStolbcov , так как матрица может быть и прямоугольной.
и т.д. и т.п.
А для начала нарисуй схему на бумаге, чего действительно нужно.
Понял. Спасибо KoGG!
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
25.02.2013, 13:25
To_trvi Здравствуйте. Мне просто интересно, если можно. В AutoCad есть возможность связать чертеж с базой. Любые изменения чертежа должны отображаться изменениями базы. Так не будет проще? Но это на форумы по AutoCAD. А еще там есть очень класная штучка, как динамические блоки. Комбинация этих инструментов дает очень много. Может, и не нужно будет VBA.
0
27 / 2 / 0
Регистрация: 20.02.2013
Сообщений: 126
13.03.2013, 10:56  [ТС]
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Sub rt()
    Dim kol%, i%
    kol = 2
    ReDim a1$(kol), b1$(kol), c1#(kol)
    Dim str&, stlb&
    Dim rez As Range
 
    Dim ws As Worksheet
    Set ws = Worksheets("Лист1")
 
    Dim rn As Range
    Set rn = ws.Range("A1:Z100")
  
    a1(1) = "Длина"
    a1(2) = "Ширина"
 
    b1(1) = "Уголок-1"
    b1(2) = "Стенка-1"
 
    c1(1) = 15
    c1(2) = 16
 
    For i = 1 To kol
        With ws
             Set rez = rn.Find(What:=a1(i), LookIn:=xlValues, _
                 LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
                 MatchCase:=False, SearchFormat:=False)
             If rez Is Nothing Then
                 MsgBox "Ошибка"
             Else
                 stlb = rez.Column
             End If
             
             Set rez = rn.Find(What:=b1(i), LookIn:=xlValues, _
                 LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
                 MatchCase:=False, SearchFormat:=False)
             If rez Is Nothing Then
                 MsgBox "Ошибка"
             Else
                 str = rez.Row
             End If
             
             If str > 0 And stlb > 0 Then
                 Cells(str, stlb) = c1(i)
             End If
         End With
    Next i
End Sub


Как реализовать, чтобы он записывал значение c1 для нескольких названий b1 (количество названий в диапазоне может быть разное)?
Вложения
Тип файла: xls Книга1.xls (33.5 Кб, 3 просмотров)
0
 Аватар для KoGG
5640 / 1622 / 418
Регистрация: 23.12.2010
Сообщений: 2,430
Записей в блоге: 1
13.03.2013, 11:30
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Sub rt()
    Dim kol%, i%
    kol = 4
    ReDim a1$(kol), b1$(kol), c1#(kol)
    Dim str&, stlb&
    Dim rez As Range
 
    Dim ws As Worksheet
    Set ws = Worksheets("Лист1")
 
    Dim rn As Range
    Set rn = ws.Range("A1:Z100")
  
    a1(1) = "Длина": b1(1) = "Уголок-1": c1(1) = 15
    a1(2) = "Длина": b1(2) = "Стенка-1": c1(2) = 15
    a1(3) = "Ширина": b1(3) = "Уголок-1": c1(3) = 16
    a1(4) = "Ширина": b1(4) = "Стенка-1": c1(4) = 16
 
 
    For i = 1 To kol
        With ws
             Set rez = rn.Find(What:=a1(i), LookIn:=xlValues, _
                 LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
                 MatchCase:=False, SearchFormat:=False)
             If rez Is Nothing Then
                 MsgBox "Ошибка"
             Else
                 stlb = rez.Column
             End If
             
             Set rez = rn.Find(What:=b1(i), LookIn:=xlValues, _
                 LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
                 MatchCase:=False, SearchFormat:=False)
             If rez Is Nothing Then
                 MsgBox "Ошибка"
             Else
                 str = rez.Row
             End If
             
             If str > 0 And stlb > 0 Then
                 Cells(str, stlb) = c1(i)
             End If
         End With
    Next i
End Sub
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.03.2013, 11:30
Помогаю со студенческими работами здесь

Запись в ячейку БД
Возникла такая проблема: надо записать в ячейку текстового формата переменную string при нажатии на кнопку. Напрямую не хочет, пишет...

Запись в ячейку памяти
Даны два целых числа. Необходимо 3аписать их одно за другим без пропуска битов в ячейку памяти размером в два байта . Подскажите...

Запись 0 в ячейку not null
Здравствуйте! Будет ли писать 0 в ячейку not null или где-то ещё у меня косяк, чёт не заносит в базу значение ))) Спасибо.

Запись в ячейку ДБГрида
Здравствуйте, что-то не пойму почему не работает? Хочу добавить в выбранную ячейку значение "5" procedure...

Запись в ячейку памяти
Подскажите пожалуйста, как в avr studio 4 из РОН записать число в ячейку памяти $0068 ?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru