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

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

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

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

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

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

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

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

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

73
27 / 2 / 0
Регистрация: 20.02.2013
Сообщений: 126
13.03.2013, 15:49  [ТС]
Студворк — интернет-сервис помощи студентам
Igor_Tr,
Не работает
0
27 / 2 / 0
Регистрация: 20.02.2013
Сообщений: 126
13.03.2013, 16:07  [ТС]
А если упростить задачу:

Исходные данные - таблица:

a=Стенка-1



b1=Длина
b2=Ширина
b3=Высота
...
с1=12
с2=13
с3=14
...

Задача:

Найти все пересечения Стенка-1 и Длина и заполнить значением с1
Найти все пересечения Стенка-1 и Ширина и заполнить значением c2
Найти все пересечения Стенка-1 и Высота и заполнить значением c3
и т. д.

Строк с именем Стенка-1 может быть несколько.
Вложения
Тип файла: xls Test.xls (33.5 Кб, 2 просмотров)
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
13.03.2013, 16:47
Уже и высота появилась
Раз и моё не годится - я пас...
0
27 / 2 / 0
Регистрация: 20.02.2013
Сообщений: 126
13.03.2013, 17:14  [ТС]
Такой вариант от Aksima подходит:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub bb()
    Dim n As Integer
    n = 3
    
    Dim b1(0 To 3) As String
    Dim c1(0 To 3) As String
 
    a1$ = "Стенка-1"
    b1(1) = "Длина"
    b1(2) = "Ширина"
    b1(3) = "Высота"
    c1(1) = 1
    c1(2) = 2
    c1(3) = 3
 
    For i = 1 To n
        Cells.Find(b1(i)).Offset(1).Resize(99, 1).FormulaR1C1 = "=IF(RC1=""" & a1 & """," & c1(i) & ","""")"
        
    Next i
End Sub
0
 Аватар для KoGG
5730 / 1633 / 419
Регистрация: 23.12.2010
Сообщений: 2,455
Записей в блоге: 1
13.03.2013, 17:31
Правильная графическая организация кода - половина дела.
Если надо заносить данные всей матрицы, то всю матрицу в коде лучше размещать как таблицу.
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
Sub rt()
    Const kolIzdeliy% = 9
    Const kolSvoystv% = 5
    Dim a$(kolSvoystv), b$(kolIzdeliy), c#(kolIzdeliy, kolSvoystv)
    Dim strow&, stlb&, i%, j%
    'str - недопустимое имя для переменной, совпадает с функцией Str()
    Dim rez As Range, rn As Range, ws As Worksheet
    Set ws = Worksheets("Лист1")
    Set rn = ws.Range("A1:Z100")
    i = 1
                              a(1) = "Длина": a(2) = "Ширина": a(3) = "Высота": a(4) = "Объем": a(5) = "Масса"
i = i + 1: b(i) = "Уголок-1"::: c(i, 1) = 110: c(i, 2) = 120: c(i, 3) = 130: c(i, 4) = 140: c(i, 5) = 150
i = i + 1: b(i) = "Стенка-2"::: c(i, 1) = 210: c(i, 2) = 220: c(i, 3) = 230: c(i, 4) = 240: c(i, 5) = 250
i = i + 1: b(i) = "Гайка":::::: c(i, 1) = 310: c(i, 2) = 320: c(i, 3) = 330: c(i, 4) = 340: c(i, 5) = 350
i = i + 1: b(i) = "Болт-3"::::: c(i, 1) = 410: c(i, 2) = 420: c(i, 3) = 430: c(i, 4) = 440: c(i, 5) = 450
i = i + 1: b(i) = "Шестерня-1": c(i, 1) = 510: c(i, 2) = 520: c(i, 3) = 530: c(i, 4) = 540: c(i, 5) = 550
i = i + 1: b(i) = "Шестерня-2": c(i, 1) = 610: c(i, 2) = 620: c(i, 3) = 630: c(i, 4) = 640: c(i, 5) = 550
i = i + 1: b(i) = "Шестерня-3": c(i, 1) = 710: c(i, 2) = 720: c(i, 3) = 730: c(i, 4) = 740: c(i, 5) = 550
i = i + 1: b(i) = "Шестерня-4": c(i, 1) = 810: c(i, 2) = 820: c(i, 3) = 830: c(i, 4) = 840: c(i, 5) = 550
i = i + 1: b(i) = "Шестерня-5": c(i, 1) = 910: c(i, 2) = 920: c(i, 3) = 930: c(i, 4) = 940: c(i, 5) = 550
'i = i + 1: - для ленивых, копируешь последнюю строку для дополнения списка
    
    With ws
        For i = 1 To kolSvoystv
            Set rez = rn.Find(What:=a(i), LookIn:=xlValues, _
                LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
                MatchCase:=False, SearchFormat:=False)
             If rez Is Nothing Then
                MsgBox "Ошибка"
             Else
                stlb = rez.Column
                For j = 1 To kolIzdeliy
                     Set rez = rn.Find(What:=b(j), LookIn:=xlValues, _
                         LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
                         MatchCase:=False, SearchFormat:=False)
                     If rez Is Nothing Then
                         MsgBox "Ошибка"
                     Else
                         strow = rez.Row
                         .Cells(strow, stlb) = c(j, i)
                     End If
                Next j
             End If
        Next i
    End With
