6

概要:あるシートからデータの行を取得して別のシートに貼り付けていますが、このシートは、古いデータの下に新しいデータを入力するだけの日常的な使用方法です。

問題:新しい実行ごとに、7が一貫してに追加されUsedRange.Countます。例:1回の実行UsedRange.Countで7になります。次に関数を実行すると、カウントは14になります。

私が探しているもの:なぜこれが当てはまるのか、そしてUsedRangeより正確にするのを助ける方法があります

-参照用に関数全体を含めました。

Function eftGrabber()

        Dim usedRows As Integer
        Dim i As Integer

        ChDir "\\..."       

        Workbooks.Open Filename:= _
        "\\...\eftGrabber.xlsm"

        usedRows = Sheets("EFT").UsedRange.Count

        Windows("Data").Activate

        Sheets("DataSheet").Range("A11").EntireRow.Copy

        Windows("eftGrabber").Activate

        Sheets("EFT").Range("A" & usedRows + 1).Select

        ActiveSheet.Paste

        i = usedRows

        Do                            'THIS LOOP DELETES BLANKS AFTER POSTING NEW LINES

            Range("A" & i).Select

            If Range("A" & i) = "" Then

                ActiveCell.EntireRow.Delete

            End If

              i = i - 1

        Loop Until i = 1

        Windows("eftGrabber").Activate

        ActiveWorkbook.Save

  Windows("eftGrabber").Close

End Function

重要な詳細を省略した場合はお知らせください。前もって感謝します!

4

4 に答える 4

12

変化する:usedRows = Sheets("EFT").UsedRange.Count

に:usedRows = Sheets("EFT").Range("A" & Sheets("EFT").Rows.Count).End(xlUp).Row

ここで、「A」は、列の総数をカウントする行に変更できます。

UsedRangeデータがRange( "A1")で始まることを期待している場合のように、データのないフォーマットされたセルや予期しない結果をもたらす可能性のあるものを考慮に入れるため、使用するのは危険ですが、実際には別の範囲!

ただし、本当に使用したい場合は、UsedRange上記のコードで行を取得するのはまだ間違っています。代わりにこれを使用するUsedRange.Rows.Countか、UsedRangeの最後の絶対セルを取得するには、UsedRange.SpecialCells(xlCellTypeLastCell).Row

于 2012-08-09T15:08:48.497 に答える
5

この2行は魔法をします

  usedCol = ThisWorkbook.ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
  usedRow = ThisWorkbook.ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row

詳細については、Microsoftのサイトをご覧ください。

http://msdn.microsoft.com/en-us/library/office/ff196157.aspx

于 2013-12-29T08:28:10.100 に答える
2

議論してくれてありがとう...

.UsedRange.Rows.Count.UsedRange.Columns.CountセルA1に何かがあれば、問題なく動作します。それ以外の場合は、SpecialCellsソリューションを使用する必要があります。

これがお役に立てば幸いです。

于 2015-08-25T20:21:31.987 に答える
0

「UsedRange」は、このように使用すると機能します>>

x := Sheet.UsedRange.Row + Sheet.UsedRange.Rows.Count - 1;
y := Sheet.UsedRange.Column + Sheet.UsedRange.Columns.Count - 1;

SpecialCellsの問題は、保護されたシートでは使用できないことです。

于 2021-05-04T00:21:46.967 に答える