[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『各シートに貼り付け』(和代)
お世話になっています。
シート名:”給与集計”にA1:aw51迄の元データがあります。データ内容は、アルバイトの支払で日付、名前、出勤、退勤時間、時給、金額等です。
他のシート名が"1日"(1は、全数字にしています)から"31日"までの31シートがあります。
シート名:"給与集計"で1日分が完了すれば、シート名:1日に貼り付け、2日分が終われば2日に貼り付け、31日が終われば31日のシートに貼り付けします
下記のVBAを作成したのですが、これであればシート名:”給与集計”の下記シートコードを31日分変更しなければいけません(フォームコントロール31個分作成)
教えて頂きたいのは、マクロボタンを押せばMsgBoxが出て何日のシートに貼り付けしますか?私が1(一日の意味)と入力すれば、1日でいですか(31と入力すれば31日でいいですか)?YES or NOの選択画面が出てきてそれのどちらかをクリックします。YESを押せばシート名”1日”に貼り付けされるように下記コードを追加修正して頂きます様にお願い致します。
Sub prcCellCopy給与集計1日()
Worksheets("給与集計").Range("a1:aw51").Copy Worksheets("1日").Range("A1").PasteSpecial
< 使用 Excel:Excel2007、使用 OS:unknown >
新規ブックの標準モジュールに以下のコードを貼り付けて実行してみてください。
Option Explicit Sub test() Const cancel As Variant = "False" Dim dd As Variant dd = Application.InputBox("何日のシートに貼り付けしますか?", "シート選択", , , , , , 1) If dd <> cancel Then If MsgBox(StrConv(dd, vbWide) & "日 ですか?", vbOKCancel) = vbOK Then MsgBox "処理開始" End If End If End Sub
testを実行してみてください。入力要求ダイアログが表示されます。
数字を入力してください(数字以外は入力不可になっています、InputBoxメソッドを調べてください)。
数字が入力されると、再度確認メッセージが表示されます。
こんなコードですよね?
後は、入力は、数字なら何でも入力できますから、これを1〜31に限定するためにチェックするか?
そのまま、本処理を実行して、エラートラップを拾うか(ないシートを指定すればエラーになりますから・・・On Error Resume Next を調べる)? どちらかの処理が必要です。
よくコードを調べて見てください。
(ichinose@明日から、また仕事) 2014/08/17(日) 17:54
「こんなコードですよね?」−−私:その通りです。喜んで実行しましたら、貼り付け先に何のデータもコピーされていません。?数字を入力してください、という事は、シート名も例えば"1日"の1は全角ではなく
半角の1ですよね、当初の質問で「他のシート名が"1日"(1)は、全数字にしています」と書いていましたが数字を入力してくださいとありましたので、シート名の日にちを半角の数字に置きなおしたのですが、
何もコピーされていませんでした。
私のどこが違っているのでしょうか?
教えて下さい。
(和代) 2014/08/17(日) 18:55
(和代) 2014/08/17(日) 19:17
こんばんは、横入り失礼します。
素人コードです、しかもシート名入力が 1or2or3でなく、1日、2日、3日・・・・・・31日となりますが。
Sub prcCellCopy給与集計1日() Dim sht As Variant Dim v As Long sht = InputBox("シート名?") v = MsgBox(sht & "でいいですか?", vbYesNo) If v = vbYes Then Worksheets("給与集計").Range("a1:aw51").Copy Worksheets(sht).Range("A1").PasteSpecial End If End Sub (ところてん) 2014/08/17(日) 20:04
実行しましたら、実行時エラー’9’インデックスが有効範囲にありませんと出ます。シート名は半角の数字と日(例えば1月)にしています−−−−解りませんが、Sub prcCellCopy給与集計1日()の給与集計1日の1日
は必要ですか?
(和代) 2014/08/17(日) 20:33
>シート名は半角の数字と日(例えば1月)にしています
ということですので
InputBox("シート名?")に入力するのを半角の数字と日にしてください。
>給与集計1日の1日 は必要ですか?
Sub prcCellCopy給与集計1日()←1日の有無は問題ないです。
(ところてん) 2014/08/17(日) 20:52
ichinose@明日から、また仕事様も有難うございました。
(私の知識不足で申し訳ございませんでした。)
(和代) 2014/08/17(日) 21:30
もう見ていないかも知れませんが?
下記コードに変更すればInputBox("シート名?")入力が 半角の数字だけでOKとなります。
Sub prcCellCopy給与集計1日() Dim sht As Variant Dim v As Long sht = InputBox("シート名?") v = MsgBox(sht & "日でいいですか?", vbYesNo) If v = vbYes Then Worksheets("給与集計").Range("a1:aw51").Copy Worksheets(sht & "日").Range("A1").PasteSpecial '入力された^^^^^^^^^^半角数字+日となります。 End If End Sub
(ところてん) 2014/08/18(月) 11:01
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.