0
以下代碼將打開一個.csv文件,在col B中查找「Trimmed Mean」,使用「Trimmed Mean」行作爲起點查找下一個「NC」值,並將「NC」右側的一個單元格複製到執行代碼的Workbook(Sheet 1 col A)中。如果找到匹配文本,則將值應用於其他工作簿
問題是代碼運行但該值未複製到工作表1。這可能只是一件小事,但我無法弄清楚那是什麼。謝謝你的幫助。
Const delim = vbTab 'for TAB delimited text files
Sub ImportMultipleTextFiles()
Dim wb As Workbook
Dim sFile As Variant
Dim LastRow As Long
Dim rngCell As Range
Dim varMyItem As String
varMyItem = "NC"
sFile = Application.GetOpenFilename("Text Files (*.csv),*.csv", , "Please select text file...")
Set wb = Workbooks.Open(Filename:=sFile)
Application.ScreenUpdating = False
wb.Sheets(1).Select
LastRow = ActiveSheet.Range("B" & Rows.Count).End(xlUp).Row
Debug.Print "LastRow = " & LastRow
Set aCell = ActiveSheet.Range("B1:B" & LastRow).Find(What:="Trimmed Mean", LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
Debug.Print "Trimmed Mean can be found in Row # " & aCell.Row
'wb.Sheets(1).Select
For Each rngCell In ActiveSheet.Range("B" & aCell.Row & ":B" & LastRow)
' Debug.Print ActiveSheet.Range("B" & aCell.Row & ":B" & LastRow)
If InStr(rngCell, "NC") > 0 Then
Debug.Print rngCell.Row
'
rngCell.Offset(0, 1).Copy Destination:=ThisWorkbook.ActiveSheet.Range("A" & ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row + 1)
Exit For
End If
Next rngCell
wb.Close SaveChanges:=False
Set wb = Nothing
Application.ScreenUpdating = True
End Sub
住宿** **遠從'Select'和'ActiveSheet'在代碼中儘可能多地(見[這裏](http://stackoverflow.com/questions/10714251/how-to-avoid - 使用選功能於Excel的VBA的宏))。限定所有'Workbooks/Sheets/Ranges',你的代碼很可能會像你期望的那樣流暢運行。這行特別是一個真正的問題:'ThisWorkbook.ActiveSheet.Range(「A」&ActiveSheet.Range(「A」&Rows.Count).End(xlUp).Row + 1)' –