我正在嘗試撰寫 VBA 代碼,但遇到了一些問題。
這是背景關系,我有一個帶有兩張表的 Excel 電子表格,“Sheet1”和“Sheet2”
我希望我的 VBA 代碼比較兩行單元格。
這是我的 Sheet1 的樣子:
這是我的 Sheet2 的樣子:
如您所見,我有相同數量的單元格進行比較,但是其中一個不一樣。
我想要我的 VBA 代碼做的是逐個比較 Sheet1 和 Sheet2 之間的單元格。一旦代碼發現兩個不相同的單元格,就會出現一個 MsgBox,上面寫著“單元格不相同”。在這種情況下,它適用于單元格“D1”
這聽起來很基本而且做起來很簡單,但我真的很掙扎。
這是我擁有的第一行代碼,但它不起作用:
Dim RangeSheet1 As Range, RangeSheet2 As Range
Set RangeSheet1 = Worksheets("Sheet1").Range("A1")
Set RangeSheet2 = Worksheets("Sheet2").Range("A1")
Do While RangeSheet1.Value = RangeSheet2.Value
RangeSheet1.Offset(0,1)
RangeSheet2.Offset(0,1)
Loop
MsgBox "Cells are not the same"
你們知道我怎樣才能以正確的方式做到這一點嗎?
非常感謝您的幫助。
uj5u.com熱心網友回復:
我撰寫了一個解決方案,使用 for 回圈比較作業表中的所有單元格。當兩個單元格不相等時,它會退出 for 回圈,但如果您需要比較更多單元格,您可以洗掉該行。有更有效的宏,但這是我認為應該滿足您需求的解決方案。
Sub compareSheets()
Dim sht1 As Worksheet, sht2 As Worksheet, cell As Object
Set sht1 = Worksheets("Sheet1")
Set sht2 = Worksheets("Sheet2")
For Each cell In sht1.Cells
Dim currentCellAddress As String
currentCellAddress = Replace(cell.Address, "$", "")
If Not cell.Value = sht2.Range(currentCellAddress).value Then
MsgBox "The cell " & currentCellAddress & " is not the same in both sheets."
Exit For
End If
Next cell
End Sub
編輯:
我看到你在最后的一個訊息框中收集了所有不相等的單元格。然后在這種情況下,這樣的事情應該可以解決問題:
Sub compareSheets()
Dim sht1 As Worksheet, sht2 As Worksheet, cell As Object, refArray() As String, refCount As Integer
refCount = 0
Set sht1 = Worksheets("Sheet1")
Set sht2 = Worksheets("Sheet2")
For Each cell In sht1.Cells
Dim currentCellAddress As String
currentCellAddress = Replace(cell.Address, "$", "")
If Not cell.Value = sht2.Range(currentCellAddress).Value Then
ReDim Preserve refArray(0 To refCount)
refArray(refCount) = currentCellAddress
Exit For
refCount = refCount 1
End If
Next cell
Dim resultText As String, ref As Variant
For Each ref In refArray
resultText = resultText & " " & ref
Next ref
MsgBox "The following cells are not equal " & vbCrLf & resultText
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/524856.html
標籤:擅长vba