プロが教えるわが家の防犯対策術!

別のマクロで選択したセルに別のシートからコピーして貼り付けるマクロ、どうしても、このマクロが作れないです。
難題すぎて・・・・
貼り付けるセルの値は選択ボタンによって変わる仕様ですが、エクセル2003で可能なんでしょうか?
難しすぎてコードが全然解らない状態です
どなたかご教授願えれば幸いです。

A 回答 (10件)

モジュールレベルで変数を宣言すればどうでしょうか。


マクロが同じモジュールにがあるなら
Dim rng As Range
マクロが別のモジュールにあるなら
Public rng As Range

Sub a()
Set rng = ActiveSheet.Range("A1")
End Sub

Sub b()
MsgBox rng.Value
Set rng = Nothing
End Sub

[XL] Visual Basic for Applications 変数の適用範囲
http://support.microsoft.com/kb/141693/ja

この回答への補足

申し訳ありません、もう少し詳しく教えてもらいたいので、宜しくお願い致します。

こちらの情報が少なすぎでした。
申し訳ありません。
以下参考にして下さい。

ワークシートは(入力シート)(計算シート)の2枚構成
入力シートで1月~12月までの選択コマンドボタン12
個を作成してあります。
・ここで1月のコマンドボタンを押すと入力シートの("B47:AU47")をクリップボードにコピーします。

次に入力シートにペースト用コマンドボタンを1つ作成してありますので、ボタンを押すと、計算シートの1月の貼り付けセル("A1")にペーストされます。
選択コマンドの2月を選択すると("A2")に貼り付けするといった感じで、選択ボタンによって、貼り付けセルが変わる仕組みです。

よろしくお願いいたします。

補足日時:2008/09/13 12:07
    • good
    • 0

★PasteSpecialの件


行を変えて記述することになります。
Worksheets("入力シート").Range("B47:AU47").Copy
Worksheets("計算シート").Range(rngp).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False 'コピーモードを解除(クリップボードをクリア)

下記の場合は、クリップボードを経由しないので、何もしなくても大丈夫です。
Worksheets("入力シート").Range("B47:AU47").Copy Worksheets("計算シート").Range(rngp)

ANo.9で紹介しましたが、下記のようにしてもクリップボードを経由せずに、値のみ転記できます。
Worksheets("計算シート").Range("A1:AT1").Value = Worksheets("計算シート").Range("B47:AU47").Value

>問題はキャンセル後の1月のコマンドボタンのカラーとクリップボードの初期化です。
クリップボードの件は前述しました。
キャンセルする場合は
If MsgBox("1月でよろしいか?", vbOKCancel) = vbCancel Then
    '★ボタンの色を元に戻す
    axo.BackColor = &H8000000F
    '★変数の初期化
    Set axo = Nothing
    rngp = ""
    Exit Sub
  End If
ですね。
Exit Subで抜ける前に、変数も初期化しておかねばなりません。

# ANo.9のコード一部訂正です。
If ip >= 1 Or ip <= 12 Thenのところ、演算子はOrではなくAndです。

'★貼付け先セル番地をセット
If ip >= 1 Or ip <= 12 Then
  rngp = md(ip - 1)
End If
    • good
    • 0
この回答へのお礼

無事動作する事もでき感謝の気持ちでいっぱいです。
xls88さんのお陰で(全てなんですが)今回望んでいた仕様が出来ました。
節目を付けなければ、ダラダラとxls88さんに甘えてばかりですので、今回は解決させて頂きます。
長々と対応して頂きありがとう御座いました。
次回、勉強させて頂く機会が御座いましたら、宜しくお願い申し上げます。
自分なりですが、コードを理解出来る様に今後頑張ってみます。
この様な形でしかお礼を言えませんが、この度は、大変お世話になりました。
ありがとうございます。

お礼日時:2008/09/19 20:21

★PasteSpecialの件


Destinationはできないようですから、Copy行に続けてWorksheets("計算シート").Range(rngp)をPasteSpecialですね。

あるいは
Worksheets("計算シート").Range("A1:AT1").Value = Worksheets("計算シート").Range("B47:AU47").Value
というようにすることでも値が貼り付けられます。

★12個の月別ボタンを、1個に纏める件
1個のボタンで12個分の仕事をこなそうというわけです。
何月のデータなのか知る手掛かりが必要になります。
(なければInputBox関数でオペが指定する形にしてもよいかも知れません)
コードの一例です。

