Excel 不等于返回false,即使变量相等

Excel 不等于返回false,即使变量相等,excel,vba,Excel,Vba,我想将范围(A6:E40)中“a”中的第一个单元格与“I”中的单元格相匹配。它插入一个a:E的单元格行(在MyX变量所在的任何行上) 有时我需要把“A”加上“I”。这把我搞砸了,因为我需要B6:E40中的范围数据保持不变 我的Not equal to返回false,即使该行中的数据相同,并且正在执行我的then语句 以下是一个例子: Sub-TBmatch() 变暗rng As范围 暗行作为范围 暗淡单元格作为范围 作为整数的Dim x 将TF设置为字符串 像线一样变暗 我像绳子一样暗 x=6

我想将范围(A6:E40)中“a”中的第一个单元格与“I”中的单元格相匹配。它插入一个a:E的单元格行(在MyX变量所在的任何行上)

有时我需要把“A”加上“I”。这把我搞砸了,因为我需要B6:E40中的范围数据保持不变

我的Not equal to返回false,即使该行中的数据相同,并且正在执行我的then语句

以下是一个例子:

Sub-TBmatch()
变暗rng As范围
暗行作为范围
暗淡单元格作为范围
作为整数的Dim x
将TF设置为字符串
像线一样变暗
我像绳子一样暗
x=6
设置rng=范围(“A6:E40”)
当x>5和x<40时,执行此操作
对于rng.行中的每一行
TF=范围(“H”和x)
A=(“A”和x)
I=(“I”和x)
如果我是一个范围(“I”&x)。插入CopyOrigin:=xlFormatFromRightOrBelow
如果是I,则为单元格(x,9)。值=单元格(x,1)
如果范围(“A”&x)=”,则单元格(x,1)。值=单元格(x,9)
范围(“H5”)。选择
Selection.AutoFill目的地:=范围(“H5:H88”)
TF=范围(“H”和x)
如果TF=“False”,则选择范围(“A”&x&“:E”&x)。插入CopyOrigin:=xlFormatFromRightorLow
如果范围(“A”&x)=”,则单元格(x,1)。值=单元格(x,9)
范围(“H5”)。选择
Selection.AutoFill目的地:=范围(“H5:H88”)
x=x+1
下一排
环
"选择(一)
'范围(“I6”)。复制目标:=范围(“A6”)
'范围(“A6:E6”)。插入CopyOrigin:=XLFormatFromRight或Low
端接头
即使I等于A,{If I A}也返回True


此代码将同一选项卡上的两个列表对齐,将一侧或另一侧向下移动,以便A列和I列中的值匹配:

Sub Aligner()

    Dim wst As Worksheet
    Set wst = ActiveSheet
    
    Dim curRow As Long
    curRow = 4
    
    Dim lastRow As Long
    lastRow = wst.UsedRange.Rows.Count * 2
    
    Dim AcctA As String
    Dim AcctI As String
    AcctA = CStr(wst.Cells(curRow, 1))
    AcctI = CStr(wst.Cells(curRow, 9))
    
    Do
        With wst
        
            If AcctA <> AcctI Then
            
                Dim spA As Integer
                Dim spI As Integer
                spA = InStr(AcctA, " ")
                spI = InStr(AcctI, " ")
                
                If spA > 1 Then
                    AcctA = Left$(AcctA, spA - 1)
                End If
                If spI > 1 Then
                    AcctI = Left$(AcctI, spI - 1)
                End If
                
                If AcctA > AcctI Then
                    .Range(.Cells(curRow, 1), .Cells(curRow, 5)).Insert Shift:=xlDown
                    .Cells(curRow, 1) = .Cells(curRow, 9)
                Else
                    .Cells(curRow, 9).Insert Shift:=xlDown
                    .Cells(curRow, 1) = .Cells(curRow, 1)
                End If
                
            End If
            
            curRow = curRow + 1
            
            AcctA = CStr(wst.Cells(curRow, 1))
            AcctI = CStr(wst.Cells(curRow, 9))
            
        End With
    Loop Until curRow >= lastRow

End Sub
Sub-Aligner()
将wst设置为工作表
Set wst=ActiveSheet
暗咖喱一样长
电流=4
最后一排一样长
lastRow=wst.UsedRange.Rows.Count*2
作为字符串的Dim AcctA
作为字符串的Dim AcctI
AcctA=CStr(wst.单元(当前,1))
AcctI=CStr(wst.单元(当前,9))
做
与wst
如果AcctA AcctI那么
作为整数的Dim spA
将spI设置为整数
spA=仪表(会计科目“”)
spI=仪表(AcctI,“”)
如果spA>1,则
账户=左$(账户,spA-1)
如果结束
如果spI>1,则
AcctI=左$(AcctI,spI-1)
如果结束
如果AcctA>AcctI,则
.Range(.Cells(curRow,1),.Cells(curRow,5))。插入移位:=xlDown
.Cells(curRow,1)=.Cells(curRow,9)
其他的
.Cells(curRow,9)。插入移位:=xlDown
.Cells(curRow,1)=.Cells(curRow,1)
如果结束
如果结束
电流=电流+1
AcctA=CStr(wst.单元(当前,1))
AcctI=CStr(wst.单元(当前,9))
以
循环直到当前>=最后一行
端接头
A=(“A”和x)
I=(“I”和x)
如果我是一个范围(“I”&x)。插入CopyOrigin:=xlFormatFromRightOrBelow

正如您的代码所示,我永远不会等于A,因为您将“Ax”分配给A,“Ix”分配给I,所以我不等于A将始终为真

你说“{If I A}即使当我等于A时也返回false”,我对此感到困惑。如果
I
等于
A
,则
IA
为false。为什么它应该是真的?我道歉,我的意思是它返回真的,它应该返回假的,而不是触发当时的声明@只是因为事物看起来是平等的,并不意味着它们是平等的。也许它们在空白处有所不同,或者在格式不允许显示的其他方面有所不同<代码>
告诉您,您认为相等的值实际上并不相等。@JohnColeman您知道一种具体的方法来说明它们在VBA中不相等的原因吗?我检查了所有内容,甚至工作表中的excel函数本身{=}也将它们标记为true(意思是相等),但在VBA中没有。
(“A”&x)
永远不等于
(“I”&x)
这回答了我的问题,谢谢!CMART14,如果它回答了你的问题,请考虑通过点击答案旁边的复选标记来标记这个答案。
        A = ("A" & x)
        I = ("I" & x)

            If I <> A Then Range("I" & x).Insert CopyOrigin:=xlFormatFromRightOrBelow