#excel #vba #row #apply #selected
#excel #vba #строка #применить #выбранный
Вопрос:
Я действительно новичок в maccros. Я создал его с помощью автоматической записи, но, похоже, я не могу использовать его только для выбранной строки, он продолжает делать это в той же строке, что и запись. Мне действительно нужна ваша помощь, чтобы решить эту проблему, и помогите мне лучше понять, как на самом деле работает maccros
Мой макрос выглядит следующим образом:
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
Ответ №1:
Я пытаюсь понять вашу логику, чтобы помочь вам, насколько это возможно. Выберите строку, в которой вы хотите, чтобы этот код выполнял действие, импортируйте точку останова в строку With , выполните и отладьте код, чтобы проверить, соответствует ли он вашим требованиям. Чтобы выбрать строку, нажмите на номер каждой строки слева от вас.
Код:
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" amp; RowNo amp; ":N" amp; RowNo).Copy '<- Copy range M:N of the RowNo you have selct
.Range("K" amp; RowNo).PasteSpecial Paste:=xlPasteValues '<- Paste in Column K row the one tou have select
.Range("S" amp; RowNo amp; ":T" amp; RowNo).Copy
.Range("Q" amp; RowNo).PasteSpecial Paste:=xlPasteValues
.Range("Y" amp; RowNo amp; ":Z" amp; RowNo).Copy
.Range("W" amp; RowNo).PasteSpecial Paste:=xlPasteValues
.Range("AE" amp; RowNo amp; ":AF" amp; RowNo).Copy
.Range("AC" amp; RowNo).PasteSpecial Paste:=xlPasteValues
.Range("AI" amp; RowNo amp; ":AJ" amp; RowNo).Copy
.Range("AG" amp; RowNo).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End With
End Sub
Комментарии:
1. Привет, большое спасибо за вашу помощь. Я обновил свой код, используя ваш, и он работает отлично.
2. @nicmdm рад слышать, что я помогаю. я отредактировал ваш ответ (добавьте «.» перед диапазоном). если ответ поможет вам, пожалуйста, проголосуйте, чтобы помочь другим.
3. для чего нужен «.»? Я только что проверил код еще раз, есть только «Range», а не «.Range», но он все еще работает. Я искал тему голосования, но не могу найти, где проголосовать, здесь тоже есть какая-нибудь помощь? 🙂
4. Как вы можете видеть из моего кода, я создал оператор «With» в начале кода. «.Range» указывает, что диапазон является частью листа, используемого в операторе with.
5. Хорошо, я понимаю, что вы имеете в виду. Однако я все еще в замешательстве, почему он работает правильно без «.» Мне придется попробовать с «.», чтобы понять разницу
Ответ №2:
Спасибо Ошибка 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" amp; RowNo amp; ":H" amp; RowNo).Copy
.Range("A" amp; RowNo amp; ":H" amp; RowNo).PasteSpecial Paste:=xlPasteValues
.Range("M" amp; RowNo amp; ":N" amp; RowNo).Copy
.Range("K" amp; RowNo).PasteSpecial Paste:=xlPasteValues
.Range("S" amp; RowNo amp; ":T" amp; RowNo).Copy
.Range("Q" amp; RowNo).PasteSpecial Paste:=xlPasteValues
.Range("Y" amp; RowNo amp; ":Z" amp; RowNo).Copy
.Range("W" amp; RowNo).PasteSpecial Paste:=xlPasteValues
.Range("AE" amp; RowNo amp; ":AF" amp; RowNo).Copy
.Range("AC" amp; RowNo).PasteSpecial Paste:=xlPasteValues
ActiveWindow.SmallScroll ToRight:=5
.Range("AI" amp; RowNo amp; ":AJ" amp; RowNo).Copy
.Range("AG" amp; RowNo).PasteSpecial Paste:=xlPasteValues
.Range("AK" amp; RowNo).Copy
.Range("AK" amp; RowNo).PasteSpecial Paste:=xlPasteValues
End With
End Sub