マクロ【シート名に対応した文字を挿入・置換】
御世話になります。
【D:\test】内に2つのエクセルファイル(Excel2003)があります。
※1つ目のファイル名は【季節別表.xls】。
中には一番左端のシート名は【起動シート】で、その横は【spring】【summer】【autumn】【winter】という名前のシートが
あり、すべてのシートにはサンプルの表がある。
※2つ目のファイル名は【データシート.xls】。
中にはシート名【2008】のみが存在。
シート内には下記のような文字を入力している。
セルB2:シート名
セルC2:季節名
セルD2:気候
セルB3:spring
セルC3:春
セルD3:暖かい
セルB4:summer
セルC4:夏
セルD4:熱い
セルB5:autumn
セルC5:秋
セルD5:涼しい
セルB6:winter
セルC6:冬
セルD6:寒い
B2・C2・D2はシートの列が何の項目であるかがわかるために入力。
B3~6は【季節別表.xls】に存在するシート名を縦に入力。
悩んでいるのは【季節別表.xls】のシート名【起動シート】内にあるマクロボタンに入れるマクロです。
理想の処理の流れですが、
【データシート.xls】のセルB3のspringというシート名が【季節別表.xls】にあればそのシートに
セルB3の右隣であるセルC3の文字列【春】を取得し、【季節別表.xls】のシート名【spring】のセルD35の文字列である
【今年の季節名は入学シーズンである。】の【季節名】と置換。
また、セルC3の右隣であるセルD3の文字列【暖かい】を取得し、
【季節別表.xls】のシート名【spring】のセルF70の文字列である【気候は気候状況。】の文字列【気候状況】と置換。
この処理が終わったら、今度は次の行を同じような処理を続け、最終的にはB列が空行になるまで続けられるマクロは
可能でしょうか?
何か簡単なサンプルコードがあれば助かります。
宜しくお願い致します。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
説明は丁寧に長く書いてあるが、読む側にはわかり難い。
下記に別の説明例を挙げてみる。参考にしてみて。
持論だが、説明とプログラム作成は密接に関連していると思う。
A.季節別表ブック
起動シート
Springシート
Summerシート
Autumnシート
Winterシート
B.データシートブック
2008シート
ーー
情報はデータシート(ブック)ににあり
その2008シートの
B列 C列 D列
シート名 季節名 気候
spring 春 暖かい
summer 夏 熱い
autumn 秋 涼しい
winter 冬 寒い
(このようにエクセルの表式に書くと直観的に判りやすいよ)
=========
処理したいこと
(1)「季節別表ブック」を開く(データシートブックも開く)
(2)「季節別表ブック」の各シート名を調べる
(3)その1つのシート名が、データシートブックの2008シート名のB列にあるか調べる。(あるはずしょうね。)
(4)2008シートのB列でシート名が見つかった行の、C列の文字列(データ)で、季節別表のシートのD35セルの一部の特定の文字列を置換
(5)見つかった行のD列の、文字列(データ)で、季節別表のシートのD35セルの文字列の一部を置換
=====
コード作成の参考事項
(1)はVBAの本にもWEBにも書いてある。
(2)は下記を参考に
Sub test02()
Dim sh As Worksheet
For Each sh In Worksheets
MsgBox sh.Name
Next
End Sub
MsgBox sh.Nameのところに(3)(4)(5)の処理を入れる。
(3)は上記で得たシート名がForNextでB列の各行を等しいかIF文で聞いて、一致した行を見つける。(この際は総当り法にしておくのが無難。)
(4)(5)の置換は、置換操作をして、マクロの記録を採ってみて考えればわかる。
ーーー
(6)1つのシートしか対象にしてないVBAに慣れた者には、難しいのは、2つのブックや多数のシートを扱うので、シートやセルを指定するとき、上位のオブジェクトのブックやシート名を明確にエクセルに判るように記述しないとうまく行かない。
ーーー
上記(6)を含め、質問の書き振りからして、質問者には前途多難と思うが、1つづつやるよりほかなかろう。
No.3
- 回答日時:
Sub test()
Dim wsDATA As Worksheet
Dim ws As Worksheet
Dim r As Range
'データシート.xlsの一番左のワークシート
Set wsDATA = Workbooks("データシート.xls").Worksheets(1)
With wsDATA
'データシート.xlsの一番左のワークシートのB3~B列の最終まで実行する
For Each r In .Range(.Range("B3"), .Cells(Rows.Count, 2).End(xlUp))
On Error Resume Next
'【spring】【summer】【autumn】【winter】という名前のシートをセット
Set ws = ThisWorkbook.Worksheets(r.Value)
On Error GoTo 0
'無事にシートが見つかれば、単語の置換を実行
If Not ws Is Nothing Then
ws.Range("D35").Value = Replace(ws.Range("D35").Value, "季節名", r.Offset(, 1).Value)
ws.Range("F70").Value = Replace(ws.Range("F70").Value, "気候状況", r.Offset(, 2).Value)
End If
Next
End With
End Sub
ご参考程度に。
No.2
- 回答日時:
Excel(エクセル) VBA入門:セル範囲の指定方法
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/v …
Excel(エクセル) VBA入門:繰り返し処理(For~Next,Do~Loop)
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/v …
Replace関数
http://www.officetanaka.net/excel/vba/function/R …
ブック・シートが存在するか調べる
http://www.officetanaka.net/excel/vba/tips/tips1 …
ご参考まで。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Excel(エクセル) 条件に合った数値の合計を表示させたい関数と条件指定の方法 3 2023/05/13 16:07
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Visual Basic(VBA) VBA 検索と入力 Excel ブック ぶぶぶ シート ししし 列V 検索対象の列です 最終行は、お 6 2023/05/17 01:40
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/03/02 08:40
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/25 16:07
- Excel(エクセル) エクセル VBA セルの結合 2 2022/09/07 11:48
- Excel(エクセル) Excel>マクロ>特定のセルで同じ情報が登録されている行を1行にまとめたい(文字連結) 6 2023/01/05 16:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
特定の文字を含むシートだけマ...
-
VBA 入力月で該当シートを選択...
-
VBA 存在しないシートを選...
-
Excel VBA 複数行を数の分だけ...
-
別のシートを参照して計算する方法
-
ユーザーフォームに入力したデ...
-
実行時エラー1004「Select メソ...
-
excelのマクロで該当処理できな...
-
【ExcelVBA】全シートのセルの...
-
実行時エラー'1004': WorkSheet...
-
Excel チェックボックスにチェ...
-
セルのコピーで「オブジェクト...
-
エクセルVBAでダブルクリックを...
-
複数シートに色付きセル(条件つ...
-
重複するidをデータごとにまと...
-
一括印刷マクロ シート名を数字...
-
VBA 最終行まで数式をコピーする
-
Excel マクロについての相談
-
エクセルのシート名変更で重複...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
【ExcelVBA】全シートのセルの...
-
同じ作業を複数のシートに実行...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
XL:BeforeDoubleClickが動かない
-
ExcelVBA シート名を複数セルか...
-
実行時エラー'1004': WorkSheet...
-
VBA 存在しないシートを選...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ブック名、シート名を他のモジ...
-
【Excel VBA】Worksheets().Act...
-
ExcelのVBAのマクロで他のシー...
-
エクセルのシート名変更で重複...
-
特定の文字を含むシートだけマ...
-
シートが保護されている状態で...
-
Excel マクロについての相談
-
VBA 検索して一致したセル...
おすすめ情報