Private Sub CommandButton1_Click() '貼り付け先の設定
  Dim md() As Variant
  Dim ip As Integer
  '★複数のセル番地データを変数に格納
  md = Array("A81", "A80", "A79", "A78", "A77", "A76", "A75", "A74", "A73", "A72", "A71", "A70")
  '★データ月数を取得(セルA1に当該月数が入力されていると仮定)
  ip = Worksheets("入力シート").Range("A1").Value
  '★貼付け先セル番地をセット
  If ip >= 1 Or ip <= 12 Then
    rngp = md(ip - 1)
  End If
End Sub

この回答への補足

提案して頂きありがとうございます。
一度ロードデータを細工して試させて頂きます。
ところで、値の貼り付けの事ですが、
>Copy行に続けてWorksheets("計算シート").Range(rngp)をpasteSpecialですね。
と言う事は、Worksheets("入力シート").Range("B47:AU47").Copy pasteSpecialと言う事ですか?
Range(rngp)貼付先が解らないままでpaste出来るのでしょうか?
意味を取り違えてましたら申し訳ありません。

xls88さんにもうひとつご指導して頂きたいのですが、xls88さんのコードに選択ミス時の対処法として、下記載にMsgBoxを取り付けてみました。
問題はキャンセル後の1月のコマンドボタンのカラーとクリップボードの初期化です。
色々試してみたのですが、中々上手く行きませんでしたのでご教授お願い出来ませんでしょうか?
お時間がある時で結構ですので、宜しくお願い致します。
---------------------------------------------------------------
Private Sub CommandButton1_Click() '1月をセット
Set axo = CommandButton1 'CommandButton1をセット
rngp = "A81" '//1月データの貼付け先セル番地をセット
CommandButton1.BackColor = RGB(255, 200, 0) '色を変える
If vbNo = MsgBox("1月でよろしいか?", vbOKCancel) Then exit Sub 'メッセージボックス
MsgBox "続けて貼付ボタンをおすべ"

with CommandButton13 '貼り付けボタンの表示と色を変える
.BackColor = RGB(255, 200, 0)
.Caption = "アムロ貼付ま~す"
End With

補足日時:2008/09/18 21:40
    • good
    • 0

変数の問題が解決したようなので、ちょっと変えてみます。



1~12月のボタンをClickした時
・セル(B47:AU47)データデータのコピーはしない
・Clickしたボタンを参照(貼り付け後デフォルトに戻すため)
・貼付け先セル番地をセット
・Clickしたボタンの色を変更
・貼り付けボタンの表示と色を変える

貼り付けボタンをClickした時
・計算シートにコピペを実行
・コピー元ボタンの色を初期化
・貼り付けボタンの色と表示を初期化
というように変更してみました。

★(1)というようにコメントしたところが追加、変更した部分です。
BackColorの色コード、Captionのボタン名、などは実際に合わせて書き換えてください。

'---------------------------------------------------------------
Dim axo As Object '★(1)コマンドボタンを参照
Dim rngp As String '貼り付け先セル番地

Private Sub CommandButton1_Click() '1月
  '★(2)CommandButton1をセット
  Set axo = CommandButton1
  '//1月データの貼付け先セル番地をセット
  rngp = "A81"
  '★(3)自身の色を変える
  CommandButton1.BackColor = RGB(255, 250, 250)
  '★(4)貼り付けボタンの表示と色を変える
  With CommandButton13
    .BackColor = RGB(255, 200, 0)
    .Caption = "1月データを貼付"
  End With
End Sub

Private Sub CommandButton13_Click() '貼り付け
  '//値がセットされていないと終了する
  If rngp = "" Then
    MsgBox "貼り付け先セル番地がセットされていません。"
    Exit Sub
  End If
  '★(5)コピペを実行
  Worksheets("入力シート").Range("B47:AU47").Copy Worksheets("計算シート").Range(rngp)
  '★(6)コピー元ボタンの色を初期化
  axo.BackColor = &H8000000F
  '★(7)貼り付けボタンの色と表示を初期化
  With CommandButton13
    .BackColor = &H8000000F
    .Caption = "CommandButton13"
  End With
  '★(8)変数を初期化
  rngp = ""
  Set axo = Nothing
End Sub
'---------------------------------------------------------------

≪質問≫
ボタンを押し間違えた場合のトラップを考えなければなりません。
セル(B47:AU47)にあるデータが、何月のデータなのか知る手掛かりは何かありますか?
例えば、データをロードした時にセルA1に月数が入力される、とかいうようなことがあればよいのですが。

