簡體   English   中英

復制不連續的單元格並粘貼在一行中保留數字格式 Excel VBA

[英]Copy non-contiguous cells and paste in a row retaining number format Excel VBA

我希望有人能幫我解決這個問題,因為這讓我很煩!

工作表中有 5 個不連續的單元格,我想將它們復制到另一個工作表上的下一個空行,同時保留數字格式(不同)。 到目前為止,我已經有了這個,但正在努力研究如何保留格式。 有人可以幫忙嗎? 謝謝我的期待。

`With wsCalc

For bRun = 1 To 4
    bData(bRun) = Application.Choose(bRun, .Range("g2"), .Range("b2"), .Range("R2"), .Range("Q14"))
Next bRun
End With

wSResults.Cells(Rows.Count, "a").End(xlUp).Offset(1).Resize(, 4).Value = bData

`

嘗試使用 .Text,而不是使用 .Value。 它保留格式。 見下文。

加里的學生是對的,文本是只讀的,它應該用於輸入而不是輸出。

 bData(bRun) = Application.Choose(bRun, .Range("g2").Text, .Range("b2").Text, .Range("R2").Text, .Range("Q14").Text)

我也同意其他答案,整個代碼可以設置得更直接。

這是一個可能的解決方案,使用您的硬編碼單元地址。 您必須將 wsCalc 和 wsResults 設置為它們正確的工作表。 稍微更優雅的是在 wsCalc 工作表上定義一個“非連續”范圍(選擇第一個單元格,按住 Ctrl 並選擇下一個等,然后在下拉框中鍵入一個名稱公式欄)。

Option Explicit
Sub CopyWithFormat()
    Dim wsCalc As Worksheet
    Set wsCalc = ActiveSheet 'Or whatever your calc sheet is

    Dim rngSource As Range
    Set rngSource = wsCalc.[G2,B2,R2,Q14]

    Dim wsResults As Worksheet
    Set wsResults = ActiveSheet 'Or whatever your result sheet is

    Dim clDest As Range
    Set clDest = wsResults.Cells(Rows.Count, "a").End(xlUp).Offset(1)

    Dim cl As Range
    For Each cl In rngSource.Cells
        clDest.Value = cl.Value
        clDest.NumberFormat = cl.NumberFormat
        Set clDest = clDest.Offset(1)
    Next cl
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM