名前 題名 ▼ Mr.XRAYさん > ▼ TSさん、こんちには。どうもです。 > > >Selection.CurrentRegion.Select > > こんなのがあったのですね。知りませんでした。 > > yumapaさん、エクセル操作フォームの上でということで、いろいろコード > を書いてみましたので参考にして下さい。 > > //============================================================================= > // 選択範囲の範囲を取得 その1 個別に列番号と行番号を求める > //============================================================================= > procedure TplExcelForm2.Button2Click(Sender: TObject); > var > ARange : OleVariant; > Col1 : Integer; > Col2 : Integer; > Row1 : Integer; > Row2 : Integer; > i1 : Integer; > i2 : Integer; > AreaStr : String; > begin > //表示中のシートの選択範囲 > ARange :=ExcelApp.Selection[0]; > //左上と右下のセルの列と行を取得 > Col1 := ARange.Column; > Col2 := ARange.Columns.Count-1+Col1; > Row1 := ARange.Row; > Row2 := ARange.Rows.Count-1+Row1; > //セル番地 > i1 := Ord('A')+Col1-1; > i2 := Ord('A')+Col2-1; > AreaStr := Chr(i1)+IntToStr(Row1)+':'+Chr(i2)+IntToStr(Row2); > //確認表示 > ShowMessage(AreaStr); > end; > //============================================================================= > // 選択範囲の範囲を取得 その2 Addressプロパティ使用 > //============================================================================= > procedure TplExcelForm2.Button3Click(Sender: TObject); > var > ARange : OleVariant; > AreaStr : String; > begin > //表示中のシートの選択範囲 > ARange:=ExcelApp.Selection[0]; > //確認表示 > AreaStr:=ARange.Address; > AreaStr:=StringReplace(AreaStr,'$','',[rfReplaceAll]); > ShowMessage(AreaStr); > end; > //============================================================================= > // データのある範囲を取得 その1 個別に列番号と行番号を求める > // データがあるどれかのセルがアクティブであれば、その範囲全体を知ることが可能 > //============================================================================= > procedure TplExcelForm2.Button4Click(Sender: TObject); > var > ARange : OleVariant; > Col1 : Integer; > Col2 : Integer; > Row1 : Integer; > Row2 : Integer; > i1 : Integer; > i2 : Integer; > AreaStr : String; > begin > //選択中の範囲 > ARange:=ExcelApp.Selection[0]; > //データのある領域全体を選択状態にする > ARange.CurrentRegion.Select; > //左上と右下のセルの列と行を取得 > Col1 := ARange.CurrentRegion.Column; > Col2 := ARange.CurrentRegion.Columns.Count-1+Col1; > Row1 := ARange.CurrentRegion.Row; > Row2 := ARange.CurrentRegion.Rows.Count-1+Row1; > //セル番地 > i1 := Ord('A')+Col1-1; > i2 := Ord('A')+Col2-1; > AreaStr := Chr(i1)+IntToStr(Row1)+':'+Chr(i2)+IntToStr(Row2); > //確認表示 > ShowMessage(AreaStr); > end; > //============================================================================= > // データのある範囲を取得 その2 Addressプロパティ使用 > // データがあるどれかのセルがアクティブであれば、その範囲全体を知ることが可能 > //============================================================================= > procedure TplExcelForm2.Button5Click(Sender: TObject); > var > ARange : OleVariant; > AreaStr : String; > begin > //選択中の範囲 > ARange:=ExcelApp.Selection[0]; > //データのある領域全体を選択状態にする > ARange.CurrentRegion.Select; > //確認表示 > AreaStr:=ARange.CurrentRegion.Address; > AreaStr:=StringReplace(AreaStr,'$','',[rfReplaceAll]); > ShowMessage(AreaStr); > end; > //============================================================================= > // 選択範囲を印刷範囲として設定 > // セル番地を個別に求める方法とCurrentRegionプロパティを使用する方法は省略 > //============================================================================= > procedure TplExcelForm2.Button6Click(Sender: TObject); > var > ARange : OleVariant; > AreaStr : String; > begin > //表示中のシートの選択範囲 > ARange :=ExcelApp.Selection[0]; > AreaStr:=ARange.Address; > if Pos(':',AreaStr)<>0 then begin > //その範囲を印刷範囲とする > ExcelSheet.PageSetup.PrintArea:=AreaStr; > end; > end; > > また、ブックに以下のマクロを登録しておけば、このブックを開いた時に > 設定されている印刷範囲を選択状態にします。 > > Sub Auto_Open() > Dim AArea As String > AArea = "" > AArea = ActiveSheet.PageSetup.PrintArea > If AArea <> "" Then > Range(AArea).Select > Else > MsgBox "印刷範囲は設定されていません。" > End If > End Sub > GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link