End Sub
1
27 / 2 / 0
Регистрация: 20.02.2013
Сообщений: 126
13.03.2013, 17:32  [ТС]
Неплохо, буду тестить...
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
13.03.2013, 17:34
"Такой вариант от Aksima подходит" - это если не нужно искать по всему диапазону стенки...
Что намного проще.
0
27 / 2 / 0
Регистрация: 20.02.2013
Сообщений: 126
13.03.2013, 17:39  [ТС]
Hugo121,

Вариант от Aksima заполняет всю таблицу по всем значениям Стенка-1

Вот код:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub bb()
    Dim n As Integer
    n = 3
    
    Dim b1(0 To 3) As String
    Dim c1(0 To 3) As String
 
    a1$ = "Стенка-1"
    b1(1) = "Длина"
    b1(2) = "Ширина"
    b1(3) = "Высота"
    c1(1) = 1
    c1(2) = 2
    c1(3) = 3
 
    For i = 1 To n
        Cells.Find(b1(i)).Offset(1).Resize(99, 1).FormulaR1C1 = "=IF(RC1=""" & a1 & """," & c1(i) & ","""")"
        
    Next i
End Sub
0
 Аватар для KoGG
5730 / 1633 / 419
Регистрация: 23.12.2010
Сообщений: 2,455
Записей в блоге: 1
13.03.2013, 17:41
В 10-ой строке i = 0
0
27 / 2 / 0
Регистрация: 20.02.2013
Сообщений: 126
13.03.2013, 17:43  [ТС]
KoGG,

Поясни... почему?
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
13.03.2013, 17:53
Я проверил тот вариант - но в условиях Запись в ячейку по строке и заголовку нигде не сказано, что стенки в А...
0
 Аватар для KoGG
5730 / 1633 / 419
Регистрация: 23.12.2010
Сообщений: 2,455
Записей в блоге: 1
13.03.2013, 18:01
Цитата Сообщение от trvi Посмотреть сообщение
KoGG,

Поясни... почему?
Потому что массивы объявлены с количеством изделий 9,
а уже первая строка данных матрицы начинается i = i + 1,
Если в 10-ой строке i = 1, то первая строка матрицы остается нулевой, а при присвоении данных по последнему изделию массивы выдают ошибку : Subscript out of range.
Если не использовать код для ленивых и вместо i явно прописывать номер строки при присвоении данных массивам, то этих заморочек не возникает.
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
13.03.2013, 18:20
To trvi. Я уезжал. Не было меня.
Igor_Tr,
Не работает
Странно было бы, если б заработало. Уже в дороге до меня дошло. Вам В САМОМ ВЕРХУ МОДУЛЯ!!!, ОБЯЗАТЕЛЬНО!!!, просто необходимо прописать два выражения (может, и другие варианты левачат по этой причине):
Option Explicit ' Не удалять!
Option Base 1 ' Не удалять!
Обясняю. Там привязка к номеру ряда. По умолчанию, Option Base 0. T.е. индекс первого ел-та массива НУЛЬ!!!
Исправьте, и, думаю, все варианты у Вас будут рабочие.
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
13.03.2013, 18:27
Я в своём варианте это пресёк на корню
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
13.03.2013, 18:50
To Hugo. Ну, извиняйте. Я только приехал, и еще не всему удивился. Но мой код точно
это требует.

