1

仕事で実行されたいくつかのテストからの一連のデータをコンパイルしています。マクロを使用して、シートの最初の列から最後の列までデータを選択したいと考えています。問題は、入力されるファイルごとに列の数が異なる可能性があるため、グラフ化中に最後の列を探す必要があることです。

これは私がこれまで使用しているものです。

Columns("A:A").Select
Range(Selection, Selection.End(xlToRight)).Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlXYScatterSmoothNoMarkers
ActiveChart.SetSourceData Source:=Range( _
            "'" & fileType & "'!$A$1:$H$" & CStr(LastRowColH))

fileType はファイルの名前であり、それを見つけることは正常に機能しますが、問題は、Excel が $A$1:$H$ の範囲に自動的に配置される場合に発生します。列 A から、データが含まれる最後の列に移動したいと思います。その行の最後の部分である CStr(LastRowColH)) は、何かの最後の部分を見つけるコードに最も近いものです。最後の行ではなく最後の列を取得する CStr(LastColRow1)) コードがあった場合のみ。

それ以外の場合、 $A$1:$H$ 部分をアクティブな選択と同じに設定する方法はありますか?

どんな助けでも大歓迎です!

ありがとう

4

2 に答える 2

1

ソース データとグラフは別のシートまたは別のブックにありますか? 投稿したコードからは明確ではありません。

Dim c As Range, sht As Worksheet, cht As Chart

Set sht = ActiveSheet
'assuming a regular block of data starting in A1
Set c = sht.Cells(1, Columns.Count).End(xlToLeft)
Set c = sht.Cells(Rows.Count, c.Column).End(xlUp)

Set cht = sht.Shapes.AddChart().Chart
cht.ChartType = xlXYScatterSmoothNoMarkers
cht.SetSourceData Source:=sht.Range(sht.Range("A1"), c) 

EDIT:またはもっと単純に:

Set cht = sht.Shapes.AddChart().Chart
cht.ChartType = xlXYScatterSmoothNoMarkers
cht.SetSourceData Source:=sht.Range("A1").CurrentRegion
于 2013-11-08T23:03:30.400 に答える
0

これを行う簡単な方法をいくつか紹介します。どちらも通常のデータ配置を前提としています。

選択範囲

Sub PlotUsingSelectedRange()
    Dim rng As Range
    If TypeName(Selection) = "Range" Then
        Set rng = Selection
        With ActiveSheet.Shapes.AddChart.Chart
            .ChartType = xlXYScatter
            .SetSourceData rng
        End With
    End If
End Sub

アクティブ セルを含むデータ領域

Sub PlotUsingActiveCellCurrentRegion()
    Dim rng As Range
    If TypeName(Selection) = "Range" Then
        Set rng = ActiveCell.CurrentRegion
        With ActiveSheet.Shapes.AddChart.Chart
            .ChartType = xlXYScatter
            .SetSourceData rng
        End With
    End If
End Sub

ActiveSheet の使用範囲

Sub PlotUsingActiveSheetUsedRange()
    Dim rng As Range
    If ActiveSheet.UsedRange.Cells.Count > 0 Then
        Set rng = ActiveSheet.UsedRange
        With ActiveSheet.Shapes.AddChart.Chart
            .ChartType = xlXYScatter
            .SetSourceData rng
        End With
    End If
End Sub
于 2015-07-10T17:04:25.180 に答える