Страницы: 1
RSS
Удаление значений из массива с помощью textbox
 
Доброго времени суток!

Сразу скажу создание макросов для меня темный лес, всю ночь читал про переменные и тд. Хотел даже воспользоваться инпутом, но он не помог, Ладно к делу.

Из блокнота копирую данные и вставляю в форму в текстбокс, должно все выглядеть как на таблице 2.
Объявил переменную для значений из текстбокса, добавил Chr(13) и Chr(10), Удаляться должны значения из первой таблицы. Не могу разобраться в чем причина, знающие подскажите пожалуйста :)  
Впитываю знания, как борщ после тренировки ^^)
 
Решение.
 
еще одно, оба файла в одной папке
Код
Private Sub CommandButton2_Click()
    Dim objRS As Object
    Set objRS = CreateObject("ADODB.Recordset")
        objRS.Open "SELECT t1.[№]," & _
                "       iif(IsNull(t2.f1), t1.id, null) As id " & _
                "FROM" & _
                "  (SELECT *" & _
                "   FROM [Лист1$] IN '" & ThisWorkbook.FullName & "' 'Excel 12.0 xml;') t1 " & _
                "LEFT JOIN [Блокнот#txt] t2 ON t1.id=t2.f1 " & _
                "WHERE Not IsNull(t1.[№])", _
              "Provider=Microsoft.Ace.OLEDB.12.0;" & _
              "Data Source=" & ThisWorkbook.Path & ";" & _
              "Extended Properties=""Text;HDR=no""", 3
         With [D:E]
            Intersect(.Cells, .Parent.UsedRange).Offset(1).Clear
            .Resize(objRS.RecordCount).Offset(1).CopyFromRecordset objRS
        End With
    Set objRS = Nothing
End Sub
 
skais675, Спасибо огромное добрый человек :) ! Я это пытался делать 2 дня...

А если я перемещаю таблицу с (a2:b на ah4:ai) что мне нужно изменить?
Код
arr = .Range("a2:b"
Здесь ah4:ai - это понятно, а остальное?
Впитываю знания, как борщ после тренировки ^^)
 
Андрей Лящук, Спасибо что откликнулись, для меня сложно в этом разобраться - как я понял нужно указывать адрес блокнота.
Впитываю знания, как борщ после тренировки ^^)
 
Вот так всегда, а потом еще много вопросов.
Постарайтесь сами разобраться, не так уж много кода, google в помощь. Или в следующий раз давайте вопрос точнее.
 
skais675, хорошо спасибо!

p.s. мне нравятся головоломки  :)  
Изменено: Молодое_Поколение - 02.07.2020 22:58:14
Впитываю знания, как борщ после тренировки ^^)
 
Цитата
Молодое_Поколение написал:
А если я перемещаю таблицу с (a2:b на ah4:ai) что мне нужно изменить?
а если вы опишете задачу вообще, можно получить готовое решение и ничего изменять не нужно
даже не нужно понимать что там написано и как оно работает
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Головоломка решена!
Для всех кому интересна данная тема, если вы хотите перенести исходную таблицу то необходимо изменить:
Код
arr = .Range("a2:b" & .Cells(.Rows.Count, 2).End(xlUp).Row).Value
Здесь изменить a2:b
Код
If slov.exists(arr(i, 2)) Then .Cells(i + 1, 2) = ""
И здесь вторую двойку, на номер столбца с id, 1 - номер расположения 1 ячейки в массиве.

Допустим если вы хотите перенести (с a2:b на ah4:ai) , код будет такой:
Код
Private Sub CommandButton2_Click()
Dim red, txt As String
    txt = Replace(Me.TextBox1, Chr(13), "")
    red = Split(txt, Chr(10))
    Set slov = CreateObject("scripting.dictionary")
    For i = 0 To UBound(red)
        If IsNumeric(red(i)) And red(i) <> "" Then slov.Item(1 * red(i)) = i
    Next
    With Sheets("Лист1")
        Application.ScreenUpdating = False
        Application.Calculation = xlCalculationManual
            arr = .Range("ah4:ai" & .Cells(.Rows.Count, 2).End(xlUp).Row).Value
            For i = 1 To UBound(arr)
                If slov.exists(arr(i, 2)) Then .Cells(i + 3, 35) = ""
            Next
        Application.Calculation = xlCalculationAutomatic
        Application.ScreenUpdating = True
    End With
End Sub
Изменено: Молодое_Поколение - 02.07.2020 23:57:49
Впитываю знания, как борщ после тренировки ^^)
 
Ігор Гончаренко, так не интересно, я хочу понимать все механизмы что от чего работает, я учусь этому  8)  
Впитываю знания, как борщ после тренировки ^^)
Страницы: 1
Наверх