Доброго дня форум. Доброго дня специалисты Excel. Прошу Вашей подсказки, каким объектом, функцией, процедурой, можно поменять местами две "соседние" строчки таблицы?
Доброго дня форум. Доброго дня специалисты Excel. Прошу Вашей подсказки, каким объектом, функцией, процедурой, можно поменять местами две "соседние" строчки таблицы?Юрий_Нд
Сообщение отредактировал Юрий_Нд - Суббота, 16.09.2017, 13:50
Sub test_ПоменятьСтроки() Dim НомерВерхнейСтроки As Long НомерВерхнейСтроки = 3 'поменять третью с четвертой Call ПоменятьСтроки(НомерВерхнейСтроки) End Sub Sub ПоменятьСтроки(ByVal НомерВерхнейСтроки As Long) Dim НомерНижнейСтроки As Long НомерНижнейСтроки = НомерВерхнейСтроки + 1 Rows(НомерНижнейСтроки & ":" & НомерНижнейСтроки).Cut Rows(НомерВерхнейСтроки & ":" & НомерВерхнейСтроки).Insert Shift:=xlDown End Sub
[/vba]
Привет! [vba]
Код
Sub test_ПоменятьСтроки() Dim НомерВерхнейСтроки As Long НомерВерхнейСтроки = 3 'поменять третью с четвертой Call ПоменятьСтроки(НомерВерхнейСтроки) End Sub Sub ПоменятьСтроки(ByVal НомерВерхнейСтроки As Long) Dim НомерНижнейСтроки As Long НомерНижнейСтроки = НомерВерхнейСтроки + 1 Rows(НомерНижнейСтроки & ":" & НомерНижнейСтроки).Cut Rows(НомерВерхнейСтроки & ":" & НомерВерхнейСтроки).Insert Shift:=xlDown End Sub
Доброго вечера Уважаемый InExSu, очень извиняюсь, но не могли бы Вы скорректировать программу по изменению любых двух строк конкретной таблицы из приложенного файла. В данном случае прошу поменять местами четвёртую и пятую строки, шифр ресурса 1424-11598 и 200-0001. Сейчас в таблице 30 строк, но количество строк может быть переменным, поэтому если нужно, программа сама должна определять общее количество строк. С благодарностью ________________ Юрий.
Доброго вечера Уважаемый InExSu, очень извиняюсь, но не могли бы Вы скорректировать программу по изменению любых двух строк конкретной таблицы из приложенного файла. В данном случае прошу поменять местами четвёртую и пятую строки, шифр ресурса 1424-11598 и 200-0001. Сейчас в таблице 30 строк, но количество строк может быть переменным, поэтому если нужно, программа сама должна определять общее количество строк. С благодарностью ________________ Юрий.Юрий_Нд
По двойному щелчку поменяет щелкнутую сроку со следующей. Любую. В модуль листа: [vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim tr&, a, r As Range tr = Target.Row a = Cells(tr, 3).Resize(, 2).Value Cells(tr + 1, 3).Resize(, 2).Copy Cells(tr, 3) Cells(tr + 1, 3).Resize(, 2).Value = a Cancel = True End Sub
[/vba]
По двойному щелчку поменяет щелкнутую сроку со следующей. Любую. В модуль листа: [vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim tr&, a, r As Range tr = Target.Row a = Cells(tr, 3).Resize(, 2).Value Cells(tr + 1, 3).Resize(, 2).Copy Cells(tr, 3) Cells(tr + 1, 3).Resize(, 2).Value = a Cancel = True End Sub
Макрос, который я для Вас написал ДублиТретьяКолонкаПустая не справился? Это же его любимая таблица. Натравил этот макрос на Ваш файл, он его легко "причесал". Задача странная: если известны номера строк для обмена, зачем нам знать сколько их? 1424-11598 - у Вас в таблице их тру штуки. В общем случае, чтобы поменять местами строки 4 и 5 (соседние). можно (как один из многих способов) запустить из Вашего кода строку [vba]
Код
Call ПоменятьСтроки(4)
[/vba], неподалёку от кода самого макроса ПоменятьСтроки. В Вашем случае 4 это 9 (номер строки ячейки, содержащей 1424-11598. Так что [vba]
Код
Call ПоменятьСтроки(9)
[/vba]
Макрос, который я для Вас написал ДублиТретьяКолонкаПустая не справился? Это же его любимая таблица. Натравил этот макрос на Ваш файл, он его легко "причесал". Задача странная: если известны номера строк для обмена, зачем нам знать сколько их? 1424-11598 - у Вас в таблице их тру штуки. В общем случае, чтобы поменять местами строки 4 и 5 (соседние). можно (как один из многих способов) запустить из Вашего кода строку [vba]
Код
Call ПоменятьСтроки(4)
[/vba], неподалёку от кода самого макроса ПоменятьСтроки. В Вашем случае 4 это 9 (номер строки ячейки, содержащей 1424-11598. Так что [vba]
Спасибо что откликнулись InExSu, ваш макрос "ДублиТретьяКолонкаПустая", вот уже почти 8 часов замечательно работает, ещё раз спасибо Вам за это. Но я почти ничего не знаю о том, как же всё-таки он работает. Поэтому вот уже возникла первая проблема. Мне нужно чуть подвинуть таблицу. На 4 ячейки вправо, и на 1 ячейку вниз, то есть угловая ячейка таблицы из ячейки С4 должна переехать в ячейку G5. Пользуясь случаем хочу спросить Вас, как в этом случае скорректировать макрос? А эту тему я организовал, когда почти все дружно сказали, что решить мою задачу почти невозможно. Вот тогда я и решил сделать макрос самостоятельно, с помощью пузырькового метода сортировки и логики. Сейчас конечно, после вашего макроса всю мою затею можно назвать только бредом, но желание побольше разобраться в простейших операциях ВБА и в Вашем макросе осталось. Также, пользуясь случаем, хочу попросить Вас оставить побольше комментариев в Вашем, таком замечательном макросе. Теперь по поводу общего количества строк. Насколько понимаю, для сортировки моей таблицы нужно выделить область или объект Range в который нужно, как я понимаю, внести угловые точки моей таблицы. В противном случае первая строка моей таблицы будет не первой, а шестой, и при изменении нумерация строк будет изменяться значение строк во всех 2 в 24 степени колонок. Именно поэтому я и думал, что как-то нужно задать общее количество строк и столбцов моей таблицы. KuklP, Я Вам тоже очень благодарен. Если это возможно, сделайте побольше комментариев в Вашем макросе.
Спасибо что откликнулись InExSu, ваш макрос "ДублиТретьяКолонкаПустая", вот уже почти 8 часов замечательно работает, ещё раз спасибо Вам за это. Но я почти ничего не знаю о том, как же всё-таки он работает. Поэтому вот уже возникла первая проблема. Мне нужно чуть подвинуть таблицу. На 4 ячейки вправо, и на 1 ячейку вниз, то есть угловая ячейка таблицы из ячейки С4 должна переехать в ячейку G5. Пользуясь случаем хочу спросить Вас, как в этом случае скорректировать макрос? А эту тему я организовал, когда почти все дружно сказали, что решить мою задачу почти невозможно. Вот тогда я и решил сделать макрос самостоятельно, с помощью пузырькового метода сортировки и логики. Сейчас конечно, после вашего макроса всю мою затею можно назвать только бредом, но желание побольше разобраться в простейших операциях ВБА и в Вашем макросе осталось. Также, пользуясь случаем, хочу попросить Вас оставить побольше комментариев в Вашем, таком замечательном макросе. Теперь по поводу общего количества строк. Насколько понимаю, для сортировки моей таблицы нужно выделить область или объект Range в который нужно, как я понимаю, внести угловые точки моей таблицы. В противном случае первая строка моей таблицы будет не первой, а шестой, и при изменении нумерация строк будет изменяться значение строк во всех 2 в 24 степени колонок. Именно поэтому я и думал, что как-то нужно задать общее количество строк и столбцов моей таблицы. KuklP, Я Вам тоже очень благодарен. Если это возможно, сделайте побольше комментариев в Вашем макросе.Юрий_Нд