お世話になります。
ExellVBAを業務に使用しています。
動作環境は、自宅は256M、Exell2002+Sp3、職場は256M、Exell2003+Sp2。
両方共にウィルスバスターがインストールされています。

次に方法で、Sheet1から、Sheet2、3,4,5・・・へ、セルを連続コピーしていますが、同時にコピー先のSheetではデータ編集も行なっているので、とても重たく感じられます。
ウィルスバスターの推奨メモリは512Mで、足りない環境で動かしているので、この所為かとは思っていますが、取り外して試してはいません。

現在のコピー方法は次の通りです。これで、8年運営しています。
(例)
Sheet1において、
Range("A003:A024").Name = "namA_Room"
Application.Goto Reference:="namA_Room"
Selection.Copy Destination:=Worksheets("Sheet2").Range("E03")

質問です。
コピーには色々方法があろうかと思いますが、
↑の(例)の方法は、現在、一般的に多く使われている方法でしょうか?
それとも、例えば、クリップボードのコピー&ペーストみたいな記述方式の方がいいのでしょうか?
他にも、もっと良い方法がありますか?

一部作り直すつもりです。どうせなら、ベターな方法を取り入れたいと思っています。
御教示よろしくお願いします。

A 回答 (1件)

>コピーには色々方法があろうかと思いますが、


理屈はよくわかりませんが
コピー&ペーストだとメモリーの使用量に影響が必ずあるはずです。
お仕事のようですが コピーするのは
書式やフォントなどの一緒にコピーしなければならない作業なのでしょうか
私は、値を入れたいだけであれば

Worksheets("Sheet2").Range("E03:E24").Value = Range("A3:A24").Value
の1行で済ましてしまいます。
名前をつけたり、コピーしたりする必要もありません。
ちなみに
Range("C2").Value = Now
For i = 1 To 1000
Range("A003:A024").Name = "namA_Room"
Application.Goto Reference:="namA_Room"
Selection.Copy Destination:=Worksheets("Sheet2").Range("E03")
Next
Range("C3").Value = Now
End Sub

Range("B2").Value = Now
For i = 1 To 1000
Worksheets("Sheet2").Range("E3:E24").Value = Range("A3:A24").Value
Next
Range("B3").Value = Now
End Sub
同じ作業を1000回繰り返してみたら
5秒と1秒という結果でしたので 5倍ほど違いました。
メモリーが少ない場合はさらに違いが出てもおかしくないと思うのですが。
    • good
    • 0
この回答へのお礼

ご丁寧に、比較のの実行結果まで行なって頂き、ありがとうございます。
8年前はVB使い初めで、例題を見ながら作っていました。
最近、これが重たく感じられ、いつか作り直しをと思ってましたが
そのままにしていました。
これを機会に、ご提案の内容を取り込み、作り直ししてみます。
ありがとうございました。
補足ですが、
私、クラスモジュールが、なかなか理解が出来なくて、最近なんとなく判ってきて
標準モジュールをクラスモジュールに置き換えながら進めていく予定です。

お礼日時:2011/04/23 20:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q「間」の読み方

間という漢字が名詞の後につく時はどう読みますか?(例えば「他人間」)
「ま」か「かん」、どちらが正しい読み方わからない場合が多いです。

拙い日本語ですみません!よろしくお願いします!

Aベストアンサー

名詞の種類にもよります。
(カン=~の ”あいだ” という意味で使うとき) 国家間,人種間,惑星間,時間, ~週間(~月間)など, 
  山脈間,河川間,お寺間,神社(お宮)間,  (音読み統一? でもない )
対して,
(ま=~の”へや” の意味のとき)日本間,江戸間,京間,十畳間,仏間   (訓読み統一 という訳でもない)

QVBAエラー シート内になるセルの値を用いて シート名として使用し展開できません。

こんにちは。
元シート内のセルの値を参照し、
シート名として使用、そのあと連続でシートを作成するようにと
下記の通り、一度成功した構文を用いましたが
いつも実行時エラー”アプリケーション定義または、オブジェクト定義のエラー”が
表示され本当に困ってます。 対処法を教えて頂きたく。よろしくお願いします。

