复制范围会搜索一行中的下一个空单元格,但会跳过合并的单元格

时间:2012-10-24 12:38:02

标签: vba excel-vba merge excel-2007 range

我看到很多人都在谈论这个问题,但从将复合细胞复制到单个细胞的角度来看更多。我有一个从工作簿获取范围的过程,打开第二个工作簿并尝试将其粘贴到指定行中的下一个空白单元格中;

Public Sub BankBalances()
Dim fname As String
Dim fname2 As String
Dim mt As String, yr As String
'get the selected month
mt = MonthBox.Value
'get the selected year
yr = YearBox.Value
'set the file path to the selected year, month and the saving format
fname = yr & mt & "DB" & ".xlsx"
'set the file path to the selected year, month to open the trial balance sheet
fname2 = yr & mt & "TB" & ".xlsx"
'get the ranges
Dim rng1 As Range
Dim rng2 As Range
Set rng1 = Workbooks(fname2).Worksheets("excel").Range("I100")
'check for the next empty cell in row 55
Set rng2 = Workbooks(fname).Worksheets("UK monthly dashboard").Cells(55, Columns.Count).End(xlToLeft).Offset(0, 1)
'set the new range to hold the data from the original range
rng2.Value = rng1.Value
'set the result to format according to the other information in the workbook
rng2.Value = Round(rng1.Value / 1000, 0)

End Sub

上面的代码会将数据粘贴到未合并的行中的下一个空白单元格中。我需要它才能粘贴到合并的单元格中。

我想知道的是,是否有办法使用VBA将数据放入合并的单元格中,或者如果我需要执行单独的过程来检查合并的单元格,取消合并它们,然后在数据具有合并后将它们合并复制过。

如果是这样,我是否能够以类似的方式检查下一个空单元格,然后检查它是否合并,然后执行取消合并再次合并。

1 个答案:

答案 0 :(得分:1)

  

如果我明白你在说什么,那么是的,但是如果我可以改变你的例子,我想把A1的内容放入D1:D2合并。所以它的一个单元格合并为两个合并在一起 - JamesDev 4小时前

这是你在尝试的吗?

Sub Sample()
    Dim Rng1 As Range
    Dim Rng2 As Range
    Dim ws As Worksheet

    Set ws = ThisWorkbook.Sheets("Sheet1")

    With ws
        Set Rng1 = .Range("A1")
        Set Rng2 = .Range("D1:D2")

        '~~> Check if cells are merged
        If Rng2.MergeCells Then
            '~~> If merged then write to first cell
            Rng2.Cells(1, 1).Value = Rng1.Value
        Else
            Rng2.Value = Rng1.Value
        End If
    End With
End Sub