Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2850 / 13645 ツリー ←次へ | 前へ→

【65581】異なるブック間のコピー whitemist 10/6/11(金) 1:34 質問[未読]
【65582】Re:異なるブック間のコピー かみちゃん 10/6/11(金) 5:34 発言[未読]
【65592】Re:異なるブック間のコピー whitemist 10/6/12(土) 1:01 お礼[未読]
【65599】Re:異なるブック間のコピー かみちゃん 10/6/13(日) 10:47 発言[未読]
【65600】Re:異なるブック間のコピー teian 10/6/13(日) 11:32 発言[未読]
【65601】Re:異なるブック間のコピー かみちゃん 10/6/13(日) 12:16 発言[未読]
【65605】Re:異なるブック間のコピー teian 10/6/13(日) 18:51 発言[未読]
【65608】Re:異なるブック間のコピー かみちゃん 10/6/14(月) 4:49 発言[未読]
【65611】Re:異なるブック間のコピー teian 10/6/14(月) 10:20 発言[未読]
【65602】Re:異なるブック間のコピー かみちゃん 10/6/13(日) 12:37 発言[未読]
【65607】Re:異なるブック間のコピー whitemist 10/6/14(月) 0:56 お礼[未読]

【65581】異なるブック間のコピー
質問  whitemist  - 10/6/11(金) 1:34 -

引用なし
パスワード
   ブック名「売上」のシート名「3月」の任意の行から行までを選択して、「個人成績」ブックの「長野秀文」シートの「指定セル」を先頭にして、貼り付けをしたいのですが、コピー元の任意のデータを指定する方法がわかりません。(列は、2列目から6列目で固定)

【65582】Re:異なるブック間のコピー
発言  かみちゃん E-MAIL  - 10/6/11(金) 5:34 -

引用なし
パスワード
   こんにちは。かみちゃん です。

> コピー元の任意のデータを指定する方法がわかりません。(列は、2列目から6列目で固定)

以下のような感じでいかがでしょうか?

Application.InputBox

Intersect
を使います。

Sub Sample()
 Dim r As Range
 
 On Error Resume Next
 Set r = Application.InputBox("任意のセルを選択してください", , , , , , , 8)
 On Error GoTo 0
 If Not r Is Nothing Then
  On Error Resume Next
  Set r = Intersect(r.EntireRow, r.Parent.Range("B:F"))
  On Error GoTo 0
  If Not r Is Nothing Then
   MsgBox r.Address(, , , True)
  Else
   MsgBox "範囲が取得できません"
  End If
 Else
  MsgBox "キャンセルしました"
 End If
End Sub

【65592】Re:異なるブック間のコピー
お礼  whitemist  - 10/6/12(土) 1:01 -

引用なし
パスワード
   ▼かみちゃん さん:
>こんにちは。かみちゃん です。
>
>> コピー元の任意のデータを指定する方法がわかりません。(列は、2列目から6列目で固定)
>
>以下のような感じでいかがでしょうか?
>
ありがとうございます。
私の質問が言葉足らずでした。詳しく説明します。
二万行を超える長大なシートのあるブロックに、スタートマークとエンドマークが記入されています。そのマークは、すでに記入された状態で手元に来ます。
MATCH関数を使って、シートの一行目にスタート行と終了行は、把握しています。スタート行がセルN1、終了行がセルP1に表示されています。
データは2列目から6列目までと決められて入力されています。
こうして範囲は決められているのですが、その範囲のデータを別のブックにコピーしたいのです。

【65599】Re:異なるブック間のコピー
発言  かみちゃん E-MAIL  - 10/6/13(日) 10:47 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>MATCH関数を使って、シートの一行目にスタート行と終了行は、把握しています。スタート行がセルN1、終了行がセルP1に表示されています。
>データは2列目から6列目までと決められて入力されています。
>こうして範囲は決められているのですが、その範囲のデータを別のブックにコピーしたいのです。

VBAのコードはどこまでできているのでしょうか?
たとえば、特定のセル範囲を別ブックにコピーするのであれば、「マクロの記録」で
コードは記録されますが、試されていますか?
試しているなら、そのコードくらいは提示してください。

たぶん、質問は、N1セル、P1セルで指定された行範囲の2列目から6列目の範囲
はどのように記述するのかという点かと思いますが、まずは、ご自身でできる
こともありますので、そこから試してみてください。