Worksheets("FQ.dat").Select
Dim ws As Object
Set ws = Range("A6,A30")
Sheets.Add after = ActiveSheet
For Each ws In Selection
ActiveSheet.Name = ws.value ← ここでいつもエラー
Next ws

Aベストアンサー

>一度成功した構文を用いましたが
本当に成功しました。
Sheets.Add after = ActiveSheet
For Each ws In Selection
では、シートの追加が一度しか発生しません
In Selection の範囲は?

やりたいことは
For i = 6 To 30
Sheets.Add After:=ActiveSheet
ActiveSheet.Name = Worksheets("FQ.dat").Range("A" & i).Value
Next
かな??

Q近鉄「片江今里」駅、「深江」駅、「庄田」駅の読み方を教えてください。

私は日本の鉄道駅の情報を集めていますが、特に戦前の駅名は時刻表その他の文献に読み方が掲載されていないため、約280駅の読み方がわかりません。そこで、
(1)近畿日本鉄道大阪線今里駅の改称前の駅名「片江今里」駅
(2)近畿日本鉄道大阪線布施駅の改称前の駅名「深江」駅
(3)近畿日本鉄道大阪線美旗~伊賀神戸間の「庄田」駅
の読み方を教えてください。

Aベストアンサー

1.
大昔の今里の周辺に、片江 かたえ という地名がありました。
今でも小学校で片江小学校ってあったり、
http://ja.wikipedia.org/wiki/%E5%A4%A7%E9%98%AA%E5%B8%82%E7%AB%8B%E7%89%87%E6%B1%9F%E5%B0%8F%E5%AD%A6%E6%A0%A1
片江は今里周辺では縁の深い地名です。
なので、それは、かたえいまざと で間違いないです。


ふかえ で間違いないでしょう。布施駅の北西、東成区に入ると、深江(ふかえ)地区ですから。

3.
名張市に、現 伊賀市上神戸庄田地区から名張市に編入された上庄田地区がありますが、↓の下から5番目 リンク切れしてますが、かみしょうだ という地名読み方が読み取れますので、 しょうだ でいいでしょう。
http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=%E5%90%8D%E5%BC%B5%E5%B8%82+%E4%B8%8A%E5%BA%84%E7%94%B0&num=50

1.
大昔の今里の周辺に、片江 かたえ という地名がありました。
今でも小学校で片江小学校ってあったり、
http://ja.wikipedia.org/wiki/%E5%A4%A7%E9%98%AA%E5%B8%82%E7%AB%8B%E7%89%87%E6%B1%9F%E5%B0%8F%E5%AD%A6%E6%A0%A1
片江は今里周辺では縁の深い地名です。
なので、それは、かたえいまざと で間違いないです。


ふかえ で間違いないでしょう。布施駅の北西、東成区に入ると、深江(ふかえ)地区ですから。

3.
名張市に、現 伊賀市上神戸庄田地区から名張市に編入された上庄田地区が...続きを読む

QVBAで別エクセルファイルから指定エクセルファイルにシートをコピー

Office2003のエクセルでVBAを勉強しております。

そこで、VBAで別エクセルファイルからあるシートを指定エクセルファイルへ丸まるコピーしたい場合にはどのようにすればよいのでしょうか?

Aベストアンサー

Sheets("A").Copy Before:=Workbooks("Book1").Sheets(1)


>Office2003のエクセルでVBAを勉強しております。

方法が解らなければ、記録マクロを確認するのが一番です。
動作が理解出来たら、コードの最適化を行ってください。

Q京浜電気鉄道「土佐川」、「沢田」、「下町」、「池端」駅の読み方について

私は日本の鉄道駅の情報を集めていますが、特に戦前の駅名は時刻表その他の文献に読み方が掲載されていないため、約280駅の読み方がわかりません。そこで、
京浜電気鉄道(現、京浜急行)「土佐川」、「沢田」、「下町」、「池端」駅の読み方について
(1)京浜電気鉄道(現、京浜急行)浜川~立会川間の「土佐川」駅
(2)停車場道(後の大森八幡:廃止)~大森町間の「沢田」(現、平和島)駅
(3)蒲田(現、京急蒲田)~出村間の「下町」駅
(4)大師線久根崎(廃止)~花見橋(廃止)間の「池端」駅
の読み方をおしえてください。