Добавлено через 21 минуту
To Hugo.
ReDim a1$(1 To kol), b1$(1 To kol), c1#(1 To kol)
ТАК НЕ ЧЕСТНО!!! Я СПЕШИЛ!!! МЕНЯ МАШИНА ЖДАЛА!!!
To trvi. Но если серьйозно... Помните, в моем посте # 23 ?
"...проще всего будет можно решить через словари + коллекции + массивы..."
Вот Hugo121 это и сделал. Грамотно и основательно. Я б от этого кода отталкивался. А то, что нужно сверху - пропишите от греха....
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
13.03.2013, 19:08
Есть там у меня одна недоработка... Переменную crit использую как флаг того, что найдена хоть одна пара значений. А если не найдена - не учёл на выходе...
И даже сразу не придумаю, как до конца учесть...

Хотя... Проверил - ошибка не появляется, можно голову не ломать

Добавлено через 6 минут
Т.е. эту переменную и работу с ней можно убрать.
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
13.03.2013, 19:22
Счас! Еще скажу!
Сообщение от Hugo121, пост #43.
Уже и высота появилась
АБСОЛЮТНО СЕРЬЙОЗНО! trvi Как подозреваю, речь идет о мебели. И, скорее всего, о кухнях. Если учесть, что средне укомплектованная кухня, при одновременном включении всех эти комбайнов, блэндэров, кофеварок, хлебопечек, посудомоек и т.д. тянет от 8 кВт минимум при условии что все А++ (сам был свиделем такого), я б рекомендовал Вам в таблицу еще одни параметр - массу изделий. Перекрытия они разные...
Святая Мария! Во мне умер великий критик.
0
27 / 2 / 0
Регистрация: 20.02.2013
Сообщений: 126
14.03.2013, 08:41  [ТС]
Мужики, а если не бодаться и идти дальше по этому коду:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub bb()
    Dim n As Integer
    n = 3
    
    Dim b1(0 To 3) As String
    Dim c1(0 To 3) As String
 
    a1$ = "Стенка-1"
    b1(1) = "Длина"
    b1(2) = "Ширина"
    b1(3) = "Высота"
    c1(1) = 1
    c1(2) = 2
    c1(3) = 3
 
    For i = 1 To n
        Cells.Find(b1(i)).Offset(1).Resize(99, 1).FormulaR1C1 = "=IF(RC1=""" & a1 & """," & c1(i) & ","""")"
        
    Next i
End Sub
У меня не будет В 10-ой строке i = 0 - массив не дойдёт до 10.

А по поводу:

Visual Basic
1
Cells.Find(b1(i)).Offset(1).Resize(99, 1).FormulaR1C1 = "=IF(RC1=""" & a1 & """," & c1(i) & ","""")"
Может мне кто-нибудь расшифровать, что здесь и как его можно упростить. У меня программа на vb.net не понимает его, говорит:

Сбой при разрешении перегрузки: ни один Public "=" нельзя вызвать с данными аргументами:
'Public Shared Operator =(a As String, b As String) As Boolean':
Соответствующий параметру "a" аргумент нельзя преобразовать из "Object(,)" в "String".
Вот код:

VB.NET
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
Sub Main()      
    excelApp = CreateObject("Excel.Application")
    excelApp.Visible = False
    excelApp.workbooks.Open("d:\test.xls")   
    wb = excelApp.activeWorkbook
    ws = wb.Sheets("Лист1")   
    ar = ws.Range("A1:Z100")
 
    With ws
        Dim a As String = ThisDoc.FileName(False)
        Dim n As Integer = 4
        Dim b(0 To n) As String
        Dim c(0 To n) As String
    
        b(1) = "d_A"
        b(2) = "d_B"
        b(3) = "d_C"
        b(4) = "d_D"
    
        c(1) = 10
        c(2) = 11
        c(3) = 12
        c(4) = 13
    
        For i = 1 To n
            findAdr(a,b(i),c(i),ar)
        Next i   
    End With
 
    wb.Save
    wb.Close
    excelApp.Quit
    excelApp = Nothing 
End Sub
 
Function findAdr(x As String, y As String, z As String, wws As Object) As Object
    findAdr = wws.Cells.Find(y).Offset(1).Resize(99, 1).FormulaR1C1 = "=IF(RC1=""" & x & """," & z & ","""")"
