前提・実現したいこと
ユーザーフォームを使用しておりComboBox1で 1 が選択されている時、CommandButton1を押下し下記の処理を実現したいです。
ダイアログボックスでExcelを選択し
左から8番目のシートをマクロ実行ファイルへ取り込み、rawdataシートとして左から2番目に移動
左から2番目のシートをマクロ実行ファイルへ取り込み、集計シートとして左から3番目に移動
を処理をしたいです。
現状は
左から8番目のシートを取り込み、rawdataシートとして左から2番目に移動
のみ対応できてます。
シートを同時に2つ移動できず困っていますので、ご教示いただけますと幸いです。
該当のソースコード
VBA
1Private Sub CommandButton1_Click() 2 3 Dim filePath As Variant 4 filePath = Application.GetOpenFilename 5 6 Dim wb As Workbook: Set wb = ThisWorkbook 7 Dim wb1 As Workbook 8 9If ComboBox1 = "1" Then 10 11 On Error Resume Next 12 Set wb1 = Workbooks.Open(filePath) 13 Application.Visible = False 14 wb1.Activate 15 wb1.Worksheets(8).Move Before:=wb.Worksheets(2) 16 wb.Activate 17 wb.Worksheets(2).Select 18 Worksheets(2).Name = "rawdata" 19 '指定した列以外の削除 20 Range("A:A,C:D,K:L,O:R").Delete 21 22 Dim colcnt As Integer 23 24 '全列文字列で保存されている数値を数列に変換 25 colcnt = 1 26 While Cells(1, colcnt) <> "" 27 Columns(colcnt).TextToColumns Comma:=True 28 colcnt = colcnt + 1 29 Wend 30 31 On Error GoTo 0 32 If filePath = False Then 33 Exit Sub 34 Else 35 TextBox3.Value = filePath 36 End If 37 Exit Sub 38 39ElseIf ComboBox1 = "2" Then 40 41 On Error Resume Next 42 Set wb1 = Workbooks.Open(filePath) 43 Application.Visible = False 44 wb1.Activate 45 wb1.Worksheets(1).Move Before:=wb.Worksheets(1) 46 wb.Activate 47 wb.Worksheets(1).Select 48 Worksheets(1).Name = "sheet1" 49 On Error GoTo 0 50 If filePath = False Then 51 Exit Sub 52 Else 53 TextBox3.Value = filePath 54 End If 55 Exit Sub 56 57 End If 58 59End Sub 60
同時に2つ移動する必要ありますか?1つはできているのであれば、同様の処理をもう1回行えばよいのでは?
移動させたいシートの内容が違うため、同時に2つ移動する必要はあります。
同じ内容のシートでしたらおっしゃる通りかと思います。
> 左から2番目のシートをマクロ実行ファイルへ取り込み、集計シートとして左から3番目に移動
上記のコードの記述がどこにもないので、当然です。
左から8番目のシートを取り込み、rawdataシートとして左から2番目に移動ができているなら、
上記の処理も書けますよね。
すみません。言葉不足で。
次のような流れではだめなのかな、と思った次第です。
If ComboBox1 = "1" Then
'8番目のシートの移動
'8番目のシートに対する処理
'2番目のシートの移動
'2番目のシートに対する処理
これであれば、
wb1.Worksheets(8).Move Before:=wb.Worksheets(2)
の部分を
wb1.Worksheets(2).Move Before:=wb.Worksheets(3)
として、2番目のシートを移動すればよいのでは?
それとも、1回のMoveメソッドで2つのシートを移動しなくてはならないのでしょうか?
hex309さん
詳細にありがとうございます。
意図が理解でき、自身で対応できました。
hatena19さん
自身で何度が試し対応できなかったため記述せず質問させていただきました。
わざわざお時間を割いてまでご指摘いただきありがとうございます。
自己解決できたのですね。
まとめて移動させる方法を回答しておきました。
2つのシート間で参照していたりすると一つずつではまずい場合がありますので、その場合は参考にしてください。
回答1件
あなたの回答
tips
プレビュー