Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 6 След.
Передача данных переменной из одной процедуры в другую, В первом макросе переменная myTMes нормально возвращает значение. А дальше ничего..
 
Цитата
Юрий М написал:
А Ваш скрин вообще ни о чём.
Юрий М, я решил использовать именно так: Public МояПеременная, далее в коде, ищем места: МояПеременная = myTMest.Offset(0, 3).Value, и если пусто, то подставляем в другом модуле вот так:
Код
If tbl.Range("J" & r) = 0 Then
            tbl.Range("J" & r) = МояПеременная
заработало. ОДИН В ОДИН зделано как на цитата:". А Ваш скрин вообще ни о чём", только имя переменной поменял на Ваше.

Возвращает теперь как надо, остальное в понедельник уже добью, Спасибо Юрий!
Передача данных переменной из одной процедуры в другую, В первом макросе переменная myTMes нормально возвращает значение. А дальше ничего..
 
Юрий М, ну , сделал по вашим мотивам:
Передача данных переменной из одной процедуры в другую, В первом макросе переменная myTMes нормально возвращает значение. А дальше ничего..
 
Цитата
Ігор Гончаренко написал:
ИмяМодуляВКоторомОбьявленаПеременная.МояПеременная
так: AA_Nad_ModuleSformi_A_Shok.myTMes = myTMest.Offset(0, 3).Value
?
Изменено: Домкрат - 6 ноя 2020 15:01:09
Передача данных переменной из одной процедуры в другую, В первом макросе переменная myTMes нормально возвращает значение. А дальше ничего..
 
Цитата
Андрей VG написал:
В приложенном файле нет такой переменной
хорошо, а как правильно нужно объявить тогда?
Передача данных переменной из одной процедуры в другую, В первом макросе переменная myTMes нормально возвращает значение. А дальше ничего..
 
передать значение переменной из одного модуля в другой.

Цитата
Ігор Гончаренко написал: пока не обьясните что хотите сделать
макрос обрабатывает несколько файлов, в одном из них может не хватать нескольких столбцов, из-за этого кол-во мест нужно брать из строки под таблицей.
В одном макросе я записываю это количество мест. Далее, мне нужно его запомнить, и когда при окончательной обработке обнаружится, что в столбце J пусто, то в итоговою строку подставить значение из переменной, из первого макроса. Само суммирование будет делать другой макрос.

Цитата
Ігор Гончаренко написал: пока ничья 1:1
Вы это о чём сейчас??? Любите футбол?
Передача данных переменной из одной процедуры в другую, В первом макросе переменная myTMes нормально возвращает значение. А дальше ничего..
 
Цитата
V написал:
Файл секретный?
нет, не секретный, проста надстройка весит 5 бм.
я вытащил два модуля в файл которые нужны сейчас. вот он.
Передача данных переменной из одной процедуры в другую, В первом макросе переменная myTMes нормально возвращает значение. А дальше ничего..
 
Цитата
Ігор Гончаренко написал:
сможете обьяснить простыми словами
пременная обнуляется при попытке передать данные в другую процедуру.
Передача данных переменной из одной процедуры в другую, В первом макросе переменная myTMes нормально возвращает значение. А дальше ничего..
 
Юрий М,  написал перед процедурой: Public myTMes As Range
тогда вот эту строку красит жёлтым:
myTMes = myTMest.Offset(0, 3).Value - объект типо не установлен
Изменено: Домкрат - 6 ноя 2020 14:07:26
Передача данных переменной из одной процедуры в другую, В первом макросе переменная myTMes нормально возвращает значение. А дальше ничего..
 
вопрос был не про ф8, вообщето. Если , конечно, уважаемый V читал  название темы.

Цитата
Юрий М написал: Попробуйте использовать глобальную переменную.
где именно? я уже везде, где только можно объявил. Одно могу сказать: при переходе в следующий модуль все данные обнуляются.
Передача данных переменной из одной процедуры в другую, В первом макросе переменная myTMes нормально возвращает значение. А дальше ничего..
 
