Я действительно новичок в макросах. Я сделал один с помощью автоматической записи, но я не могу использовать его только для выбранной строки, он продолжает делать это в той же строке, что и запись. Мне очень нужна ваша помощь, чтобы решить эту проблему, и помогите мне лучше понять, как на самом деле работают макросы.
Мой макрос выглядит следующим образом:
Sub COPIERVALEURS()
'
' COPIERVALEURS Macro
'
' Touche de raccourci du clavier: Ctrl+Shift+V
'
Range("A34:H34").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("M34:N34").Select
Application.CutCopyMode = False
Selection.Copy
Range("K34").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("S34:T34").Select
Application.CutCopyMode = False
Selection.Copy
Range("Q34").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("Y34:Z34").Select
Application.CutCopyMode = False
Selection.Copy
Range("W34").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("AE34:AF34").Select
Application.CutCopyMode = False
Selection.Copy
Range("AC34").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveWindow.SmallScroll ToRight:=5
Range("AI34:AJ34").Select
Application.CutCopyMode = False
Selection.Copy
Range("AG34").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("AK34").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub


Я пытаюсь понять вашу логику, чтобы помочь вам, насколько я могу. Выберите строку, в которой вы хотите, чтобы этот код выполнял действие, импортируйте точку останова в строке С участием, выполните и отладьте код, чтобы увидеть, соответствует ли он вашим требованиям. Чтобы выбрать строку, нажмите на номер каждой строки слева от вас.
Код:
Option Explicit
Sub test()
Dim RowNo As Long
With ThisWorkbook.Worksheets("Sheet1")
RowNo = Selection.Row '<- Here you get the row number you have select
.Range("M" & RowNo & ":N" & RowNo).Copy '<- Copy range M:N of the RowNo you have selct
.Range("K" & RowNo).PasteSpecial Paste:=xlPasteValues '<- Paste in Column K row the one tou have select
.Range("S" & RowNo & ":T" & RowNo).Copy
.Range("Q" & RowNo).PasteSpecial Paste:=xlPasteValues
.Range("Y" & RowNo & ":Z" & RowNo).Copy
.Range("W" & RowNo).PasteSpecial Paste:=xlPasteValues
.Range("AE" & RowNo & ":AF" & RowNo).Copy
.Range("AC" & RowNo).PasteSpecial Paste:=xlPasteValues
.Range("AI" & RowNo & ":AJ" & RowNo).Copy
.Range("AG" & RowNo).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End With
End Sub
@nicmdm рад слышать, что помогаю. я отредактировал ваш ответ (добавьте «.» перед диапазоном). если ответ поможет вам, пожалуйста, проголосуйте, чтобы помочь другим.
Что это "." для? Я только что еще раз проверил код, есть только «Диапазон», а не «.Range», но он все еще работает. Я ищу голосование, но не могу найти, где проголосовать, есть ли здесь помощь? :)
Как вы можете видеть из моего кода, я создал "With Statement" в начале кода. «.Range» указывает, что часть диапазона принадлежит листу, используемому в операторе with.
Хорошо, я понимаю, что вы имеете в виду. Однако то, что я все еще смущен, так это то, почему он работает правильно без "." Надо будет попробовать с "." чтобы понять разницу
Я также разместил еще один вопрос, на этот раз более сложный, может быть, вы тоже сможете мне помочь :)
Спасибо. Ошибка 1004. Это мне очень помогло, окончательный код теперь такой, как показано ниже, и работает отлично, благодаря вам:
Option Explicit
Sub COPIERVALEURS()
' COPIERVALEURS Macro
' Touche de raccourci du clavier: Ctrl+Shift+V
Dim RowNo As Long
With ThisWorkbook.Worksheets("PAQ")
RowNo = Selection.Row '<- Here you get the row number you have select
.Range("A" & RowNo & ":H" & RowNo).Copy
.Range("A" & RowNo & ":H" & RowNo).PasteSpecial Paste:=xlPasteValues
.Range("M" & RowNo & ":N" & RowNo).Copy
.Range("K" & RowNo).PasteSpecial Paste:=xlPasteValues
.Range("S" & RowNo & ":T" & RowNo).Copy
.Range("Q" & RowNo).PasteSpecial Paste:=xlPasteValues
.Range("Y" & RowNo & ":Z" & RowNo).Copy
.Range("W" & RowNo).PasteSpecial Paste:=xlPasteValues
.Range("AE" & RowNo & ":AF" & RowNo).Copy
.Range("AC" & RowNo).PasteSpecial Paste:=xlPasteValues
ActiveWindow.SmallScroll ToRight:=5
.Range("AI" & RowNo & ":AJ" & RowNo).Copy
.Range("AG" & RowNo).PasteSpecial Paste:=xlPasteValues
.Range("AK" & RowNo).Copy
.Range("AK" & RowNo).PasteSpecial Paste:=xlPasteValues
End With
End Sub
Привет, большое спасибо за вашу помощь. Я обновил свой код, используя ваш, и он отлично работает.