2

開いているワークブックのすべてのワークシートを反復処理する VB Excel マクロを作成しています。各ワークシートでは、列 K に格納されている「Y」はほとんどありません。K 列の値を「Y」と比較したいのですが、等しい場合は、同じ行の列 A、B、D、H を取得する必要があります。タブ区切り形式のテキストファイルに挿入します。

これは私が試したコードです。このコードでは、列 K のみをテキスト ファイルに挿入しています。しかし、A、B、D、H、および K 列の値の値を、タブで区切られたテキスト ファイルに挿入したいと考えています。

私を助けてください。

私が試したコードは

  Sub Button3_Click()
  Dim fso, myfile, I As Integer, mycount As String, x As String
  Dim curCell As Range
  Dim sh As Worksheet 
  x = "Y"
  Set fso = CreateObject("Scripting.FileSystemObject")
  Set myfile = fso.CreateTextFile("d:\RECP_IMP_COLUMNS.txt", True)
  myfile.WriteLine ("Work Sheet Names are as follows")


    For Each sh In ActiveWorkbook.Worksheets

      For Each curCell In Sheet4.Range("K1:K300").Cells
       If (curCell.Value = x) Then
        myfile.WriteLine (curCell)
       End If
      Next curCell

    Next

    myfile.Close
  End Sub
4

1 に答える 1

1

.Offset()Range オブジェクトと定数のメソッドを使用して、vbTabタブ区切りのスペースを作成できます

.Offset(rows, columns)2 つのパラメータを取ります。現在のセルの上または下の行数。上に移動するには、負の値を指定して下に移動し、正の値を指定します。負を使用して左に移動し、正を使用して右に移動することを除いて、列にも同じことが当てはまります。

vbTabのコンテキストで 2 つのオブジェクト間にタブを作成します

"this is " & vbtab & " tab delimited"

比較方法を少し変更し、StrComp() 関数を追加しました。信頼性が高く、比較パラメーターを指定できます。

文字列比較の演算子の詳細については、VBA で文字列を比較する方法を参照してください。=

Sheet4.Range("K1:K300")これは少し誤解を招き、間違っているため、変更しました。すべてのシートをループで繰り返しますが、各ループでのみ使用さSheet4れます。したがって、テキスト ファイルに出力されるすべての結果は、Sheet4列 Kの複製になります。

行末の_アンダースコアはコードをより多くの行に分割するので、より多くの行を詰め込み、コードをより読みやすく明確にすることができます。

Sub Button3_Click()
    Dim fso, myfile, I As Integer, mycount As String, x As String
    Dim curCell As Range
    Dim sh As Worksheet
    x = "Y"
    Set fso = CreateObject("Scripting.FileSystemObject")

    Set myfile = fso.CreateTextFile("d:\RECP_IMP_COLUMNS.txt", True)
    myfile.WriteLine ("Work Sheet Names are as follows")

    For Each sh In ActiveWorkbook.Worksheets
        For Each curCell In sh.Range("K1:K300").Cells
            If StrComp(curCell, x, vbTextCompare) = 0 Then
            myfile.WriteLine curCell.Offset(0, -10) & vbTab & _
                           curCell.Offset(0, -9) & vbTab & _
                           curCell.Offset(0, -7) & vbTab & _
                           curCell.Offset(0, -3) & vbTab & _
                           curCell
            End If
        Next curCell
    Next

    myfile.Close
End Sub

お役に立てれば :)

于 2013-09-13T08:54:58.633 に答える