Цитата
V написал:
Пошаговый проход по коду (F8
я второй день жму на F8. В первой процедуре всё нормально: переменная возващает как  в самом макросе, так и в шапке нужные значения

а вот в следующей процедуре эта переменная пустая,

Спасибо за ценный совет по нажатию на ф8.
Изменено: Домкрат - 6 ноя 2020 13:40:52
Передача данных переменной из одной процедуры в другую, В первом макросе переменная myTMes нормально возвращает значение. А дальше ничего..
 
Код
Вот, сам код как выглядит, подчеркнуты места, где находится переменная.




Option Compare Text
 Dim myTMes    ---ВОТ ЗДЕСЬ, ВНАЧАЛЕ Я ОБЪЯВИЛ ТЕМУ, КАК ОСИЛИЛ В ИНЕТЕ ,
=========================================================================

'В этом модуле происходит определение первой ячейки(вид инвойса) с кодом тнвед(макрос);
' все виды товаров здесь есть.Отсюда начинаем искать уже определенный вид товара и объяединять инвойсы по етоим признакам
'на каждый вид будет свой модуль, чтоби не путаться.

Sub ВидИнвойса(control As Office.IRibbonControl)
 Dim spec As Variant
'  ' проверяем на наличие тестеров:
' Set spec = ActiveSheet.Cells.Find(what:="Тестеры", LookAt:=xlPart, MatchCase:=False)
'    If Not spec Is Nothing Then
'    Application.ScreenUpdating = False
'    AA_Nad_ModuleSformi_A_Testera.LoopFilesTestera
'    End If
    Call ВидИнвойс
End Sub
  Sub ВидИнвойс()
    Dim KodVd As Variant
    
    Dim sh_res As Worksheet
    Dim Nachalo As Integer, lngKonec As Integer
    Dim myF As Range
    Dim myF2 As Range ' это для игрушек, у них нет столбца с ящиками
    Dim spec As Variant
    Set sh_res = ActiveSheet
    
      ' Откл. монитора.
   Application.ScreenUpdating = False
    ' отслеживаем столбец с названием, если не в столбце D, то добовляем-скрываем один столбец:
    Set myF = sh_res.Columns("D").Find("Код ТН ВЭД", , , xlPart)
    If myF Is Nothing Then
       sh_res.Columns("C").Insert
       sh_res.Columns("C").Hidden = True
    End If
    

    
'Cells(Columns(4).Find("Код ТН ВЭД").row + 2, Columns(4).Find("Код ТН ВЭД").Column).Select
'определяем первую ячейку с кодом тнвед:
' если на листе встречается слово тетсрры, то ето тестеры))):
           Set spec = ActiveSheet.Cells.Find(what:="Тестеры", LookAt:=xlPart, MatchCase:=False)
           If Not spec Is Nothing Then
           AA_Nad_ModuleSformi_A_Testera.LoopFilesTestera
           End If

KodVd = Cells(Columns(4).Find("Код ТН ВЭД*").row + 2, Columns(4).Find("Код ТН ВЭД*").Column).Value
Select Case KodVd
 ' 1)Алкоголь(вообще с воды начанием):
 Case 2202100000# To 2208909900#
 'MsgBox "это пойло!"
 ' ищем алкогольные инвойсы:
 Call AA_Nad_ModuleSformi_A_Alko.LoopFilesAlko
' 2)Сигареты:+ Стики:
Case 2402209000#
'MsgBox "это сигареты!"
AA_Nad_ModuleSformi_A_Sigi.LoopFilesSigi
' 2а)+ Стики:
Case 2403999009#
'MsgBox "это стики!"

AA_Nad_ModuleSformi_A_Stiki.LoopFilesStiki

' 3)Шоколадки (под шоколадками подразумеваются разные товары, а не только шоколад):
Case "0701100000" To "2106108000", 9500000000# To 9503999999#

' для игрушек смотрим столбци, если не хватает, то добовляем:
Set myF2 = sh_res.Columns("H").Find("кол-во", , , xlPart)
    If myF2 Is Nothing Then
       sh_res.Columns("F").Insert
       sh_res.Columns("F").ColumnWidth = 9.29
      ' sh_res.Columns("F").Hidden = True
       sh_res.Columns("F").Insert
       sh_res.Columns("F").ColumnWidth = 9.29
     '  sh_res.Columns("F").Hidden = True
   
     'заполняем названия столбцов:
    Nachalo = НачалоДанных
    lngKonec = КонецДанных

    With Range(Cells(Nachalo - 2, "F"), Cells(Nachalo - 2, "F"))
       .Borders.LineStyle = xlContinuous
       .Borders.Weight = xlMedium
       '.Interior.Color = 14994616
       .Value = "кол-во" & Chr(10) & "в коробке"
    End With
    With Range(Cells(Nachalo - 2, "G"), Cells(Nachalo - 2, "G"))
       .Borders.LineStyle = xlContinuous
       .Borders.Weight = xlMedium
       '.Interior.Color = 14994616
       .Value = "кол-во коробок"
    End With
    mesta
     End If
'MsgBox "это шоколадки!"
AA_Nad_ModuleSformi_A_Shok.LoopFilesShok
' 4)Парфюм(вполть до мыла):
Case 3302909000# To 3408900000#
'MsgBox "это порфюм!"
AA_Nad_ModuleSformi_A_Parff.LoopFilesParff
'5) Бижутерия:(от сумочек до прочих, маникюрный комлект=8214200000; зонт=6601910000; очки = 90 04 101000 to 90 04 909000
' зеркала=7009920000# ; кольца-кулоны=7117900000+ часи двух видов!
Case 4202210000# To 4205009000#, 8214200000#, 6601910000#, 9004101000# To 9004909000#, 7009920000#, 7117900000#
AA_Nad_ModuleSformi_A_Bijj.LoopFilesBijj
'6)ЧАСЫ(ОНИ КАК БИЖУТЕРИЯ ТОКЛЬКО ОТДЕЛЬНО ДЯДЯ НАДОБЛЯ):
Case 9102110000#, 9102120000#
AA_Nad_ModuleSformi_A_Watches.LoopFilesWatches
' 7)СИГАРЫ(ОНИ КАК БИЖУТЕРИЯ ТОКЛЬКО ОТДЕЛЬНО ДЯДЯ НАДОБЛЯ):
 Case 2402100000#
 AA_Nad_ModuleSformi_A_Sigari.LoopFilesSigari
Case Else
 MsgBox "я не знаю, чё ет за код такой(!"
End Select
End Sub
'запоминаем количество мест в переменную myTMest :
Sub mesta()
Dim myFMest As Range
Dim myTMest As Range
Dim shFrom As Worksheet, thisB As Workbook
Set shFrom = ActiveSheet
Set thisB = ActiveWorkbook
Dim shTo As Worksheet
Dim wbTo As Workbook
Dim Wb As Workbook
Dim myF As Range
Dim stype As String

Set myTMest = Cells.Find("Кол-во мест", , , xlPart)
  myTMes = myTMest.Offset(0, 3).Value    ================== ВОТ ЭТА ПЕРЕМЕННАЯ, В ЭТОМ МОДУЛЕ ВСЁ НОРМАЛЬНО
============================================================================================================

 ' End If
  End Sub
ВОТ СЛЕДУЮЩАЯ ПРОЦЕДУРА, КУДА НУЖНЫ ДАННЫЕ ИЗ ПЕРЕМЕННОЙ ЭТОЙ:


Option Explicit
Dim myTMes - Я ЗДЕСЬ ТОЖЕ В НАЧАЛЕ ОБЪЯВИЛ, НО НИФИГА ЧЁТА((
==================================================================

' Вкладка "Шоколадки" - группа "Шоколадки" - "Сумма".
' Макрос работает с активным листом.
' Макрос обрабатывает лист после макроса "Сортировка".

' Вставка формул под каждым товаром.

'Sub Main(myControl As Office.IRibbonControl)- откзаываемся от кнопки
    Sub ChockSumm()
    Dim shAct As Excel.Worksheet, tbl As Excel.Range
    Dim arrB() As Variant, cn As New Collection
    Dim lngHRow As Long, lngLRow As Long
    Dim i As Long, r As Long
    Dim k As Long
    Dim Nachalo As Integer, lngKonec As Integer
    Dim rCell As Range, spec As Variant, specF As Variant
     ' Поиск первой и последней строки.
    Nachalo = НачалоДанных
    lngKonec = КонецДанных
    
    '1. VBA-наименование активного листаи присвоение имени
    Set shAct = ActiveSheet
    If shAct Is Nothing Then
        Exit Sub
    End If
    
    '2. Отключение монитора.
   ' Application.ScreenUpdating = False
    
    '3. Поиск шапки и низа таблицы.
    Call S_Hr.Function2(shAct, lngHRow, lngLRow)
    
    '4. Vba-именование таблицы.
        ' В таблицу включается строка, которая находится под таблицей.
    Set tbl = shAct.Rows(lngHRow & ":" & lngLRow + 1)
    
    '5.
    ' Копирование столбца B в массив "arrB".
    ' Подготовка данных к сравнению.
    arrB() = tbl.Columns("B").Value
    For i = 2 To UBound(arrB, 1) Step 1
        arrB(i, 1) = CStr(arrB(i, 1))
    Next i
    
    '6. Запись номеров пустых строк в коллекцию.
        ' Во вторую строку формула не вставляется, но эта строка нужна
        ' для составления формулы под первым товаром.
    For i = 2 To UBound(arrB, 1) Step 1
        If arrB(i, 1) = "" Then
            cn.Add Item:=i
        End If
    Next i
    
    '7. Вставка формул.
    
    ' В коллекции находятся два вида пустых строк:
        '1) строки-заголовки групп;
        '2) строки, которые находятся под товарами.
    ' В коллекции первая пустая строка - это строка-заголовок. В неё не надо вставлять формулы.
    For i = 2 To cn.count Step 1
    
        ' Запись порядкового номера эксель-строки в переменную для удобства.
        r = cn(i)
        
        ' Пустые строки-заголовки пропускаем.
            ' Они определяются по двум подрядстоящим пустым строкам.
        If arrB(r - 1, 1) <> "" Then
      Stop
            ' Вставка формул.
            tbl.Range("J" & r).Resize(1, 2).FormulaR1C1 = "=SUM(R[-" & r - cn(i - 1) - 1 & "]C:R[-1]C)"
            If tbl.Range("J" & r) = 0 Then
            tbl.Range("J" & r) = myTMes - ПУСТО, ВООБЩЕ НИЧЕГО НЕ ПЕРЕДАЁТ СЮДА
            ============================ =========================================
            End If
поиск в видимых ячейках\строках, сейчас макрос возвращает данные в скрытых строках, - они не нужны.
 
zav, спасибо, большое!
Цитата
zav написал:
Непонятно, для чего Вам Select
тестировал, что выделяет, больше нигде не используется)
поиск в видимых ячейках\строках, сейчас макрос возвращает данные в скрытых строках, - они не нужны.
 
Ищется часть слова от "контракта":
Код
contract = Cells.Find("*контра*").Offset(0, 1).Select
как сделать поиск только по видимому диапазону листа? спасибо.
Активировать лист рабочей книги из списка, из трёх вариантов
 
DANIKOLA, спасибо!
Активировать лист рабочей книги из списка, из трёх вариантов
 
А можно сделать сразу список, типо: spisok = Array("Апсны", "Флагман", "разбивки")... и если из списка найден лист- активировать его: .spisok.Select, сейчас использую вот такую конструкцию:
Код
Sub Tеек()
Dim sh As Worksheet

  For Each sh In ThisWorkbook.Worksheets      
        If LCase(sh.Name) Like "апсны" Then
        sh.Select
        End If
        If LCase(sh.Name) Like "флагман" Then
        sh.Select
        End If
        If LCase(sh.Name) Like "разбивки" Then
        sh.Select
        End If 
Next
End Sub
хотелось бы укоротить как-то код... есть мысли какие-то? спасибо. Названия листов будут только в одном экземпляре из списка.
Почему переменные с одинаковыми значениями не видят друг друга?, и выполнение кода пропускает их одинаковые значения, может из-за кавычек, возвращаемых одной из переменных?
 
Цитата
vikttur написал:
Val("1") = 1 (для целых чисел)
всё, конечная версия выглядит так:
Код
a = Val(CStr(tbl.Cells(lngRowIndex - 1, "D").Value))
теперь красиво прям! vikttur - респект!
Почему переменные с одинаковыми значениями не видят друг друга?, и выполнение кода пропускает их одинаковые значения, может из-за кавычек, возвращаемых одной из переменных?
 
Цитата
sokol92 написал:
Решаем без доски Excel
не..для меня слишком много букв! вот, что ексель животворящий делает!
Код
Debug.Print s = d, s = v2, v1 = d, v1 = v2
            True    True    True    False
   
Почему переменные с одинаковыми значениями не видят друг друга?, и выполнение кода пропускает их одинаковые значения, может из-за кавычек, возвращаемых одной из переменных?
 
Hugo, Я читал про переменные, как Вы писали,- ничего в голову не пришло... цитата: "а т.к. это судя по всему коды, то логично сразу делать их строковыми",- насчёт логики тут дело спорное, всех не упомнишь)):
Изменено: Домкрат - 29 май 2020 06:34:17
Почему переменные с одинаковыми значениями не видят друг друга?, и выполнение кода пропускает их одинаковые значения, может из-за кавычек, возвращаемых одной из переменных?
 
