Page 284 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼現在カーソルがある行のデータを別のシー... moon 02/10/29(火) 15:03 ┗Re:現在カーソルがある行のデータを別のシー... コロスケ 02/10/30(水) 17:35 ┗Re:現在カーソルがある行のデータを別のシー... moon 02/10/30(水) 20:22 ┗Re:現在カーソルがある行のデータを別のシー... コロスケ 02/10/31(木) 9:29 ┗できました\(^o^)/ moon 02/11/1(金) 14:47 ─────────────────────────────────────── ■題名 : 現在カーソルがある行のデータを別のシー... ■名前 : moon ■日付 : 02/10/29(火) 15:03 -------------------------------------------------------------------------
VBA全くの初心者です。 ずっっと昔にロータスのマクロ(違いすぎ)を組んだことがある程度です。 今現在顧客データの管理をエクセルで行ごとにしています。 例えばA列に顧客番号、B列に名前、C列に郵便番号、D列、E列に住所1、2、F列に電話番号といった具合です。 これを名前、郵便番号、住所1,2の所だけ封筒に印刷したいのです。 このデータで顧客の名前を番号から検索し(今現在はCtrl+F)、Wordで作った封筒の宛名印刷用のフォームにデータを読み込んで使っています。 今の方法では、いちいちExelにある顧客の行番号-1をWordのデータの番号に入力して画面で表示させてから印刷をスタートさせています。 これが少し面倒になってきたのと、番号を入力し間違ったら全く違ったデータを読み込んでしまうことになるので、全てExelで、しかもできれば一枚のSheetの中で済ませてしまいたいのです。それが無理なら別のSheetででも可。 「マクロの記録」等をしてみましたが、今現在カーソルがあるところを起点にして、等というのができない(わからない)ので、困っています。私のやり方ですと、どこにカーソルを置いていようが、毎回同じデータが来てしまいます。 どうかお教えくださいませ。 |
▼moon さん: こんにちは。すべてエクセルで済ませるのが簡単かもしれません。 まず、別シートに封筒に印刷するレイアウトを作成します。 レイアウトが出来上がりましたら、データを流し込みたいセル番地に任意のデータを 転記するだけで可能だと思います。 レイアウトができたら詳細をカキコしてください。 また、 >私のやり方ですと、どこにカーソルを置いていようが、毎回同じデータが来てしまいます。 ですが、この場合、Selectionからコードが始まるはずですが、その前に特定のセルを選択 しているコードはありませんか? Range("A1").Selectなど...。 ではー♪ |
早速のお返事をありがとうございます。 VBAの命令の形式さえも分かっていない超初心者なので、エクセルの「マクロの記録」ボタンでなんとか自動記録させた程度です。 以下は自動記録させた物を持って来ました。 これを相対参照、つまり現在カーソルがある位置からの作業にしたいのです。 どうかよろしくお願いしますm(_ _)m ----------------------------------------------------------------- Sub 宛名印刷() Range("C225").Select Selection.Copy Sheets("Sheet2").Select Range("A4").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("Sheet1").Select Range("E225").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("A1").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("Sheet1").Select Range("F225").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("A2").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("Sheet1").Select Range("G225").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("A3").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Application.CutCopyMode = False ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True End Sub |
▼moon さん: 一応纏めてみました。不明点はまた質問してくださいね。ではー♪ Sub 宛名印刷_Modified() '// Written By Colo 31st Oct 2002 '// コピー元のシートはSheet1 '// コピー先のシートはSheet2 '// 相対参照になるのはSheet1のセルに対してのみと解釈しました。 '// 値(Value)のみを転記する場合はCopy メソッドの代わりに下記のように '// Valueプロパティを使って代入することができます。 '// セルがいくつ選択されているか?またSheet1のセルが選択されているかなどの '// エラーチェックは、ややこしくなるので今回の回答からは省いています。 With Selection '選択したセルを基準にして動きます。 Sheets("Sheet2").[A4].Value = .Value Sheets("Sheet2").[A1].Value = .Offset(, 2).Value Sheets("Sheet2").[A2].Value = .Offset(, 3).Value Sheets("Sheet2").[A3].Value = .Offset(, 4).Value End With Application.Goto Sheets("Sheet2").[A1] ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True End Sub |
お返事が大変遅くなり、申し訳ありませんでした。 ご回答いただいた内容をコピペし、自分なりに足したり引いたりしながら、ようやく完成し、失敗もありましたが、完璧になりました! どうもありがとうございましたm(_ _)m 下記のようなものになりました。 ********************************************************************** Sub 宛名印刷() <途中省略> ' Keyboard Shortcut: Ctrl+q ' With Selection Sheets("Sheet2").[B1].Value = .Offset(, 4).Value Sheets("Sheet2").[B2].Value = .Offset(, 5).Value Sheets("Sheet2").[B3].Value = .Offset(, 6).Value Sheets("Sheet2").[B4].Value = .Offset(, 2).Value End With Application.Goto Sheets("Sheet2").[A1] ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("Sheet1").Select End Sub ********************************************************************** 2枚のsheetで作業を行いました。 sheet1は顧客データのリスト、sheet2は宛名印刷の雛型 あれから宛名印刷の雛型を少し変えて、[A1]に郵便番号の記号を入れたため、全体的に1つ列をずらしました。 印刷が済んだら、sheet1に戻るだけで、セルの指定はしないようにしました。 というわけで、とても助かりました。 重ね重ね、ありがとうございました! |