
教えてください。
エクセルで、別のシートの値をまとめようと思っています。
コンボボックスを使って、各シートから必要な値を取得したいです。
各シート名は、”201801”、”201712”、”201711”、”201710”・・・ と月ごとの実績が入っています。*4枚目のシートから実績シートです。
A列 B列 C列 D列 ・・・
店舗No 店舗名 売上 人数 ・・・
1 ○○
2 ○○
3 ○○
・ ・
・ ・
こんな感じで各月のシートは、店舗ごとの実績がまとまっています。
1つのシート(”実績推移”)で、
A列 B列 C列 D列 ・・・
店舗No 店舗名 201801 201712 ・・・
1 ○○
2 ○○
3 ○○
・ ・
のように、項目(売上げなど、)ごとにコンボボックスを使って管理したいです。
Private Sub ComboBox3_Change()
Dim lRow As Long '最終行
Dim listN As Long 'コンボボックスのインデックスNo
Dim s1 As Long 'シート数
Dim shN As String 'シート名前
With Worksheets("実績推移")
lRow = Cells(Rows.Count, 2).End(xlUp).Row
listN = ComboBox3.ListIndex
s1 = Worksheets.Count
shN = Worksheets(s1).Name
End With
For s1 = 4 To s1
Worksheets("実績推移").Range(Cells(4, s1 - 1), Cells(lRow, s1 - 1)).Value = _
Worksheets(shN).Range(Cells(2, listN + 3), Cells(lRow - 2, listN + 3)).Value
Next
End sub
最後のところで、エラーとなります。
型も、Cellsの値も間違っては稲井と思うのですが、解決できません。
何卒よろしくお願い致します。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
単に、 Cells(~ とするとその場合はActiveになっているSheetのセルを指します。
それにFor~Nextのループ内で書き込むSheetを変える必要があるのではないでしょうか?
一案ですが検証はしてません。
Private Sub ComboBox3_Change()
Dim lRow As Long '最終行
Dim listN As Long 'コンボボックスのインデックスNo
Dim s1 As Long 'シートのカウンター変数
Dim s As Long 'Sheet用インデックス変数
Dim shN As String 'シート名前
With Worksheets("実績推移")
lRow = Cells(Rows.Count, 2).End(xlUp).Row
listN = ComboBox3.ListIndex
s1 = Worksheets.Count
For s = 4 To s1
shN = Worksheets(s).Name
.Range(.Cells(4, s - 1), .Cells(lRow, s - 1)).Value = _
Worksheets(shN).Range(Worksheets(shN).Cells(2, listN + 3), Worksheets(shN).Cells(lRow - 2, listN + 3)).Value
Next
End With
End Sub
ありがとうございます。
無事に思い通りの動作になりました!!
Csll(~ の場合は、そのシートをactiveにする必要があったのですね。
Rangeの前に、WorkSheets(shN).で十分と思い込んでいました。
その後の Range(~ にも ”Worksheets(shN).” が必要だったとは。
For ~
の後に shN = ・・・ を持ってくるのも、全く気づきませんでした。
いい勉強になりました!!
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルVBAで教えて頂きたいのですが? 2 2022/12/31 20:28
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) VBAで時間(00:00形式)を積算(足し算)したい 1 2022/11/15 17:04
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) ユーザーフォームの書き出しで追加のご相談 ユーザーフォームの値をシートに書き出す際、コードが表示され 2 2022/08/05 10:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA別シートの最終行の次行へ転...
-
マクロの「SaveAs」でエラーが...
-
EXCELのSheet番号って変更でき...
-
アクセスからエクセルへ出力時...
-
VBAで解決した質問ですが、追加...
-
Changeイベントで複数セルへの...
-
VBA 空白行に転記する
-
エクセルでデータの比較をした...
-
EXCEL VBA 転記 条件分岐 新...
-
VBA 別ブックからの転記の高速...
-
楽天RSSからエクセルVBAを使用...
-
VBAで変数の数/変数名を動的に...
-
100万件越えCSVから条件を満た...
-
Excelで横書き50行の漢字テス...
-
【マクロ】実行時エラー '424':...
-
エクセルで離れた列を選択して...
-
Excelで、あるセルの値に応じて...
-
「段」と「行」の違いがよくわ...
-
エクセルで複数のシートのクリ...
-
別ブックをダイアログボックス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELのSheet番号って変更でき...
-
マクロの「SaveAs」でエラーが...
-
マクロ実行後に別シートの残像...
-
VBA 空白行に転記する
-
VBA別シートの最終行の次行へ転...
-
Count Ifのセルの範囲指定に変...
-
【VBA】データを各シートに自動...
-
Changeイベントで複数セルへの...
-
VBAで変数の数/変数名を動的に...
-
VBA 別ブックからの転記の高速...
-
Excel VBA オートフィルターで...
-
【VBA】特定の条件でセルをコピー
-
VBAでEXCELから固定長...
-
Excel2013で切り取り禁止
-
Unionでの他のシートの参照につ...
-
楽天RSSからエクセルVBAを使用...
-
100万件越えCSVから条件を満た...
-
ExcelのVBマクロを、バックグラ...
-
VBA 実行時エラー1004 rangeメ...
-
同じ作業(データコピー・貼付...
おすすめ情報