Цитата
Hugo написал:
Зачем там Variant? Собираетесь эти коды перемножать?
код не ругается. А какой нужно?
Цитата
Hugo написал:
Может будем проще?
спасибо, в архив поставлю пока, может пригодится.  
Почему переменные с одинаковыми значениями не видят друг друга?, и выполнение кода пропускает их одинаковые значения, может из-за кавычек, возвращаемых одной из переменных?
 
Хотелось бы отметить, уважаемые программисты, что не у всех получается сидеть днями над кодом, например у меня через час, если начинаются заморочки, примерно, просто-напросто мозг тупеет напрочь. И уже ничего бесполезно пытаться соображать. Хоть заизучайся там доуsepy.  Результат будет нулевой.  Поэтому фразы типа: "Помощь "на тарелочке" - это зачастую мкдвкежья услуга!",- а до "тарелочки" я уже > месяца эту тему двигаю.. я просто к тому, что всё в мире относительно, и написать ИЗНАЧАЛЬНО ПРАВИЛЬНО: "a = Val(a)" , а не  "Val(a)= а" , как было предложено изначально, я  считаю  было бы большой помощью , чем тратить непонятно на что время.
Изменено: Домкрат - 28 май 2020 20:37:47
Почему переменные с одинаковыми значениями не видят друг друга?, и выполнение кода пропускает их одинаковые значения, может из-за кавычек, возвращаемых одной из переменных?
 
