Excel 将sheet2第一行的最后一列与sheet1的F2单元格进行比较(如果匹配),然后显示msgbox或将F2范围粘贴复制到sheet2

Excel 将sheet2第一行的最后一列与sheet1的F2单元格进行比较(如果匹配),然后显示msgbox或将F2范围粘贴复制到sheet2,excel,vba,xlsx,Excel,Vba,Xlsx,我已经写了一个代码,但它不起作用 我想从sheet1复制一个范围F2:F24,并以增量列方式(列计数+1)将其粘贴到Sheet2,前提是sheet1中的单元格F2值不应等于Sheet2中第一行的最后一列 如果匹配,则弹出msgbox作为“检查单元格” 这是我的密码 Sub copycolumns() Dim TargetSheet As Object Set TargetSheet = Sheets("sheet2") Dim TargetColumn As Intege

我已经写了一个代码,但它不起作用 我想从sheet1复制一个范围F2:F24,并以增量列方式(列计数+1)将其粘贴到Sheet2,前提是sheet1中的单元格F2值不应等于Sheet2中第一行的最后一列 如果匹配,则弹出msgbox作为“检查单元格” 这是我的密码

Sub copycolumns()

Dim TargetSheet As Object
Set TargetSheet = Sheets("sheet2")

Dim TargetColumn As Integer
Dim LastC As Long
TargetColumn = TargetSheet.Range("F1").CurrentRegion.Columns.Count + 1
LastC = TargetSheet.Cells(1, TargetSheet.Columns.Count).End(xlToLeft).Column

If LastC = Sheets("sheet1").Cells(2, 6).Value Then


MsgBox "check the cell"


ElseIf TargetSheet.Range("F1") = "" Then

    TargetColumn = 6
End If

Sheets("sheet1").Range("F2:F24").Copy

TargetSheet.Activate
TargetSheet.Cells(1, TargetColumn).Select

Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
        , SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
       
        
Application.CutCopyMode = False


End Sub


更新_1:在从Sheet1复制和粘贴范围F2:F24之前,它应该比较Sheet1的F2(参考图像1)值和sheet2第一个单元格的最后一列(参考图像2,它是J1)。如果其值相同,则msgpop as错误。如果其值不同,则复制F2:F24并粘贴到sheet2第一行的最后一列中。如果LastC=Sheets(“sheet1”)。单元格(2,6)。然后的值将列号与日期进行比较。试一试

选项显式
子复制列()
Const COPY_RANGE=“F2:F24”
常数起始值=6'目标表F
将wb作为工作簿、ws作为工作表、wsTarget作为工作表
Dim TargetColumn为整数,LastColumn为整数
Dim dtNew As Date,dtLast As Date
变暗rng作为范围,rng目标作为范围
资料来源第1页
设置wb=ThisWorkbook
设置ws=wb.Sheets(“Sheet1”)
设置rng=ws.Range(复制范围)
dtNew=rng.单元格(1,1).值'F2
'目标工作表2第1行
Set wsTarget=wb.Sheets(“Sheet2”)
LastColumn=wsTarget.Cells(1,Columns.Count).End(xlToLeft).Column
'检查是否存在
如果LastColumn>=开始列,则
dtLast=wsTarget.Cells(1,LastColumn)
如果dtNew=dtLast,则
MsgBox格式(dtNew,“dd-mmm-yyyy”)&“存在于列中”和“最后一列中”,vbCritical
出口接头
如果结束
其他的
LastColumn=START\u COL-1
如果结束
TargetColumn=LastColumn+1
'复制到目标
收到
设置rngTarget=wsTarget.Cells(1,TargetColumn)
rngTarget.PasteSpecial Paste:=xlPasteAllUsingSourceTheme_
操作:=xlNone,skipblank:=False,转置:=False
'rngTarget.NumberFormat=“dd mmm yyyy”
Application.CutCopyMode=False
MsgBox格式(dtNew,“dd-mmm-yyyy”)、“复制到列”和TargetColumn
端接头

表格(“sheet1”).单元格(2,6).值是否应为动态行?否则你总是检查同一个手机。嗨,金先生,谢谢你的评论。它不是动态的,在复制粘贴范围F2:F24之前,它应该始终检查同一单元格。(第(2,6)单元(它的日期每天都在变化)谢谢,先生,谢谢你的支持