
No.3ベストアンサー
- 回答日時:
#2です
コードを拡大してよくよく見てみました。。。
こんな感じかな、、
Filename:=は暫定値
Dim x As Workbook
Dim thisSheet As Worksheet
Dim i As Long
Set thisSheet = ActiveSheet
Set x = Workbooks.Open(Filename:="XXX", ReadOnly:=True)
With Worksheets("日報用")
.Activate
.Calculate
End With
If _
thisSheet.Name = "【3月】業務処理" _
Or thisSheet.Name = "【6月】業務処理" _
Or thisSheet.Name = "【9月】業務処理" _
Or thisSheet.Name = "【12月】業務処理" Then
For i = 6 To 28
If thisSheet.Cells(i, 1).Value = x.Worksheets("日報用").Range("B3").Value Then
thisSheet.Cells(i, "AJ").Resize(, 3).Value = x.Worksheets("日報用").Range("C6:E6").Value
End If
Next
Else
For i = 6 To 28
If thisSheet.Cells(i, 1).Value = x.Worksheets("日報用").Range("B3").Value Then
thisSheet.Cells(i, "AI").Resize(, 3).Value = x.Worksheets("日報用").Range("C6:E6").Value
End If
Next
End If
x.Close SaveChanges:=False
End Sub
ループは分けていますが、、参考程度で
見づらい資料を細かく見ていただき感謝いたします。今日勤務先で修正したところやりたいことがすんなり実行できました。
IfとForの組み合わせ方、Elseで<それ以外のシート名>の指定は不要なこと、コピーして値貼り付けではなくValueでできること、Resizeという記述方法等大変勉強になりました。また機会がありましたら、よろしくお願いいたします。ありがとうございました。
No.2
- 回答日時:
こんにちは
なさりたい事とコードを拝見すると
先ず直すべき点があるように思います。
Dim x As Workbook
Set x = Workbook.Open(Filename:="XXX", ReadOnly:=True)
’以下は休暇予定表ブックに日報用シートが存在しないとエラーになるかと、、
With Worksheets("日報用")
.Activate
.Calculate
End With
'Set x =は不要かな、、、
これ以降にシート選択もしくはActivateしていないので
ThisWorkbook.ActiveSheet.Name は "日報用"となっています。
また、ThisWorkbookとX(休暇予定表ブック)をよく考えてみてください
ThisWorkbookはVBAが実行されているBookです。
Xは開いた(休暇予定表)ブックです。
コードはコピペがうれしいな、、、読みにくいのと、手書きするの面倒に感じる方少なくないと思いますよ
回答ありがとうございます。職場で使用していてコードが送れず、画像にしましたが、わかりづらくて申し訳ありません。再度打ち直して質問します。
No.1
- 回答日時:
こんにちは
すみませんが、直接の回答ではありません。
ご質問の文章と提示のコードからでは、具体的に何をなさりたいのかさっぱりわかりません。
ご提示のコードは「ActiveSheet」に対する処理だけしか書いてないようですけれど、ActiveSheetはどうやって決まっているのでしょうか?
ボタンなどを押してVBAを起動しているのなら、そのボタンがあるシートでしょうけれど、そうでない場合は不確定なシート(=たまたまアクティブになっていたシート)の可能性もありますし・・・
決まっているのなら、いちいちシート名を判定しているのが不自然ですし、決まっていないのならなぜActiveSheetだけが対象なのか理解できません。
もしかすると、「4つのシートに値を転記したい」のでしょうか?
それなら、Workbooks("シート名") で直接指定する方が確実です。
(転記先のシートは必ず存在することが保証されているものと想像しますので)
ループ内を見ると、6~28行迄同じ値を転記しているように見受けられますけれど、本当にそれが目的なのでしょうか?
などなど・・・
不明点が多すぎて、なんともわかりかねる状態と言えます。
ブック名、シート名、セル位置を明示して、かつ、読んだ人に「なさりたいことが具体的にわかる」ように質問なさった方が、的確な回答がつくものと思いますよ。
つたない質問で申し訳ありません。回答ありがとうございます。毎日ActiveSheetのボタンをクリックして情報を入力し他部署にメールで送るということをしています。別ファイルの出勤簿から別シートに、日付で人数を集計してあり、その日付と、アクティブシートの日付の同一の行に転記するように考えました。月によって転記先セルが違うためシート名(X月)で条件分岐するのかと思いましたが、おっしゃるように全体がわかる資料をまとめて再度投稿するようにいたします。よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) Excel VBAの書き方 1 2022/03/28 12:09
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) 【VBA】Excelで罫線を引きたい 3 2022/07/14 12:04
- Visual Basic(VBA) VBA エクセル 条件の設定 1 2022/03/28 10:24
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) VBAで最新のデータを別シートに転記する方法をお教えください。 3 2022/04/07 19:20
- Excel(エクセル) Excelで、別シートの表のステータスに伴った動的な自動転記をしたいです。 2 2023/06/14 15:56
このQ&Aを見た人はこんなQ&Aも見ています
-
VBA シート名が一致した場合の転記内容について
Visual Basic(VBA)
-
エクセルマクロでシート名を条件にする方法
Excel(エクセル)
-
VBA セルの値と同じ名前のシートにデータを貼り付けするやり方を教えてください
Excel(エクセル)
-
-
4
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
5
特定の文字を含むシートだけマクロ処理をしたい
Visual Basic(VBA)
-
6
セルの値と同じ名前のシートをアクティブにするには?
Excel(エクセル)
-
7
別ブックをダイアログボックスで指定してそこにあるシートをコピーしたい
Excel(エクセル)
-
8
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
9
複数シート名とブック名が一致する場合内容を転記 VBA
Visual Basic(VBA)
-
10
VBA セルの値と同じ名前のシートにデータを補填するやり方を教えてください エクセルのブックがありま
Excel(エクセル)
-
11
VBAでシートコピー後、シート名が重複している時の処理
Access(アクセス)
-
12
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
13
excelのマクロで該当処理できなければ飛ばして進むにはどうすればよいのでしょうか
Visual Basic(VBA)
-
14
【VBA】シート名に特定文字が入っていたらマクロを実行したいです。
Visual Basic(VBA)
-
15
VBA 別ブックから条件に合うものを転記したいです
Visual Basic(VBA)
-
16
エクセルのシート名変更で重複した時のvbaの処理
Visual Basic(VBA)
-
17
シート名一致すれば印刷、一致しなければメッセージbox
Visual Basic(VBA)
-
18
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
19
excel VBA 2つのシートの特定の列を比較して同じ値のセルがあったらその行を上書きしたい
Excel(エクセル)
-
20
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
excelのマクロで該当処理できな...
-
特定の文字を含むシートだけマ...
-
XL:BeforeDoubleClickが動かない
-
【VBA】シート名に特定文字が入...
-
VBA 存在しないシートを選...
-
Excelマクロのエラーを解決した...
-
エクセルVBA Ifでシート名が合...
-
エクセルのシート名変更で重複...
-
ユーザーフォームに入力したデ...
-
実行時エラー1004「Select メソ...
-
Excel VBA で自然対数の関数Ln...
-
【ExcelVBA】全シートのセルの...
-
エクセル・マクロ シートの非...
-
ExcelのVBAのマクロで他のシー...
-
シートが保護されている状態で...
-
VBAの授業でナンプレを制作して...
-
複数シートに色付きセル(条件つ...
-
ブック名、シート名を他のモジ...
-
実行時エラー'1004': WorkSheet...
-
VBAマクロでシートコピーした新...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelマクロのエラーを解決した...
-
特定の文字を含むシートだけマ...
-
【ExcelVBA】全シートのセルの...
-
ユーザーフォームに入力したデ...
-
excelのマクロで該当処理できな...
-
実行時エラー'1004': WorkSheet...
-
ブック名、シート名を他のモジ...
-
実行時エラー1004「Select メソ...
-
VBA 存在しないシートを選...
-
ExcelVBA:複数の特定のグラフ...
-
エクセルのシート名変更で重複...
-
IFステートの中にWithステート...
-
VBA 検索して一致したセル...
-
ExcelのVBAのマクロで他のシー...
-
XL:BeforeDoubleClickが動かない
-
別のシートから値を取得するとき
-
エクセルVBA Ifでシート名が合...
-
エクセル・マクロ シートの非...
-
シートが保護されている状態で...
-
シート削除のマクロで「delete...
おすすめ情報