VBAmacros问题

嘿伙计们,我有下面的VBA代码。

它从Excel工作表中获取值并将其保存在Tab-delimeted文本文件中。 但是,它添加了列标题。 我怎样才能得到行的值说,从行2,单元格A1,如果列在行1,单元格A1? 谢谢。

Sub DoTheExport() Dim FileName As Variant Dim Sep As String FileName = Application.GetSaveAsFilename( _ InitialFileName:=vbNullString, _ FileFilter:="Text Files (*.txt),*.txt" _ ) If FileName = False Then ''# user cancelled, get out Exit Sub End If Sep = vbTab Debug.Print "FileName: " & FileName, "Separator: " & Sep ExportToTextFile FName:=CStr(FileName), Sep:=CStr(Sep), _ SelectionOnly:=False, AppendData:=False End Sub Public Sub ExportToTextFile(FName As String, _ Sep As String, SelectionOnly As Boolean, _ AppendData As Boolean) Dim WholeLine As String Dim FNum As Integer Dim RowNdx As Long Dim ColNdx As Integer Dim StartRow As Long Dim EndRow As Long Dim StartCol As Integer Dim EndCol As Integer Dim CellValue As String Application.ScreenUpdating = False On Error GoTo EndMacro: FNum = FreeFile If SelectionOnly = True Then With Selection StartRow = ActiveSheet.Range("A3").Select StartCol = .Cells(1).Column EndRow = .Cells(.Cells.Count).Row EndCol = .Cells(.Cells.Count).Column End With Else With ActiveSheet.UsedRange StartRow = .Cells(3).Row StartCol = .Cells(1).Column EndRow = .Cells(.Cells.Count).Row EndCol = .Cells(.Cells.Count).Column End With End If If AppendData = True Then Open FName For Append Access Write As #FNum Else Open FName For Output Access Write As #FNum End If For RowNdx = StartRow To EndRow WholeLine = "" For ColNdx = StartCol To EndCol If Cells(RowNdx, ColNdx).Value = "" Then CellValue = Chr(34) & Chr(34) Else CellValue = Cells(RowNdx, ColNdx).Value End If WholeLine = WholeLine & CellValue & Sep Next ColNdx WholeLine = Left(WholeLine, Len(WholeLine) - Len(Sep)) Print #FNum, WholeLine Next RowNdx EndMacro: On Error GoTo 0 Application.ScreenUpdating = True Close #FNum End Sub 

为什么这不仅仅是一个变化的问题:

 For RowNdx = StartRow To EndRow 

至:

 For RowNdx = StartRow+1 To EndRow 

这将开始写入范围内的第二个开始行。 如果要自动检测起始行是否有列标题,则需要检查范围中的第一个单元(可能使用.Value ),并弄清楚如何区分列标题和值。

代码开始行和开始列可能会被新用户误解。

 StartRow = .Cells(3).Row StartCol = .Cells(1).Column 

Cell的语法是Cells(索引)或Cells(行,列)

例如,如果范围是表单,则单元(1,2)指的是B1。 但是,Cell(3)是指使用范围内的第三个小区。 如果数据在范围之内
4乘4,如A1到D4,Cell(5)将参考A2。

如果你想从第二排开始,为什么不使用

 startrow = .Cells(2, 1) 

清楚地指出要输出的起始数据在第2行第1列。