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も見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
VBA シート名が一致した場合の転記内容について
Visual Basic(VBA)
-
VBA セルの値と同じ名前のシートにデータを補填するやり方を教えてください エクセルのブックがありま
Excel(エクセル)
-
エクセルマクロでシート名を条件にする方法
Excel(エクセル)
-
-
4
特定の文字を含むシートだけマクロ処理をしたい
Visual Basic(VBA)
-
5
【VBA】指定した検索条件に一致したら別シートに転記したい
Visual Basic(VBA)
-
6
セルの値と同じ名前のシートをアクティブにするには?
Excel(エクセル)
-
7
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
8
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
9
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
10
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
11
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
12
同じ作業を複数のシートに実行させるにはどうしたらいいのでしょうか
Visual Basic(VBA)
-
13
VBAでシート名を選んで転記する方法
Visual Basic(VBA)
-
14
VBA セルの値と同じ名前のシートにデータを貼り付けするやり方を教えてください
Excel(エクセル)
-
15
EXCEL VBA 指定したファイルが存在しない場合メッセージボックスを表示させる
Access(アクセス)
-
16
特定の複数のシートに同じ処理をさせたい
Excel(エクセル)
-
17
VBA 数値を文字列として貼付したい
Excel(エクセル)
-
18
【VBA】2つのシートの値を比較して条件一致したら、同じ行の隣の値を別ブックへ転記したいです。 VB
Visual Basic(VBA)
-
19
EXCEL VBA で指定した範囲に入力があるかどうか?
Visual Basic(VBA)
-
20
エクセルVBAのIf,Then 構文でOr条件とAnd条件の結合方法?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
同じ作業を複数のシートに実行...
-
VBAで大量のファイルをシート名...
-
【ExcelVBA】全シートのセルの...
-
Excel VBA 複数行を数の分だけ...
-
ブック名、シート名を他のモジ...
-
ユーザーフォームに入力したデ...
-
エクセルのマクロについて教え...
-
実行時エラー1004「Select メソ...
-
XL:BeforeDoubleClickが動かない
-
ExcelのVBAを使い、複数シート...
-
IFステートの中にWithステート...
-
【ExcelVBA】動的にボタン、ボ...
-
エクセルのマクロでアクティブ...
-
VBAで指定シート以外の選択
-
エクセルのシート名変更で重複...
-
実行時エラー'1004': WorkSheet...
-
セルの値によって、シート見出...
-
VBA ユーザーフォーム上のチェ...
-
Excel VBA マクロ 先頭行の固定...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
【ExcelVBA】全シートのセルの...
-
同じ作業を複数のシートに実行...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
ExcelVBA シート名を複数セルか...
-
XL:BeforeDoubleClickが動かない
-
実行時エラー'1004': WorkSheet...
-
VBA 存在しないシートを選...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ブック名、シート名を他のモジ...
-
ExcelのVBAのマクロで他のシー...
-
【Excel VBA】Worksheets().Act...
-
エクセルのシート名変更で重複...
-
特定の文字を含むシートだけマ...
-
シートが保護されている状態で...
-
Excel マクロについての相談
-
VBA 検索して一致したセル...
おすすめ情報