Юрий М, эти не равны: a = b . вроде уже всё выяснили, в этой теме. теперь код слишком велИк получается...
Код
Sub qqq()
    a = 123
    b = "123"
     Debug.Print a = b 'False
     Debug.Print a = Val(b) 'True
End Sub
Изменено: Домкрат - 28 май 2020 20:11:09
Почему переменные с одинаковыми значениями не видят друг друга?, и выполнение кода пропускает их одинаковые значения, может из-за кавычек, возвращаемых одной из переменных?
 
Цитата
Юрий М написал:
Извиниться не хотите?
хочу, -ИЗВИНИТЕ;
-
Цитата
Юрий М написал:
И привёл вариант ВАШЕГО кода из #5
так там не работало, потому-что стояло изначально наоборот, как привел уважаемый викктур. Я после изучения темы поменял местами переменные и все заработало.
Цитата
Юрий М написал:
вместо того, чтоб показывать именно код.
вот он код, ещё не совсем почти готов, а так все рабочее.
Код
Sub Bijsumm()

    Main "Начало бижутерии", "Конец бижутерии"
End Sub

Private Sub Main(strStartPhrase As String, strEndPhrase As String)

    Dim sh_act As Worksheet, tbl As Range
    Dim dicDopi As Object
    Dim arrB()
    Dim arrBlankRows() As Long
    Dim lngRowIndex As Long
    Dim hr As Long, lr As Long, i As Long
    Dim KodVd As Variant, a As Variant
    Dim k As Integer
    Dim Nachalo As Integer, lngKonec As Integer
    

    Nachalo = НачалоДанных
    lngKonec = КонецДанных
    
    '1. Создание ссылки на активный лист.
    Set sh_act = ActiveSheet
    If sh_act Is Nothing Then
        Exit Sub
    End If
    ActiveSheet.name = "Апсны"
    With ActiveWorkbook.Sheets("Апсны").Tab
        .Color = 10092390
        .TintAndShade = 0
    End With
    '2. Поиск шапки и последней строки таблицы.
    S_Hr.Function2 sh_act, hr, lr
    
    '3. Копирование данных по допам из листа-надстройки в словарь "dicDopi".
    If BIJ_BIJ_SUM_2_GetAddin.Function1(dicDopi) = False Then
        Exit Sub
    End If
            
    '4. Создание ссылки на таблицу.
        ' Включение в таблицу строки после таблицы.
    Set tbl = sh_act.Rows(hr & ":" & lr + 1)
    
    '5.
    ' Копирование столбца B в массив "arrB".
    ' Подготовка данных к сравнению.
    arrB() = tbl.Columns("B").Value
    For i = 1 To UBound(arrB, 1) Step 1
        arrB(i, 1) = CStr(arrB(i, 1))
    Next i
    
    
    '6. Получение информации о пустых строках в массив "arrBlankRows".
    
    ReDim arrBlankRows(1 To 1)
    
    ' Первая строка - шапка.
    ' Во вторую строку не вставляется формула, но первая строка нужна
        ' для расчёта формулы в нижерасположенной пустой строке.
    For i = 2 To UBound(arrB, 1) Step 1
        ' Учитываются все пустые строки, т.к. надо будет потом вставлять формулы
            ' с учётом вышестоящих пустых строк.
        If arrB(i, 1) = "" Then
            arrBlankRows(UBound(arrBlankRows)) = i
            ReDim Preserve arrBlankRows(1 To UBound(arrBlankRows) + 1)
        End If
    Next i
    ' Если не было пустых ячеек в столбце B или была пустая ячейка только во второй строке,
        ' то дальше нет смысла что-то делать.
    If UBound(arrBlankRows) < 3 Then
        MsgBox "В таблице, в столбце ""B"" нет пустых ячеек. " & _
            "Макрос вставляет суммы в пустые ячейки.", vbExclamation
        Exit Sub
    End If
    ' Удаление последнего элемента из массива "arrBlankRows", который создавался заранее.
    ReDim Preserve arrBlankRows(1 To UBound(arrBlankRows) - 1)
    
    
    '7. Откл. монитора.
   ' Application.ScreenUpdating = False
    
    
    '8. Вставка формул.
    
    ' В массиве "arrBlankRows" могут находиться три вида пустых строк:
        '1) пустые строки с заголовками групп;
        '2) пустые строки, в которые не надо вставлять формулы;
        '3) пустые строки, в которые надо вставлять формулы.
    ' Первая пустая строка - это сразу после шапки таблицы. В неё не надо вставлять формулы.
    For i = 2 To UBound(arrBlankRows) Step 1
    
        ' Помещение порядкового номера Excel-строки в переменную для удобства.
        lngRowIndex = arrBlankRows(i)
        
        ' Пустые строки с заголовками групп пропускаем.
        ' Они определяются по двум подряд стоящим пустым строкам.
        If arrB(lngRowIndex - 1, 1) = "" Then
            ' Переход к следующей пустой строке.
            GoTo metka
        End If
        
        ' Если над пустой строкой через одну строку пусто, значит
            ' блок состоит из одной строки и формулы не надо вставлять.
        ' Сверху пустая строка может быть двух видов:
            ' 1) пустая строка с заголовком группы;
            ' 2) пустая строка между блоками.
            ' В любом случае действие будет одинаковое.
      

        If arrB(lngRowIndex - 2, 1) = "" Then
     
            ' В столбец "S" нужно вставлять данные на основе словаря "dicDopi".
            If dicDopi.Exists(key:=CStr(tbl.Cells(lngRowIndex - 1, "D"))) = True Then
                If dicDopi.Item(key:=CStr(tbl.Cells(lngRowIndex - 1, "D"))) = "ДОП НУЖЕН" Then
                
