VB.netよりExcelを操作しています。
投稿者 ちゃまちゃま  (社会人)
投稿日時
2021/3/3 16:36:22
Dim Xls1 As New Excel.Application()
Dim xlSheet As Excel.Worksheet = xlSheets.Item(1)
xlSheet.Rows("10:10").select
xlSheet.Rows("10:10").copy
xlSheet.Rows("11:11").select
Xls1.Selection.Insert(Excel.XlDirection.xlDown)
このように書いたところ、行の追加はされましたが、10行以上追加されてしまいました。
何がいけないのでしょうか??
Dim xlSheet As Excel.Worksheet = xlSheets.Item(1)
xlSheet.Rows("10:10").select
xlSheet.Rows("10:10").copy
xlSheet.Rows("11:11").select
Xls1.Selection.Insert(Excel.XlDirection.xlDown)
このように書いたところ、行の追加はされましたが、10行以上追加されてしまいました。
何がいけないのでしょうか??
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2021/3/3 17:22:42
> xlSheet.Rows("10:10").select
Select や Selection を多用しないようにしましょう。
たとえば Windows Forms アプリにおいて、
TextBox1.Select()
ActiveControl.Text = "新しい文字列"
などと書いたりはせず、単に
TextBox1.Text = "新しい文字列"
の一行で済ませますよね。それと同じことです。
フォーカス遷移や選択範囲の切替は、極力排除しましょう。
> Xls1.Selection.Insert(Excel.XlDirection.xlDown)
可能であれば、クリップボードも経由させない方が望ましいです。
(たとえば Insert メソッドの CopyOrigin 引数を指定するなど)
https://excel-ubara.com/excelvba4/EXCEL254.html
> 10行以上追加されてしまいました。
> 何がいけないのでしょうか??
縦方向に結合しているセルがあったのではないでしょうか。
Select や Selection を多用しないようにしましょう。
たとえば Windows Forms アプリにおいて、
TextBox1.Select()
ActiveControl.Text = "新しい文字列"
などと書いたりはせず、単に
TextBox1.Text = "新しい文字列"
の一行で済ませますよね。それと同じことです。
フォーカス遷移や選択範囲の切替は、極力排除しましょう。
> Xls1.Selection.Insert(Excel.XlDirection.xlDown)
可能であれば、クリップボードも経由させない方が望ましいです。
(たとえば Insert メソッドの CopyOrigin 引数を指定するなど)
https://excel-ubara.com/excelvba4/EXCEL254.html
> 10行以上追加されてしまいました。
> 何がいけないのでしょうか??
縦方向に結合しているセルがあったのではないでしょうか。
投稿者 ちゃまちゃま  (社会人)
投稿日時
2021/3/3 17:29:42
魔界の仮面弁士様
ありがとうございます。
指摘いただきた所を直してやってみます。
ありがとうございます。
指摘いただきた所を直してやってみます。
とある行をコピーし、挿入するという処理をしたいのですが、Excelのマクロでは、
Rows("10:10").Select
Range("B10").Activate
Selection.Copy
Selection.Insert Shift:=xlDown
と記述されますが、これをVB.netで書き換える場合どう書き変えればいいでしょうか?