Aベストアンサー

 こんにちは。
 こちらで生まれて以来50年余りになり、普段大森町駅を利用しています。
 それにしても相当に古い駅名ばかりですね。久根崎が記された乗車券は見たことがありますが、それ以外は資料で読んだことしか無いものばかりのように思います。
 この中で確実に言えるのは沢田で、これは「さわだ」に間違いがありません。現在では交差点の名前としてのみ残っています。
http://map.goo.ne.jp/mapb.php?MAP=E139.43.53.37N35.34.36.723&ZM=9&SZ=1&sw=0&P=1005E139.43.51.664N35.34.34.625&P2=1202E139.43.36.780N35.34.23.690&icon=on
この交差点を北北東-南南西方向に走っているのが、以前は沢田通りと呼ばれた道路。

 ほかの3件のうち、割合近所に付いては共に手がかり無し。池端に関してはこのページに「いけのはた」とかなを振ってあります。
http://www.tamagawa-kisui.jp/ref/ref6/ref-6.html
上から20行目辺り。根拠も無くかなを振ったりはしませんから、なんらかの資料が存在するか、自身に確信があるかのどちらかです。サイトの管理者に訊ねてみるとよいでしょう。
http://www.tamagawa-kisui.jp/contents.html

 あとは各地域の図書館や郷土博物館に調査依頼を申し出ると、きちんと調べてくれる可能性が高くあります。

 こんにちは。
 こちらで生まれて以来50年余りになり、普段大森町駅を利用しています。
 それにしても相当に古い駅名ばかりですね。久根崎が記された乗車券は見たことがありますが、それ以外は資料で読んだことしか無いものばかりのように思います。
 この中で確実に言えるのは沢田で、これは「さわだ」に間違いがありません。現在では交差点の名前としてのみ残っています。
http://map.goo.ne.jp/mapb.php?MAP=E139.43.53.37N35.34.36.723&ZM=9&SZ=1&sw=0&P=1005E139.43.51.664N35.34.34.625&P2=1202E139...続きを読む

QエクセルVBAでボタンを作ったシートとVBAを実行するシートを変えたい

シート1にボタンを作成し、
そのボタンを押すと実行するVBAを作成しました。
そこで、VBAを実行するシートの指定はできるのでしょうか。
例えば、ボタンを押すと、
10行から20行まではシート2で実行させ、
30行から40行まではシート3で実行させたいと考えています。
可能でしょうか。
どうぞ宜しくお願いします。


***********************************************
作成したVBA。ボタンはシート1にあります。
***********************************************

Private Sub CommandButton1_Click()


***********************************************
ここからはシート2で実行させたい
***********************************************
Range("E2").Select
ActiveCell.FormulaR1C1 = "10"
Range("E2").Select
Selection.AutoFill Destination:=Range("E2:E101"), Type:=xlFillDefault
Range("E2:E101").Select


***********************************************
ここからはシート3で実行させたい
***********************************************
Range("A2").Select
ActiveCell.FormulaR1C1 = "100"
Range("A2").Select
Selection.AutoFill Destination:=Range("E2:E101"), Type:=xlFillDefault
Range("A2:A101").Select

End Sub

シート1にボタンを作成し、
そのボタンを押すと実行するVBAを作成しました。
そこで、VBAを実行するシートの指定はできるのでしょうか。
例えば、ボタンを押すと、
10行から20行まではシート2で実行させ、
30行から40行まではシート3で実行させたいと考えています。
可能でしょうか。
どうぞ宜しくお願いします。


***********************************************
作成したVBA。ボタンはシート1にあります。
***********************************************

Private Sub CommandB...続きを読む

Aベストアンサー

予期しないエラーを避けるため
シートを直接選択したらどうでしょうか

Private Sub CommandButton1_Click()

Application.ScreenUpdating = False

***********************************************
ここからはシート2で実行させたい
***********************************************
Sheets("Sheet2").Select