'                    With tbl.Cells(lngRowIndex - 1, "S")
'                        .Value = tbl.Cells(lngRowIndex - 1, "K").Value
'                        ' Форматирование.
'                        .Interior.Color = 65535
'                        '.BorderAround xlContinuous!!!нахуй нужны бордюры!!!
'
'                    End With
                End If
            End If
           
        ' Если сверху над пустой строкой несколько непустых строк, то
            ' вставка формул (формулы проще вставить, чем рассчитывать с помощью макроса).
        Else
       
            tbl.Cells(lngRowIndex, "K").FormulaR1C1 = _
                "=ROUND(SUM(R[-" & lngRowIndex - arrBlankRows(i - 1) - 1 & "]C:R[-1]C),2)"
            tbl.Cells(lngRowIndex, "N").Resize(1, 2).FormulaR1C1 = _
                "=ROUND(SUM(R[-" & lngRowIndex - arrBlankRows(i - 1) - 1 & "]C:R[-1]C),2)"
            tbl.Cells(lngRowIndex, "R").FormulaR1C1 = _
                "=ROUND(SUM(R[-" & lngRowIndex - arrBlankRows(i - 1) - 1 & "]C:R[-1]C),2)"
            ' Выделение цветом.
            tbl.Cells(lngRowIndex, "K").Resize(1, 8).Interior.Color = 65535
        
            
'            ' В столбец "S" нужно вставлять данные на основе словаря "dicDopi".
           If dicDopi.Exists(key:=CStr(tbl.Cells(lngRowIndex - 1, "D"))) = True Then
           If dicDopi.Item(key:=CStr(tbl.Cells(lngRowIndex - 1, "D"))) = "ДОП НУЖЕН" Then
           a = CStr(tbl.Cells(lngRowIndex - 1, "D").Value) '
           'переводим текстовый в числовой:
           ' это числовой в текстовый:
           'KodVd = "" & KodVd
           a = Val(a)
           
          
            ' допы простовляем напротив каждой. ибо нех.
            For k = Nachalo To lngKonec Step 1
            KodVd = Val(ActiveSheet.Cells(k, 4).Value)
        
            If KodVd = a Then
            Cells(k, 19) = Cells(k, 11)
            With Cells(k, "S")
                       .HorizontalAlignment = xlCenter
                       .BorderAround xlContinuous '!!!нахуй нужны бордюры!!!
                    End With
            End If
            Next
            
              ' вот здесь в столбце S будет суммировать промежуточные итоги:
               tbl.Cells(lngRowIndex, "S").FormulaR1C1 = _
                "=ROUND(SUM(R[-" & lngRowIndex - arrBlankRows(i - 1) - 1 & "]C:R[-1]C),2)"
                With tbl.Cells(lngRowIndex, "S")
'                        .Value = tbl.Cells(lngRowIndex, "K").Value  ' это значение из столбца K одставляеться, а мне нужно , чтоли суммироувало
                       .Interior.Color = 65535
                       .HorizontalAlignment = xlCenter
                       .Font.Bold = True
                       .BorderAround xlContinuous '!!!нахуй нужны бордюры!!!
                    End With
'
           ' это значение из столбца K подставляться:
           
'
            ' это ориганальный код:
'            ' В столбец "S" нужно вставлять данные на основе словаря "dicDopi".
'            If dicDopi.Exists(key:=CStr(tbl.Cells(lngRowIndex - 1, "D"))) = True Then
'               If dicDopi.Item(key:=CStr(tbl.Cells(lngRowIndex - 1, "D"))) = "ДОП НУЖЕН" Then
'                         With tbl.Cells(lngRowIndex, "S")
'                        .Value = tbl.Cells(lngRowIndex, "K").Value ' это значение из столбца K одставляеться, а мне нужно , чтоли суммироувало
'                        .Interior.Color = 65535
'                        .BorderAround xlContinuous '!!!нахуй нужны бордюры!!!
'                    End With
                End If
          End If
          End If
      
    
metka:
    Next i
  
    '9. Создание справа таблицы с кол-вом мест.
    'S_KOLMEST_1_CreateTbl.Main sh_act
    
    '10. Включение обновления монитора.
    'Application.ScreenUpdating = True
    
End Sub



Изменено: Домкрат - 28 май 2020 19:58:18
Почему переменные с одинаковыми значениями не видят друг друга?, и выполнение кода пропускает их одинаковые значения, может из-за кавычек, возвращаемых одной из переменных?
 
Цитата
Юрий М написал:
Домкрат , Вы утверждаете, что запись Val("a") = a корректная?
я для кого фотки выкладываю с рабочим кодом? Там ясно видно что переменная возвращает ЧИСЛО а не текст, как было изначально. Вы код умеете читать, или только по губам?
Почему переменные с одинаковыми значениями не видят друг друга?, и выполнение кода пропускает их одинаковые значения, может из-за кавычек, возвращаемых одной из переменных?
 
Цитата
vikttur написал:
Это была демонстрация,
я догадался, но местами пришлось менять переменные, тогда и заработало.
Изменено: Домкрат - 28 май 2020 19:36:26
Почему переменные с одинаковыми значениями не видят друг друга?, и выполнение кода пропускает их одинаковые значения, может из-за кавычек, возвращаемых одной из переменных?
 
Цитата
vikttur написал:
Ваш реактор такое пропустит?
нет.
А вот это пропустит:
a = Val(a) с еденицей я  указал для наглядности, что Вы наоборот написали. вот так: " Val("1") = 1" (для целых чисел), а надо было "1=Val("1")"
Вы же сами говорили, чтобы я изучал тему, вот я и изучил,- что вы с ошибкой дали код))
Изменено: Домкрат - 28 май 2020 19:34:22
Почему переменные с одинаковыми значениями не видят друг друга?, и выполнение кода пропускает их одинаковые значения, может из-за кавычек, возвращаемых одной из переменных?
 
Ігор Гончаренко, на таболе #18 показан конечный результат работы макросов, в #16 посте на фотке число без кавычек,- ко мне какие притензии?
Изменено: Домкрат - 28 май 2020 18:31:32
Почему переменные с одинаковыми значениями не видят друг друга?, и выполнение кода пропускает их одинаковые значения, может из-за кавычек, возвращаемых одной из переменных?
 
Цитата
vikttur написал:
редактор попросит Вас исправить
чёт не просит:
Почему переменные с одинаковыми значениями не видят друг друга?, и выполнение кода пропускает их одинаковые значения, может из-за кавычек, возвращаемых одной из переменных?
 
Цитата
vikttur написал:
Val("1") = 1 (для целых чисел)
Вы наоборот всё написали.
вот рабочий вариант: 1 = Val(1)
не видать Вам червонца золотого.....Извините, но ничего личного. ТОЛЬКО ЧЕЛОВЕЧЕСКОЕ СПАСИБО.
Изменено: Домкрат - 28 май 2020 17:31:01
Почему переменные с одинаковыми значениями не видят друг друга?, и выполнение кода пропускает их одинаковые значения, может из-за кавычек, возвращаемых одной из переменных?
 
Цитата
vikttur напесал:
Помощь "на тарелочке" - это зачастую мкдвкежья услуга!
хорошо, я пока поизучаю про строковые переменные, а вы пока вот ето за 10р. добъете?) там 10% осталось.
Почему переменные с одинаковыми значениями не видят друг друга?, и выполнение кода пропускает их одинаковые значения, может из-за кавычек, возвращаемых одной из переменных?
 
Цитата
vikttur написал:
Вам основы изучать надо.
Я сюда обращаюсь с конкртным примером, в конкретной строке кода, вместо помощи я получаю советы типа: "Вам основы изучать надо." и "Изучайте операторы"
-я вам по колхозному отвечу:

KodVd = "" & KodVd
это вам ниже собственного достоинства? гордость не позволяет помочь людям?
Страницы: 1 2 3 4 5 6 След.
Наверх