Excel Если в поле есть ячейка копирования X на другой лист
У меня есть вопрос, что я знаю, что кто-то может мне помочь. Я крайне ограничен в визуальном базовом отделе.
У меня есть трекер excel, который я помещаю «X» в ячейку каждый месяц, если выполняется определенная деятельность. Этот «X» коррелирует с диапазоном ячеек на одном листе.
Я хочу иметь возможность сделать следующее. Когда я нажимаю на поле команды;
- Если ячейка на январь имеет «X» копии конкретных ячеек на текущей странице для определенных ячеек на другом рабочем листе.
-
Если ячейка для февраля имеет «X», скопируйте некоторые другие конкретные ячейки на текущей странице в некоторые другие определенные ячейки на другом листе.
Так и далее и т. Д. До декабря.
У меня есть следующий код (который не работает):
Private Sub CommandButton1_Click() Sheets("MRT").Select If InStr(1, (Range("L8").Value), "X") > 0 Then Range("E42:AA42").Select Selection.Copy Sheets("Test '12").Select Cells(3, AP).Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone End If End Sub
Попробуй это:
Private Sub CommandButton1_Click() If Sheets("MRT").Range("L8").Value like "*X*" Then Sheets("MRT").Range("E42:AA42").Copy Sheets("Test '12").Cells(3, 1).PasteSpecial Paste:=xlValues, Operation:=xlNone End If End Sub
Работала в моем тесте, однако вы можете адаптировать Cells(3,1)
и другие спецификаторы положения к вашим желаемым целям.
edit: забыли о части с месяцами … подождите минуту … здесь:
Sub FindSignificant() Dim SearchString As String Dim SearchRange As Range, cl As Range Dim FirstFound As String Dim sh As Worksheet ' Set Search value SearchString = "a" Application.FindFormat.Clear ' loop through all sheets Set sh = Sheets("MRT") ' Find first instance on sheet Set cl = sh.Cells.Find(What:=SearchString, _ After:=sh.Cells(1, 1), _ LookIn:=xlFormulas, _ LookAt:=xlPart, _ SearchOrder:=xlByRows, _ SearchDirection:=xlNext, _ MatchCase:=False, _ SearchFormat:=False) If Not cl Is Nothing Then ' if found, remember location FirstFound = cl.Address ' format found cell Do Select Case sh.Cells(cl.Row, 1).Value Case "december" sh.Range("E42:AA42").Copy Sheets("Test '12").Cells(3, 1).PasteSpecial Paste:=xlValues, Operation:=xlNone Case "february" sh.Range("E42:AA42").Copy Sheets("Test '12").Cells(3, 1).PasteSpecial Paste:=xlValues, Operation:=xlNone Case Else 'do nothing End Select ' find next instance Set cl = sh.Cells.FindNext(After:=cl) ' repeat until back where we started Loop Until FirstFound = cl.Address End If End Sub
этот код исходит отсюда
Вам пришлось бы адаптировать случай выбора, но я действительно подумал бы о решении этого без VBA, если это не обязательно;)