12個の月別ボタンを、1個にまとめた方が良いと思うのですがどうでしょうか。
作業性とかボタンの押し間違えを防止する意味からまとめた方が良いように思います。
私の考えを押しつけている訳ではありません。ご自分が良いと思うようにしてください。

この回答への補足

xls88さん、今晩は!
すごいです。
新たなコード試させて頂きました。
驚きです。ありがとうございます。
又内容まで説明して頂き感謝しております。
快適に動作してます。
今後のレベルアップの為にも勉強させていただきます。
それから、月別のコマンドボタンのカラー変更は計算シートが別シートなので、コピペが終わっても、変更されたままのほうが客観的に重複防止になるかなと考えてます。(1月から12月の全ての入力が終わったのちに、一括でコマンドボタン(クリアー)でカラーを戻すのが自分的には良いのかなと思ってます。)

それから、質問があるのですが、コピペされた場所に条件付き書式を入れようと思っています。
そこで、数値だけを貼り付ける仕様にしたいと思ってます。
(PasteSpecial Paste:=xlPasteValues )をどの様な形でWorksheets("計算シート").Range("B47:AU47").Copy Worksheets("計算シート").Range(rngp)に移植すれば良いのでしょうか?

さてxls88さんからの質問について!
・何月のデータなのか知る手掛かりは何かありますか?
ロードされるデーターは必要とされる数値データーをダイレクトに出力されたファイルから吸い出してますので、複数のファイルが混ざってしまたのをチョイスして開いた場合、まったく解らなくなるのが現状です。
現状での対処法は月日別にフォルダに仕分けされてるデーターを今回のファイルが入ってるフォルダーに入れてロードする事で月日を把握して回避してます。
データーは、同じフォルダーに入ってなければ、ロードされない仕様になってます。
この件についての今後の課題はファイルをダイアログボックスで開いてロードさせる事で複数のフォルダーを開かず処理をする事を考えてます。・・・・夢です。
次に
・12個の月別ボタンを、1個にまとめた方が良いと思うのですがどうでしょうか。
すみません。イメージがわかないです。
ユーザーホーム等にボタンをちりばめると言う事でしょうか?
毎回長くなり大変申し訳ありません。
ご面倒御掛け致します。

補足日時:2008/09/17 22:42
    • good
    • 0

最初に戻りましたね。


ひな型は既に提示しましたが、その後の応答でわかったことを加味して再掲します。
ただし、解り易いように、コピーと貼り付けのみの機能にしてあります。
上手く動くようになってから、ボタンの色を変えるとか、その他の機能を付け加えていきたいと思います。
あるいは仕様の変更を提案したいと思います。
その前に、変数の受け渡しが上手くできないことには話になりません。

'------------------ここからシートモジュール-------------------------
Dim rngp As String '貼り付け先セル番地

Private Sub CommandButton1_Click() '1月
  '★1月データの貼付け先セル番地をセット
  rngp = "A81"
  '★コピー
  Worksheets("入力シート").Range("B47:AU47").Copy
End Sub

Private Sub CommandButton2_Click() '2月
  rngp = "A80"
  Worksheets("入力シート").Range("B47:AU47").Copy
End Sub

Private Sub CommandButton13_Click() '貼り付け
  '★値がセットされていない場合ここで抜ける
  If rngp = "" Then
    MsgBox "貼り付け先セル番地がセットされていません。"
    Exit Sub
  End If
  '★貼付け
  With Worksheets("計算シート")
    .Paste .Range(rngp)
  End With
  '★コピーモード解除
  Application.CutCopyMode = False
  '★変数を初期化
  rngp = ""
End Sub
'-------------------------------------------------------------------

>※現状報告
>現在、変数宣言位置で止まってしまってます。
”止まってしまってます。”とはどういう状況でしょうか?
何かエラー表示されませんか?
エラー表示されるなら、その内容を教えてください。

>↓モジュールの先頭に記述すると、モジュールの先頭に仕切り線が入りますが問題は無いのでしょうか?
全く問題ありません。
    • good
    • 0
この回答へのお礼

xls88さん、ありがとうございます。
無事動作致しました。
最初はやはり、格納出来ませんでした。
問題を探す事もが出来ず、一度ソースコードをすべて削除し、新たに1月と2月ボタンそして貼り付けボタンだけを作成し、実行したところ、動作致しました???。
無事動作が出来ましたので、2月以降のボタン作成してみます。
ありがとうございます。
又機能の追加及仕様変更など、ご教授頂けるとの事、図々しいとは思いますが、VBAの勉強にもなりますし宜しくお願い致します。
それから、教えて頂きたいのですが、上達のコツや参考になるVBAの図書など有りましたら、教えて頂けたら、幸いです。
もうしばらくお付き合い頂きます様宜しくお願い致します。