Range("E2").Select
ActiveCell.FormulaR1C1 = "10"
Range("E2").Select
Selection.AutoFill Destination:=Range("E2:E101"), Type:=xlFillDefault
Range("E2:E101").Select


***********************************************
ここからはシート3で実行させたい
***********************************************

Sheets("Sheet3").Select

Range("A2").Select
ActiveCell.FormulaR1C1 = "100"
Range("A2").Select
Selection.AutoFill Destination:=Range("E2:E101"), Type:=xlFillDefault
Range("A2:A101").Select

Sheets("Sheet1").Select
Application.ScreenUpdating = True

End Sub

予期しないエラーを避けるため
シートを直接選択したらどうでしょうか

Private Sub CommandButton1_Click()

Application.ScreenUpdating = False

***********************************************
ここからはシート2で実行させたい
***********************************************
Sheets("Sheet2").Select

Range("E2").Select
ActiveCell.FormulaR1C1 = "10"
Range("E2").Select
Selection.AutoFill Destination:=Range("E2:E101"), Type:=xlFillDefault
Range("E2:E101").Selec...続きを読む

QIFRSの読み方について

IFRSの読み方について教えてください。

アイエフアールエス、アイファス、アイファース、イファースなど読み方があるようですが、日本では標準的な読み方はありますか?また、グローバルで共通した読み方はありますか?

全社で共通した読み方で統一したいと考えております。

Aベストアンサー

IFRSの読み方は、現時点の日本では様々です。
各種セミナーに行きましたが、講師をされる方によってまちまちです。

ひとりの講師の方の説明では、IFRSがすでに導入されているヨーロッパ(EU)では、主にアイエフアールエスと読んでいるようです。

http://ifrs-yomikata.cocolog-nifty.com/blog/

ご参考に。

参考URL:http://ifrs-yomikata.cocolog-nifty.com/blog/

QExcel マクロ VBA 別シートのセルを検索し、該当するセルの右にあるセルを入力させる方法 s

Excel マクロ VBA 別シートのセルを検索し、該当するセルの右にあるセルを入力させる方法

sheet『品名マスタ』にはA列に№、B列に商品名があります。sheet『一覧』のB列7行目以降に№が入っています。
※この№が重複することはありません。

『一覧』B列7行目以降にある№で『品名マスタ』A列の№を検索し、該当する『品名マスタ』B列の商品名を『一覧』のC列7行目に反映する。
『一覧』B列の№が空欄の場合は何も入れない。

という処理のボタンをつけたいのですが、どなたか詳しい方ご教授いただけないでしょうか?
(OS:Windows7 Excel:2010を使用しております。)

Aベストアンサー

こんにちは。
以下を試してみてください。

>処理のボタンをつけたい
マクロ名は任意です。Match関数を利用しています。

'//
Sub Button1_Click()  '←ここは任意
Dim c, i
Dim Sh1 As Worksheet: Set Sh1 = Worksheets("一覧")
Dim Sh2 As Worksheet: Set Sh2 = Worksheets("品名マスタ")
With Sh1
 For Each c In .Range("B7", .Cells(Rows.Count, 2).End(xlUp))
  If IsNumeric(c.Value) Then
   i = Application.Match(c.Value, Sh2.Columns(1), 0)
   If IsNumeric(i) Then
    c.Offset(, 1).Value = Sh2.Cells(i, 2).Value
   End If
  End If
 Next c
End With
End Sub

-----------
この種の質問では定番ですが、イベント・ドリブン型マクロがありますので、それも加えておきます。一覧のB列に数字を入れると、自動的に商品名が出てきます。Vlook関数とは似ていますが、違うのは、数字を消すと、右隣のセルの内容も消えます。

'//シートモジュール(シートタブを右クリック、コードの表示)

Private Sub Worksheet_Change(ByVal Target As Range)
 Dim i As Variant '数値型ではありません
 Dim buf As String
 Dim Sh1 As Worksheet: Set Sh1 = Worksheets("品名マスタ")
 If Target.Count > 1 Then Exit Sub
 With Target
 If .Column <> 2 Then Exit Sub
 If .Row < 7 Then Exit Sub
 '数字を削除すると、隣の文字が消える
 If .Value = "" Then Target.Offset(, 1).ClearContents: Exit Sub
  If IsNumeric(.Value) Then
   i = Application.Match(.Value, Sh1.Columns(1), 0)
   If IsNumeric(i) Then
    buf = Sh1.Cells(i, 2).Value
    Application.EnableEvents = False
    .Offset(, 1).Value = buf
    Application.EnableEvents = True
    buf = ""
   End If
  End If
 End With
