macros在单元格中插入单词TRUE

如果单元格区域中的值为X或空白,我有一个macros将工作表移动到工作簿的末尾,并带有多个工作表。 当这个macros运行时,我从一个input的表单开始。 它还检查input表单的名称是否有效。 如果是,则检查X或空单元格。 macros的工作原理除了在没有X或空单元格的每个工作表中放置单词“TRUE”。 在代码中看到'INSERTS THE WORD'TRUE'在这里

“真”这个词来自哪里? 我该如何阻止它进入?

Sub Move_X_CodeSheets_to_end() 'This macro will take any X type sheets and put them at the end of the 'sheets 'so they are not printed when the file in turned into a pdf and submitted. Dim i As Integer Dim sp As Integer Dim SheetPick As String Dim s As Integer, SheetFound As Boolean Do SheetPick = InputBox("Enter the case sensitive sheet name to start sorting with") If SheetPick = vbNullString Then Exit Sub SheetFound = False 'SheetFound must be set to False initially With ThisWorkbook For s = 1 To Sheets.Count If Sheets(s).Name = SheetPick Then SheetFound = True Exit For End If Next s End With If SheetFound = False Then MsgBox(SheetPick & " Doesn't exist!", vbExclamation) Else End If Loop Until SheetFound = True Sheets(SheetPick).Select() sp = Sheets(SheetPick).Index For i = sp To Sheets.Count Cells(i, 1) = Sheets(i).Select 'INSERTS THE WORD "TRUE" HERE Range("D7").Select() 'if X type code, then move sheet to end If ActiveCell.Value = "X" Then ActiveSheet.Move After:=Sheets(Sheets.Count) End If 'if cell is empty, then move sheet to end If ActiveCell.Value = Empty Then ActiveSheet.Move After:=Sheets(Sheets.Count) End If Next i Done: MsgBox "Done" End Sub 

您的代码将“表格(i).Select”的结果分配给“单元格(i,1)”。

如果你改变

 Cells(i, 1) = Sheets(i).Select 

只是

 Sheets(i).Select 

它应该工作。

但是,出于性能和清晰的原因,您应该努力避免.select。 例如,而不是

 Sheets(i).Select Range("D7").Select If ActiveCell.Value = "X" Then ActiveSheet.Move After:=Sheets(Sheets.Count) End If 

你可以写

 If Sheets(i).Range("D7").Value = "X" Then Sheets(i).Move After:=Sheets(Sheets.Count) End If 

这是更快,更容易理解。