お礼日時:2008/09/15 23:45

補足を見ても、プロジェクトの全容が掴めません。



入力シートに、CommandButtonは何個あるのですか?
各々のCommandButtonの役割はどのようになっていますか?
CommandButton名とその役割を、すべて列挙して、ありのままを説明していただけないでしょうか。

≪例≫
CommandButton1
セル(B47:AU47)をクリップボードに格納及(計算シート)の行数選択
1月用
CommandButton2
・・・・・・・・・・・・・
CommandButton3
格納された値を("計算シート")へ貼り付け

この回答への補足

xls88さんお世話になります。
プロジェクトの全容説明が上手くなく、お手数お掛けして申し訳ありまん。
以下、入力シートのコマンドボタンの詳細です。

コマンドボタンの割り当てが一部バラバラになっていたので、整理しなおしました。
これで最終になります。
コマンドボタン16個から入力シートは構成してます。

・CommandButton1(1月)
セル(B47:AU47)をクリップボードに格納及(計算シート)の(A81)行数選択

・CommandButton2(02月)
セル(B47:AU47)をクリップボードに格納及(計算シート)の(A80)行数選択

・CommandButton3(03月)
セル(B47:AU47)をクリップボードに格納及(計算シート)の(A79)行数選択

・CommandButton4(04月)
セル(B47:AU47)をクリップボードに格納及(計算シート)の(A78)行数選択

・CommandButton5(05月)
セル(B47:AU47)をクリップボードに格納及(計算シート)の(A77)行数選択

・CommandButton6(06月)
セル(B47:AU47)をクリップボードに格納及(計算シート)の(A76)行数選択

・CommandButton7(07月)
セル(B47:AU47)をクリップボードに格納及(計算シート)の(A75)行数選択

・CommandButton8(08月)
セル(B47:AU47)をクリップボードに格納及(計算シート)の(A74)行数選択

・CommandButton9(09月)
セル(B47:AU47)をクリップボードに格納及(計算シート)の(A73)行数選択

・CommandButton10(10月)
セル(B47:AU47)をクリップボードに格納及(計算シート)の(A72)行数選択

・CommandButton11(11月)
セル(B47:AU47)をクリップボードに格納及(計算シート)の(A71)行数選択

・CommandButton12(12月)
セル(B47:AU47)をクリップボードに格納及(計算シート)の(A70)行数選択


・CommandButton13(貼付)
格納された値を選択された(計算シート)へ貼り付け

・CommandButton14(クリアー)
CommandButton1~CommandButton12のクリック後のボタン背景を一括初期値にもどす。

・CommandButton16(ロード)
計測データーをロード(B47:AU47)

※現状報告
現在、変数宣言位置で止まってしまってます。
↓モジュールの先頭に記述すると、モジュールの先頭に仕切り線が入りますが問題は無いのでしょうか?
何か設定がありますか?

Dim rowup As Long
-------------------------------------------
Private Sub CommandButton1_Click() '(1月)

お時間を取らせて申し訳ありません。
宜しくお願い致します。

補足日時:2008/09/15 11:16
    • good
    • 0

>\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\


>Private Sub CommandButton1_Click() '(1月)
>Dim rowup As Long '★(1)
>
>Worksheets("入力シート").Range("B47:AU47").Copy 'コピーします。
>rowup1 = ("81") '貼り付け先の行数をセット '★(2)
>CommandButton4.BackColor = RGB(255, 215, 0)'カラー変更 '★(3)
>End Sub

★(1)の変数宣言位置が違っています。
プロシージャ内ではなく、モジュールの先頭に記述するように何度も申し上げています。
私が提示したコードは最初からそのように記述して提示してあります。
Sub~End Sub(プロシージャ)の内側に書いてはいけません。
モジュールの先頭(上部)、Sub~End Sub(プロシージャ)の外側に記述し直してください。
ここで宣言することで、同じモジュール内に記述された他のプロシージャと共通利用できるようになります。
つまり、
★(2)でセットした値が、もうひとつの貼り付け用プロシージャに共通利用されます。
しかし、
rowup1 = ("81")
等と名前を変えていては、他のプロシージャでは認識されません。
rowup = "81"
というように、同じ名前を使わなければなりません。
()で囲む必要は無いとおもいます。

≪正≫
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Dim rowup As Long '★(1)
Private Sub CommandButton1_Click() '(1月)

Worksheets("入力シート").Range("B47:AU47").Copy 'コピーします。
rowup = "81" '貼り付け先の行数をセット '★(2)
CommandButton4.BackColor = RGB(255, 215, 0)'カラー変更 '★(3)
End Sub

取りあえず、ここまでの事をよく理解してください。お願いします。
長くなるのでコメントを分けます。
    • good
    • 0

仕様が変わったようですね。


ANo.3で示したサンプルコードを少し説明します。

'----------ここからモジュール---------------------------
'モジュールの先頭(上部)で変数を宣言します。
Dim row As Long '貼り付け先の行数を格納する変数

Private Sub CommandButton1_Click() 'プロシージャの始まり(1月用)
  Worksheets("入力シート").Range("B47:AU47").Copy 'コピーします。
  row = 1 '貼り付け先の行数をセット
End Sub 'プロシージャの終了
 ・
 ・2~12月用コマンドボタンのプロシージャ
 ・
Private Sub CommandButton13_Click() '貼り付け用
  If row = 0 Then Exit Sub '行数がセットされていない場合、以後を実行せず、ここで終了
  With Worksheets("計算シート")
    .Paste .Cells(row, "A") 'A列のrow行セルに貼り付け
  End With
  Application.CutCopyMode = False 'コピーモード解除
  row = 0 '変数をリセット
End Sub
'----------ここまでモジュール---------------------------

動作は
CommandButton1をClickすると、セルB47:AU47がCopyされ
変数rowに 1 がセットされます。
CommandButton13をClickすると、Cells(row, "A")つまりセルA1にPasteされます。

今気付いたのですが、変数rowはすべてrowpとでも変更してください。
(RangeオブジェクトのRowプロパティと同じでは気持ち悪いです。)
変数rowp(rowを変更)に格納する値は、実際に合わせて変更する必要があります。

新しい仕様を検討します。
>Private Sub CommandButton1_Click()
>Dim row As Long
>row1 = "A81"
>row2 = "A80"
>row3 = "A79"
>row4 = "A78"
>row5 = "A77"
>row6 = "A76"
>row7 = "A75"
>row8 = "A74"
>row9 = "A73"
>row10 = "A72"
>
>If row = 0 Then Exit Sub
>With Worksheets("計算シート")
>.Paste .Cells(row, "A")
>End With
>Application.CutCopyMode = False
>row = 0
>
>CommandButton3.BackColor = RGB(255, 0, 0)

質問があります。
CommandButton1をClickするとPasteして、CommandButton3のBackColorを変更するのでしょうか。
Copyはどこでするのですか?
CommandButton1とCommandButton3の関係はどんなルールがありますか?

この回答への補足

遅くにも関わらず、ご丁寧にご指導下さり感謝します。
まずご質問の返答から書かせて頂きます。
>CommandButton1をClickするとPasteして、CommandButton13のBackColorを変更するのでしょうか。
CommandButton13のカラー変更はありません。
補足:CommandButton1のClickでのカラーの変更仕様は、Pasteを表す表示ではなく、単なる入力済を表示していますので、単純に1月は入力済だな~と("入力シート")から確認しているだけです。
Colorを戻す時は単純に別に作ってある、リセットボタンCommandButton5で初期値に戻してます。)

>CommandButton1とCommandButton3の関係はどんなルールがありますか?
xls88さんのコードを元に、CommandButton1は、セル(B47:AU47)をクリップボードに格納及(計算シート)の行数選択、
CommandButton3は、格納された値をCommandButton1で選択された("計算シート")の行へ貼り付けです。
本来ならCommandButton1でCopy&Pasteをするのですが、このシートは計測器から数値データーをロードさせてます。
1月~12月までの一括でのデーターの読み込みはせず、一か月単位で処理致しますので(入力シート)のコピー元セル=ロードデーターの出力先(B47:AU47)は一定です。
そのため、単にCopy&Pasteでは無く、Paste先の重複防止や配列間違いを視野的に防止する為、再確認する意味を含め一呼吸置いて、CommandButton1のカラー変更をし、CommandButton13でPasteさせをする仕様にしてます。
回答がへたですみません。

本題コードですが、まだ失敗に終わっています。
自分のレベルの低さに悲しみを覚えるくらいです。
xls88さん説明で理解しているつもりなのですが、どうしてもうまく行かないのです。CommandButton1でクリップボードにCopyはされてますが
Paste先rowup=1(1月)がsetされて無い為Paste出来ない様です。
何が原因なのでしょうか?