End Sub

こんにちは。
以下を試してみてください。

>処理のボタンをつけたい
マクロ名は任意です。Match関数を利用しています。

'//
Sub Button1_Click()  '←ここは任意
Dim c, i
Dim Sh1 As Worksheet: Set Sh1 = Worksheets("一覧")
Dim Sh2 As Worksheet: Set Sh2 = Worksheets("品名マスタ")
With Sh1
 For Each c In .Range("B7", .Cells(Rows.Count, 2).End(xlUp))
  If IsNumeric(c.Value) Then
   i = Application.Match(c.Value, Sh2.Columns(1), 0)
   If IsNumeric(i) Then
    c.Offset(, 1)...続きを読む

Q東急玉川線「七軒町」駅の読み方について

私は日本の鉄道駅の情報を集めていますが、特に戦前の駅名は時刻表その他の文献に読み方が掲載されていないため、約280駅の読み方がわかりません。そこで、
東京急行電鉄玉川線(現、世田谷線)の下高井戸~六所神社前(現、松原)間にあった「七軒町」駅の読み方を教えてください。

Aベストアンサー

「しちげんちょう」と読みます。

現在の下高井戸商店街は昔は七軒町商店街と呼ばれていました。
http://www.shimotaka.or.jp/activity/about_shimotakaido/

このHPの最後の下高井戸商店街の歴史のところに現在の商店街の名前に変更になるまでの経緯が載っています。
下高井戸商店街付近に住んでいる人なら皆知っています。

Q【エクセルVBA】エクセルファイル間で表のコピーと貼り付け

そもそも出来るかどうか、わかりませんが、
もしかしたらと思い、質問させていただきました。
2つのエクセルファイル「個別」と「合計」があるとします。
「個別」はCドライブの「所属者」フォルダに
「合計」はCドライブの「集計」フォルダにあるとします。

「個別」ファイルには以下のような表とコマンドボタンがあります。
A1 A2・・・はセルの位置を表しています。
   A1 A2 A3
B1 B2 B3
C1 C2 C3

コマンドボタンをクリックすると、この表と同じ内容が
「合計」ファイルの以下の位置に移動するようにしたいです。
   E1 E2 E3
F1 F2 F3
G1 G2 G2
要するに「個別」ファイルにある表をコピーして、
「合計」ファイルの指定した位置に貼り付けるという操作を
マクロを使ってコマンドボタンをクリックすることで
自動に行えるようにしたいのです。
もし可能ならば、
どのようにコードを入力するべきか教えてください。
マクロに関しては素人ですので、
できれば入力すべきものをそのまま回答していただけると
ありがたいです。

そもそも出来るかどうか、わかりませんが、
もしかしたらと思い、質問させていただきました。
2つのエクセルファイル「個別」と「合計」があるとします。
「個別」はCドライブの「所属者」フォルダに
「合計」はCドライブの「集計」フォルダにあるとします。

「個別」ファイルには以下のような表とコマンドボタンがあります。
A1 A2・・・はセルの位置を表しています。
   A1 A2 A3
B1 B2 B3
C1 C2 C3

コマンドボタンをクリックすると、この表と同じ内容が
「合計」ファイル...続きを読む

Aベストアンサー

>Private Sub CommandButton1_Click()
なのでそのボタンのあるシートモジュールに記述されていると思います。

記録マクロが記述されている標準モジュールに書き換えて動作確認してみてください。
マクロの名前は記録マクロを参考に Sub マクロ名() としてください(Private Sub ではありません)

設置したボタンから起動したければ今記述しているコードを

Private Sub CommandButton1_Click()
マクロ名
End Sub

とすればよいでしょう。


※シートモジュールではイベントマクロが記述できるので興味深いのですがシートを超えたコーディングなどはより知識を必要とするので結構難解です


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報