いろいろ方法はありますが、以下のような感じでセル範囲は取得できます。
MsgBox Range(Cells(Range("P1").Value, 2), Cells(Range("N1").Value, 6)).Address

なお、P1セルとN1セルの値チェック、相関チェックは、全くしていません。

【65600】Re:異なるブック間のコピー
発言  teian  - 10/6/13(日) 11:32 -

引用なし
パスワード
   本題からは逸れますが、
> On Error Resume Next
> Set r = Application.InputBox("任意のセルを選択してください", , , , , , , 8)
> On Error GoTo 0
> If Not r Is Nothing Then
>  On Error Resume Next
>  Set r = Intersect(r.EntireRow, r.Parent.Range("B:F"))
>  On Error GoTo 0
>  If Not r Is Nothing Then
>   MsgBox r.Address(, , , True)
>  Else
>   MsgBox "範囲が取得できません"
>  End If
> Else
>  MsgBox "キャンセルしました"
> End If
は、あまりいいサンプルではありませんね〜。

2度目のエラートラップは何のため?と思います。
Intersectメソッドでは、共有範囲がなければNothingを返す仕様ですしね。
もしエラーを返すと誤認し、On Errorを咬ましたのかのかとも受け止めましたが、
それならば、既に使用済みのrという変数で受けてしまっては、
Nothing判定に結びつかないし、とてもチグハグに感じます。

もっとも、今回のIntersectメソッドの使い方に関しては、
Nothingを返すことはないと思いますけど。

正常に動くからいいということなのであれば、余計なお世話ですが。

【65601】Re:異なるブック間のコピー
発言  かみちゃん E-MAIL  - 10/6/13(日) 12:16 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>は、あまりいいサンプルではありませんね〜。
>
>2度目のエラートラップは何のため?と思います。

余計というより、誤っているかもしれません。

ご指摘いただくのは、ありがたいですが、teian さんだったらどうされるか、
提案していただきたいですね。

【65602】Re:異なるブック間のコピー
発言  かみちゃん E-MAIL  - 10/6/13(日) 12:37 -

引用なし
パスワード
   こんにちは。かみちゃん です。

> 今回のIntersectメソッドの使い方に関しては、
> Nothingを返すことはないと思います

とのことで、たしかにそうなので、以下に訂正しておきます。

Sub Sample1()
 Dim r As Range

 On Error Resume Next
 Set r = Application.InputBox("任意のセルを選択してください", , , , , , , 8)
 On Error GoTo 0
 If Not r Is Nothing Then
  Set r = Intersect(r.EntireRow, r.Parent.Range("B:F"))
  MsgBox r.Address(, , , True)
 Else
  MsgBox "キャンセルしました"
 End If
End Sub

【65605】Re:異なるブック間のコピー
発言  teian  - 10/6/13(日) 18:51 -

引用なし
パスワード
   ▼かみちゃん さん:
>こんにちは。かみちゃん です。
>ご指摘いただくのは、ありがたいですが、teian さんだったらどうされるか、
>提案していただきたいですね。
どうされるかって、指摘したかったことは前レスで書いた内容が全てであり、
もう提案するようなものはないですよ。
コードにして例示しろってことではないですよね?
もう既にご自分で訂正なされてるようですし。
もちろん、かみちゃんさんが病気か何かでレスできなくなるようであれば、
質問者さんへは提示しなくてはならなかったとは思ってます。

そうではなく、もしかして本題に対して提案しろってことですか?
それに関しては、最初にお断りしたとおり本題には関与していませんまで、
立ち入ろうとは思ってませんので悪しからず。


かみちゃんさんへ
少し時間を空いてしまいましたが、何らかの反応があったなと覗いてみたのですが、
あの反論には恐れ入りました。閉口しちゃいました。
間違いとは言いませんが、Intersectメソッドの仕様を誤って認識してるんじゃないかと思い、
ちょっと指摘しただけなのに、感謝こそされどこの反撃はないと思います。
あなたは、別の板でも活躍されておらますが、
他の回答者に対して敵意でもあるのでしょうか?
私見ですが、拝見したスレではやたら棘のある返答や攻撃的なコメントが多いように感じます。

