[英]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.