End Function
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
14.03.2013, 12:55
To trvi. Здравствуйте.Не знаю, что такое бодаться.
У меня программа на vb.net ...
Насколько мне известно, это не совсем VBA.
Несмотря на кучу здесь навороченного, мне лично не совсем еще все понятно. Помогите мне, и, может, поможем Вам.
Кидаю Вам Вашу книгу. Запустите макрос, и, пожалуйста, ответьте не пару вопросов, которые будут потом по результатах. Там упрощенная процедура. Дальше посмотрим.
Вложения
Тип файла: xls New_Книга9.xls (50.5 Кб, 4 просмотров)
0
27 / 2 / 0
Регистрация: 20.02.2013
Сообщений: 126
14.03.2013, 14:07  [ТС]
Igor_Tr,

Работает... но мне надо его выполнить из другой программы которая на VBA.net

Код
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
Sub Main()
   Dim excelApp As Object
   Dim wb As Object
   Dim ws As Object
   Dim ar As Object
 
   excelApp = CreateObject("Excel.Application")
   excelApp.Visible = False
   excelApp.Workbooks.Open ("c:\test.xls")
   wb = excelApp.ActiveWorkbook
   ws = wb.Sheets("Лист1")
   ar = ws.Range("A1:Z100")
 
 Dim rngg1 As Object, rngg2 As Object, cuhWidthCell As Object
 Dim i&, j&, r&, c&, a&, b&, count_1&, count_2&
 Dim c1%, c2%, c3%, c4%
 Dim ahWidth1(), ahWidth2()
     
With ws  
   a = Application.WorksheetFunction.CountIf(ws.Range("A:A"), "Стенка-1")
   b = Application.WorksheetFunction.CountIf(Range("A:A"), "Уголок-1")
   Dim ahWidth1(a)
   Dim ahWidth2(b)
   
   count_1 = 0
   count_2 = 0
   
       For Each cuhWidthCell In Range("A:A")
            If cuhWidthCell.Value = "Oaieie-1" Then
               count_1 = count_1 + 1
               ahWidth1(count_1) = cuhWidthCell.Row
            End If
            If cuhWidthCell.Value = "Noaiea-1" Then
               count_2 = count_2 + 1
              ahWidth2(count_2) = cuhWidthCell.Row
            End If
        Next
 
    c1 = 15: c2 = 16: c3 = 35: c4 = 46
    For i = LBound(ahWidth1) To UBound(ahWidth1)
       Set cuhWidthCell = Application.Intersect(Rows(ahWidth1(i)), _
                            Range("b:b"))
            
            cuhWidthCell = c1
        cuhWidthCell = Application.Intersect(Rows(ahWidth1(i)), _
                            Range("C:C"))
            cuhWidthCell = c2
    Next 'i
    For i = LBound(ahWidth2) To UBound(ahWidth2)
       cuhWidthCell = Application.Intersect(Rows(ahWidth2(i)), _
                            Range("b:b"))
            cuhWidthCell = c3
        cuhWidthCell = Application.Intersect(Rows(ahWidth2(i)), _
                            Range("C:C"))
            cuhWidthCell = c4
    Next 'i
End With
 
   wb.Save
   wb.Close
   excelApp.Quit
   excelApp = Nothing
End Sub
А ошибки из CATIA:

Ошибка в строке 60 : "WorksheetFunction" не является членом "Inventor.Application".
Ошибка в строке 61 : "WorksheetFunction" не является членом "Inventor.Application".
Ошибка в строке 61 : "Range" не объявлен. Может быть недоступен из-за своего уровня защиты.
Ошибка в строке 62 : Переменная "ahWidth1" скрывает переменную во внешнем блоке.
Ошибка в строке 63 : Переменная "ahWidth2" скрывает переменную во внешнем блоке.
Ошибка в строке 68 : "Range" не объявлен. Может быть недоступен из-за своего уровня защиты.
Ошибка в строке 81 : Операторы присваивания "Let" и "Set" больше не поддерживаются.
Ошибка в строке 81 : "Intersect" не является членом "Inventor.Application".
Ошибка в строке 81 : "Rows" является типом и, следовательно, не является допустимым выражением.
Ошибка в строке 82 : "Range" не объявлен. Может быть недоступен из-за своего уровня защиты.
Ошибка в строке 85 : "Intersect" не является членом "Inventor.Application".
Ошибка в строке 85 : "Rows" является типом и, следовательно, не является допустимым выражением.
Ошибка в строке 86 : "Range" не объявлен. Может быть недоступен из-за своего уровня защиты.
Ошибка в строке 90 : "Intersect" не является членом "Inventor.Application".
Ошибка в строке 90 : "Rows" является типом и, следовательно, не является допустимым выражением.
Ошибка в строке 91 : "Range" не объявлен. Может быть недоступен из-за своего уровня защиты.
Ошибка в строке 93 : "Intersect" не является членом "Inventor.Application".
Ошибка в строке 93 : "Rows" является типом и, следовательно, не является допустимым выражением.
Ошибка в строке 94 : "Range" не объявлен. Может быть недоступен из-за своего уровня защиты.
Добавлено через 5 минут
Сейчас запускаю из CATIA так:

VB.NET
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
Sub Main()      
        'создадим свой сеанс Excel
  excelApp = CreateObject("Excel.Application")
         'делаем Excel невидимым (это совершенно необязательно)
  excelApp.Visible = False
        'открываем конкретный файл Excel
  excelApp.workbooks.Open("c:\test.xls")   
        'ссылка на активную рабочую книгу (тип WorkBook)
  WB = excelApp.activeWorkbook
         'Ссылка на конкретный лист по его имени (тип WorkSheet)
  WS = WB.Sheets("Лист1")   
        'ссылка на конкретный диапазон (строка, солбец) (объект Range)
  ar=WS.Range("A1:Z100")
 
With WS
    Dim n As Integer = 10
    Dim b(0 To n) As String
    Dim s(0 To n) As Object
    
        a="Стенка-1"
 
        b(1)="d_M"
        b(2)="d_A"
        b(3)="d_B"
        b(4)="d_C"
        b(5)="d_D"
        b(6)="d_E"
        b(7)="d_F"
        b(8)="d_G"
        b(9)="d_L"
        b(10)="d_S"
        
    ar.Find(What:="Стенка-1", After:=.Range("A1"), LookIn:=xlValues).Value = "!!!"
 
    For i=1 To n
        'Находим ячейку в Excel, которую необходимо заполнить
        ExCel=findAdr(a,b(i),ar,s,excelApp) 
    
        Try
            obj=Parameter.Param(b(i))
            If b(i)="d_M" Then
                    Parameter.Param(b(i)).Value = Round(iProperties.Mass * 0.1, 3)
                End If
            If b(i)="d_L" Then
                    Parameter.Param(b(i)).Value = (SheetMetal.FlatExtentsLength * 0.1)
            End If
                ExCel.Value = (Parameter.Param(b(i)).Value * 10)
                'MsgBox(Parameter.Param(b(i)).Value,0,b(i)+"=")
'--------------------------------------             
                Col=Excel.Column
                For k=1 To 10
                    elRow = s(k).Row
                    ar.Cells(elRow,Col).Value = (Parameter.Param(b(i)).Value * 10)
                Next'--------------------------------------                 
        Catch Ex As Exception
            'MsgBox (b(i)+" dont exist2")
        End Try
    NextEnd With
 
  'закрываем приложение Excel
WB.Save 'сохраняем изменения в рабочей книге Excel
GoExcel.Save 'сохраняем изменения в Excel окончательно
GoExcel.Close
excelApp.Quit
End Sub 'Main
 
Function findAdr(x As String, y As String, WWS As Object, q() As Object, Ob As Object) As Object
 
    With WWS
    WWS.Cells(1,1).Activate
 
        Rez1 = WWS.Find(What:=x)
 
'----------------------------------------------------       
            q(0)= Rez1
            q(1)=WWS.FindNext(After:=q(0))
    
            i=1
            Do While (q(i).Row > q(i-1).Row)
                i=i+1
                q(i) = WWS.FindNext(After:=q(i-1))  
            Loop
'-------------------------------------
    
        Rez2 = WWS.Find(What:=y)    
        If Rez2 Is Nothing Then
            'MsgBox ("Не найдено " + y,0,":(")
        Else
            Strk=Rez1.Row
                        Stlb=Rez2.Column
            Dim stroka As String =Strk
            Dim stolbec As String =Stlb
        'Присваеваем значению функции тело искомой ячейки
            findAdr = WWS.Cells(Strk,Stlb)
'           Ab=Rez3.Row
'           WWS.Cells(Ab,Stlb).Value = 1000 
    'MsgBox ("Строка"+stroka+" Столбец"+stolbec,0,"Нашел!")   
    
        End If
    End With
End Function
Насколько он оптимален. Повторяюсь он понимает vba.net а не просто vba
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.03.2013, 14:07

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru