Сценарий 1: если Combobox 2 отображает тот же текст / значение, что и в настоящее время в рабочем листе Диапазон MRFL (A1: A250), а комбинированный список 1 отображает тот же текст / значение, что и в рабочем листе MFRL Range (B1: B250), тогда изменяйте только значениестолбца AE в той же строке, что и значение поля со списком 2 в рабочей таблице MFGLR.
Сценарий 2: Если Combobox 2 отображает тот же текст / значение, что и в настоящее время в рабочем диапазоне MRFL (A1: A250), а комбинированный список 1 отображает другой текст, чем в рабочем диапазоне MFRL (B1: B250), затем добавьте значенияcombobox1 и combobox2 в следующей доступной строке в листе MFRL, Combobox1 в столбце B и Combobox2 в столбце A. И затем изменяйте только значение столбца AE в той же строке, что и значение combobox 2 в рабочем листе MFGLR.
Сценарий 3: если Combobox 2 отображает другой текст / значение, находящееся в настоящий момент в рабочем диапазоне MRFL (A1: A250), а комбинированный список 1 отображает другой текст, чем в рабочем листе MFRL Range (B1: B250), тогда добавьте значения combobox1 и combobox2 вв следующую доступную строку в листе MFRL добавьте значение combobox2 в следующую доступную строку в столбце A на рабочем листе CT и добавьте значение combobox 2 в следующую доступную строку в столбце A рабочего листа MFGLR Combobox1 в столбце B и Combobox2 в столбце A.И тогда только изменить значение столбца AE в той же строкекак значение поля со списком 2 в Worksheet MFGLR.
Для сценариев 1 и 2 у меня возникли проблемы с тем, чтобы код нашел ту же строку, что и значение combobox2, а затем вставил значение textbox1 на 31 столбец справа.Это то, что я имею до сих пор.
With Worksheets("MFGLR").Range("a1:a500")
Set C = .Find(ComboBox2.Value, LookIn:=xlValues)
If Not C Is Nothing Then
firstAddress = C.Address
Do
C.Value = TextBox1.Value
Set C = .FindNext(C)
Loop While Not C Is Nothing
End If
End With
- Сценарии, похоже, не выполняются для всех случаев
- Я бы хотел, чтобы граница КТ проходила отпоследний столбец от A до столбца V
- Я бы хотел, чтобы граница MFRL перешла от последней строки столбца A к столбцу E
- Я бы хотел, чтобы граница MFRL перешла от последней строки столбца A к столбцуAM
- Заполнить от последней строки в столбце AF MFGLR до столбца AH
Это мой WIP для всех сценариев с границами и заполнением.
Option Explicit
Private Sub CommandButton1_Click()
Dim ColA As New Scripting.Dictionary 'Need Microsoft Scripting Runtime Reference
Dim ColB As New Scripting.Dictionary
Dim LastRow As Long
Dim Criteria1 As Boolean
Dim Criteria2 As Boolean
Dim C As Range
With ThisWorkbook.Sheets("MFRL")
LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row 'This gets the last row on column A
For Each C In .Range("A1:A" & LastRow) 'loop through the whole column
On Error Resume Next
'If you have duplicated entries this will throw an error
ColA.Add C.Value, C.Row 'add the values from column A to DictA, also store it's row for later purposes
ColB.Add C.Offset(0, 1).Value, C.Row 'add the values from column B to DictB, also store it's row for later purposes
Next C
'Criterias will give value of True if matched or False if not
Criteria1 = ColA.Exists(ComboBox2.Value) 'this is getting matched with ColA Dictionary
Criteria2 = ColB.Exists(ComboBox1.Value) 'this is getting matched with ColB Dictionary
If Criteria1 And Criteria2 Then 'SCENARIO 1
.Cells(ColA(ComboBox2.Value), "AE:100") = TextBox1.Value
ElseIf Criteria1 And Not Criteria2 Then 'SCENARIO 2
.Cells(LastRow + 1, 1) = ComboBox2.Value
.Cells(LastRow + 1, 2) = ComboBox1.Value
.Cells(ColA(ComboBox2.Value), "AE") = TextBox1.Value
With Worksheets("MFRL")
.Cells(Rows.Count, "B").End(xlUp).Offset(-1, 1).Resize(, 3).AutoFill .Cells(Rows.Count, "B").End(xlUp).Offset(-1, 1).Resize(, 3).Resize(2)
.Cells(Rows.Count, "B").End(xlUp).Offset(-1, 1).Resize(, 3).Resize(2).Borders.LineStyle = xlContinuous
End With
ElseIf Not Criteria1 And Not Criteria2 Then 'SCENARIO 3
.Cells(LastRow + 1, 1) = ComboBox2.Value
.Cells(LastRow + 1, 2) = ComboBox1.Value
'Add data to the column A next blank row in sheet CT
LastRow = ThisWorkbook.Sheets("CT").Cells(ThisWorkbook.Sheets("CT").Rows.Count, 1).End(xlUp).Row + 1
ThisWorkbook.Sheets("CT").Cells(LastRow, 1) = ComboBox2.Value
ThisWorkbook.Sheets("CT").Cells(Rows.Count, "A").End(xlUp).Offset(-1, 1).Resize(, 21).AutoFill .Cells(Rows.Count, "A").End(xlUp).Offset(-1, 1).Resize(, 21).Resize(2)
ThisWorkbook.Sheets("CT").Cells(Rows.Count, "A").End(xlUp).Offset(-1, 1).Resize(, 21).Resize(2).Borders.LineStyle = xlContinuous
'Add data to the column A next blank row in sheet MFGLR
LastRow = ThisWorkbook.Sheets("MFGL R").Cells(ThisWorkbook.Sheets("MFGLR").Rows.Count, 1).End(xlUp).Row + 1
ThisWorkbook.Sheets("MFGLR").Cells(LastRow, 1) = ComboBox2.Value
ThisWorkbook.Sheets("MFGLR").Cells(LastRow, "AE") = TextBox1.Value
ThisWorkbook.Sheets("MFGLR").Cells(Rows.Count, "AE").End(xlUp).Offset(-1, 1).Resize(, 3).AutoFill .Cells(Rows.Count, "AE").End(xlUp).Offset(-1, 1).Resize(, 3).Resize(2)
ThisWorkbook.Sheets("MFGLR").Cells(Rows.Count, "A").End(xlUp).Offset(-1, 1).Resize(, 38).Resize(2).Borders.LineStyle = xlContinuous
ThisWorkbook.Sheets("MFRL").Cells(LastRow, 1) = ComboBox2.Value
ThisWorkbook.Sheets("MFRL").Cells(LastRow, 2) = ComboBox1.Value
ThisWorkbook.Sheets("MFRL").Cells(Rows.Count, "B").End(xlUp).Offset(-1, 1).Resize(, 3).AutoFill .Cells(Rows.Count, "B").End(xlUp).Offset(-1, 1).Resize(, 3).Resize(2)
ThisWorkbook.Sheets("MFRL").Cells(Rows.Count, "B").End(xlUp).Offset(-1, 1).Resize(, 3).Resize(2).Borders.LineStyle = xlContinuous
End If
End With
ActiveWorkbook.RefreshAll
Unload Me
End Sub