【65607】Re:異なるブック間のコピー
お礼  whitemist  - 10/6/14(月) 0:56 -

引用なし
パスワード
   みなさん、ありがとうございます。
最初の質問にも書きました通り、VBAは初めてであり、お二人のメールが
宇宙人語的に見えてしまっています。それくらいの理解度ですので、レスの
遅いのはご勘弁をお願いします。
いただいた回答事例を参考にして、頑張ってみます。
そのうえで、また質問させていただきます。

重ねてお礼申し上げます。
ちなみに、「EXCEL孫の手」というサイトを運営中ですが、今回の件で
すっかり更新が遅れてしまい、多少焦っています。

【65608】Re:異なるブック間のコピー
発言  かみちゃん  - 10/6/14(月) 4:49 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>>ご指摘いただくのは、ありがたいですが、teian さんだったらどうされるか、
>>提案していただきたいですね。
>どうされるかって、指摘したかったことは前レスで書いた内容が全てであり、
>もう提案するようなものはないですよ。
>コードにして例示しろってことではないですよね?

いえ、teianさんなら、どうするのかなぁと思っただけです。
でも、時間が少しありましたので、自分で考えてみましたが、これもteianさん
がおっしゃっていることに合っているのかどうかは自信はありません。

>そうではなく、もしかして本題に対して提案しろってことですか?
>それに関しては、最初にお断りしたとおり本題には関与していませんまで、
>立ち入ろうとは思ってませんので悪しからず。

だったら、コメントされたのは、なぜだろうと思います。

>あの反論には恐れ入りました。閉口しちゃいました。
>間違いとは言いませんが、Intersectメソッドの仕様を誤って認識してるんじゃないかと思い、
>ちょっと指摘しただけなのに、感謝こそされどこの反撃はないと思います。

反撃したつもりは、ありません。
不快に感じたなら、謝ります。
Intersectメソッドの仕様をきちんと認識していなかったから、反省の意味も込めて、
自分で訂正もしましたし、それに気づかせていただいたので、
「ご指摘はありがたい」と一応の感謝はしているつもりです。

ただ、これに、「こうしたほうがいいよ」とあれば、非常に助かったわけです。
突然、時間がとれなくなることもありますので・・・

>あなたは、別の板でも活躍されておらますが、
>他の回答者に対して敵意でもあるのでしょうか?
>私見ですが、拝見したスレではやたら棘のある返答や攻撃的なコメントが多いように感じます。

そうですか?今後も注意していきたいと思います。
ご忠告ありがとうございます。

最近、ようやく体調も回復してきたので、ひさしぶりにコメントさせていただきましたが、
このようなコメントを受けるとは思いませんでした。
少し寂しく怖い感じがしました。

【65611】Re:異なるブック間のコピー
発言  teian  - 10/6/14(月) 10:20 -

引用なし
パスワード
   いくつかご質問がありましたのでお答えします。

>自分で考えてみましたが、これもteianさん
>がおっしゃっていることに合っているのかどうかは自信はありません。
訂正アップされたコードは、最初に私が思い描いたコードと同じです。
(ただ、初心者さんへのコード提示に当たっては、
変数rを使い回しで提示するかどうかは考慮したかもしれませんが。)

>コメントされたのは、なぜだろうと思います。
既に認識されたと思われますが、
質問者さんにIntersectメソッドの仕様が誤って伝わらないようにと
思ったからです。その1点だけです。


あと、レスにおける言葉のニュアンスにより、
認識相違があったようですのでそれについて。

>反撃したつもりは、ありません。
>不快に感じたなら、謝ります。
そうでしたか、それは失礼しました。
率直に申し上げますが不快に感じました。

>「ご指摘はありがたい」と一応の感謝はしているつもりです。
これについても、そんな感情があったのですか?
伝わりませんでした。
>ご指摘いただくのは、ありがたいですが、teian さんだったらどうされるか、
>提案していただきたいですね。
このコメントから、感謝の念を読み取れというのはとても無理があるかと思います。

>このようなコメントを受けるとは思いませんでした。
>少し寂しく怖い感じがしました。
これについては、私の感情もその通りでありそのままお返します。


Ps.
あと、余計なお世話ですけど、
病み上がりということであれば、あまり夜更かしなどせずに
早めのご就寝をお勧めします。

2850 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free