お時間が有る時で結構ですので宜しくお願いいたします。
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
※ Private Sub CommandButton1_Click()(1月)
Dim rowup As Long

Worksheets("入力シート").Range("B47:AU47").Copy 'コピーします。
rowup1 = ("81") '貼り付け先の行数をセット

CommandButton4.BackColor = RGB(255, 215, 0)'カラー変更

End Sub

※ Private Sub CommandButton13_Click()
Dim rowup As Long
If rowup = 0 Then Exit Sub '行数がセットされていない場合、以後を実行せず、ここで終了
With Worksheets("計算シート")
.Paste .Cells(rowup, "A") 'A列のrow行セルに貼り付け
End With
Application.CutCopyMode = False 'コピーモード解除
rowup = 0 '変数をリセット
End Sub

補足日時:2008/09/14 12:44
    • good
    • 0

コマンドボタンの種類が明確にされていません。


コントロールツールボックスのコマンドボタンと仮定して回答します。

下記のようなことでどうでしょうか。
各ボタンをクリックする度に、ボタンに対応した値が、セットされるようにしています。
CommandButton13が貼り付け用のボタンです。
変数は、モジュールの上部で宣言します。

Dim row As Long

Private Sub CommandButton1_Click()
  Worksheets("入力シート").Range("B47:AU47").Copy
  row = 1
End Sub
Private Sub CommandButton2_Click()
  Worksheets("入力シート").Range("セル範囲").Copy
  row = 2
End Sub
Private Sub CommandButton3_Click()
  Worksheets("入力シート").Range("セル範囲").Copy
  row = 3
End Sub

Private Sub CommandButton13_Click()
  If row = 0 Then Exit Sub
  With Worksheets("計算シート")
    .Paste .Cells(row, "A")
  End With
  Application.CutCopyMode = False
  row = 0
End Sub

違うようなら、現状上手くいっていないコードで結構ですから掲載してください。
あと、余談ですが
先に回答をされたfujillinさんに、結果の良し悪しに係わらず、何らかの返事を差し上げるべきではないでしょうか。

この回答への補足

ありがとうございます。
早々チャレンジしてみます。
またご指導ありがとうございます。

補足日時:2008/09/13 20:25
    • good
    • 0
この回答へのお礼

チャレンジしてみたのですが、変数の宣言方法が出来ず、ご丁寧に教えて頂いたのですが、失敗でした。
Copyの部分は上手く行きましたがペースト部分にコピー場所の宣言でつまずいてしまいました。
問題はペースト場所(row1~row12)宣言方法だと思いますが・・・自分なりに本やNETで調べて見たのですが、マッチングする内容が見つけられず、お礼を兼ねて投稿させて頂きました。

下記載コードがxls88さんから、教えて頂いたコードにペースト場所の宣言を加え、クリックするとペーストされましたの表示の変わりにボタンの色を変える仕組みです。

大変お手数だと思いますが、ご指導願えませんでしょうか、宜しくお願い致します。

Private Sub CommandButton1_Click()
Dim row As Long
row1 = "A81"
row2 = "A80"
row3 = "A79"
row4 = "A78"
row5 = "A77"
row6 = "A76"
row7 = "A75"
row8 = "A74"
row9 = "A73"
row10 = "A72"

If row = 0 Then Exit Sub
With Worksheets("計算シート")
.Paste .Cells(row, "A")
End With
Application.CutCopyMode = False
row = 0

CommandButton3.BackColor = RGB(255, 0, 0)

お礼日時:2008/09/14 00:00

質問に情報がないので、回答も曖昧でわかりにくいものになりますが・・・



「別のマクロ」でセルを選択した状態から、当該マクロがスタートするなら、ターゲットは選択状態にあるセルということになります。
「別のシート」はどこかで決っているのでしょうから、そのシート名からシートを特定することが可能です。
「貼り付けるセル」の位置は「選択ボタン」によって決るとのことですが、どこにボタンがあるか不明なので、とりあえず"A1"とでもしておきましょう。

Selection.Value = Worksheets(別のシート名).Range("A1").Value
で良いのでは??
    • good
    • 0
この回答へのお礼

ご返答遅くなり申し訳ありません。
今回は後者さまのソースコードでチャレンジする事にしました。
私の情報量が少なすぎてお手数おかけいたしました。
又次回機会がございましたら、ご指導宜しくお願い致します。

お礼日時:2008/09/13 20:31

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