
以下プログラムです。
Sub kintaiH()
Dim FileName2 As String, FileName3 As String
Dim fl2 As Workbook, fl3 As Workbook
Dim wb As Workbook
Dim wScriptHost As Object
Dim j As Long, lastRow As Long
Set wScriptHost = CreateObject("WScript.shell")
ChDir wScriptHost.specialFolders("Desktop")
FileName2 = Application.GetOpenFilename
Set fl2 = Workbooks.Open(FileName:=FileName2)
fl2.SaveAs FileFormat:=xlNormal
Range("B:C").Insert ' 2~3列目に列を挿入します
Range("B1") = "社員番号" 'B1セルに社員番号の文字列を入れる。
Range("C1") = "資格" 'C1セルに資格の文字列を入れる。
FileName3 = Application.GetOpenFilename
Set fl3 = Workbooks.Open(FileName:=FileName3)
fl3.Sheets("社員名簿").Copy _
Before:=fl2.Sheets(1)
fl3.Close False '上書き保存するなら True で
Set fl3 = Nothing 'Set fl2 = Nothing '解放したいけどBookは開いたまま?
Set wb = ActiveWorkbook
With Worksheets(2)
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
'Vlookup処理
With Range(.Cells(2, "B"), .Cells(lastRow, "B"))
.Formula = "=VLOOKUP($A2,社員名簿!$B:$H,COLUMN(B1),false)"
.Value = .Value
End With
With Range(.Cells(2, "C"), .Cells(lastRow, "C"))
.Formula = "=VLOOKUP($A2,社員名簿!$B:$H,COLUMN(G1),false)"
.Value = .Value
End With
'//▼列の非表示//
For j = 1 To .Cells(1, Columns.Count).End(xlToLeft).Column
If .Cells(1, j) = "予定始業時間" Or .Cells(1, j) = "予定終業時間" Then
.Columns(j).Hidden = True
End If
Next j
End With
'B列基準に昇順で並び替え
Range("A1").CurrentRegion.Select
ActiveSheet.Sort.SortFields.Add Key:=Range("B2"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
End Sub
※下から4行目から表の並び替えをしたいのですが、うまくいきません。
エラーは出ないようなのですが。ネット等で色々調べたのですが。。。
どなたか教えて頂けたら幸いです。
No.4ベストアンサー
- 回答日時:
ん~~~
細かい原因はこちらでは把握しかねますが・・・
今回投稿したコードはすべて無視し、お示しのコードの
最後の3行(End Subより前)を
Range("A1").CurrentRegion.Select Key1:=Range("B1"), order1:=xlAscending, Header:=xlYes
だけにしたらどうなりますか。
一つ気になるのはこの並び替え部分に関してSheetを指定していませんね。
上記コードの前に「.」ドットを加え、なおかつ並び替え前の行の
>End With
を最後に持ってきて
.Range("A1").CurrentRegion.Select Key1:=Range("B1"), order1:=xlAscending, Header:=xlYes
End With
としてみたらどうでしょうか?m(_ _)m
No.3
- 回答日時:
続けてお邪魔します。
結局1行目が項目行でB列をキーに昇順に並び替えたい!というコトですね。
↓のコードにしてみてください。
Sub Sample3()
Dim lastRow As Long, lastCol As Long
lastRow = Cells(Rows.Count, "B").End(xlUp).Row '//←B列で最終行取得//
lastCol = Cells(1, Columns.Count).End(xlToLeft).Column '//←1行目で最終列取得//
Range(Cells(1, "A"), Cells(lastRow, lastCol)).Sort key1:=Range("B1"), order1:=xlAscending, Header:=xlYes
End Sub
こんどはどうでしょうか?m(_ _)m
ありがとうございます。
コードを2つ(私が作成した分と上記分)を開いたままの状態で順番に動かすと正常に作動します。
ただマクロボタンを2つでそれぞれ押すと2つめで以下メッセージが出ます。
実行時エラー '1004:
並び替えの参照が正しくありません。参照が並び替えるデータ内にあることと、「最優先されるキー」ボックスうが空白でないことを確認してください。
できればひとつのマクロボタンで全て動くのが理想ですが、難しいですかね。
No.2
- 回答日時:
No.1です。
投稿後もう一度質問文を読み返してみて・・・
>下から4行目から表の並び替えをしたいのですが
もしかして、最後の4行だけの並び替えをしたい!という意味なのでしょうか?
そうであれば
Sub Sample2()
Dim lastRow As Long, lastCol As Long
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
lastCol = Cells(lastRow - 3, Columns.Count).End(xlToLeft).Column
Range(Cells(lastRow - 3, "A"), Cells(lastRow, lastCol)).Sort key1:=Cells(lastRow - 3, "B"), order1:=xlAscending, Header:=xlNo
End Sub
としてみてください。
※ 今回はA列で最終行・最後から4行目で最終列を取得するようにしています。m(_ _)m
すみません、言葉足らずでした。
最後の4行目というのはコードのことでして、
下記コードで
'B列基準に昇順で並び替え
Range("A1").CurrentRegion.Select
ActiveSheet.Sort.SortFields.Add Key:=Range("B2"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
で表全体をB2をキーにして昇順にて並び替えをしたいということです。
No.1
- 回答日時:
こんにちは!
お示しのコードは詳しく見ていません。
並び替えだけのコードです。
尚、A列で最終行・4行目で最終列を取得するようにしていますので、
A列は最終行まで、4行目は最終列まで何らかのデータが入っているという前提です。
Sub Sample1()
Dim lastRow As Long, lastCol As Long
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
lastCol = Cells(4, Columns.Count).End(xlToLeft).Column
Range(Cells(4, "A"), Cells(lastRow, lastCol)).Sort key1:=Range("B4"), order1:=xlAscending, Header:=xlNo
End Sub
※ 普通は項目行があると思うのですが、質問文に4行目から並び替えをしたい!とありますので、
項目行云々は無視して、4行目以降がB列をキーに昇順に並び替えられるはずです。m(_ _)m
すみません、言葉足らずでした。
最後の4行目というのはコードのことでして、
下記コードで
'B列基準に昇順で並び替え
Range("A1").CurrentRegion.Select
ActiveSheet.Sort.SortFields.Add Key:=Range("B2"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
で表全体をB2をキーにして昇順にて並び替えをしたいということです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) VBA 請求書自動作成 3 2022/04/24 01:58
- Visual Basic(VBA) ローマ字、ハイフン付きの並び替え ローマ字抽出方法 Excelマクロ 4 2022/04/01 14:10
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
B列の最終行までA列をオート...
-
Excelで、あるセルの値に応じて...
-
Cellsのかっこの中はどっちが行...
-
IIF関数の使い方
-
Worksheets メソッドは失敗しま...
-
【VBA】2つのシートの値を比較...
-
Changeイベントでの複数セルの...
-
【VBA】複数行あるカンマ区切り...
-
VBAを使って検索したセルをコピ...
-
VBAで、離れた複数の列に対して...
-
vba 2つの条件が一致したら...
-
VBAコンボボックスで選択した値...
-
DataGridViewにリンク列の追加...
-
VBA 列が空白なら別のマクロへ...
-
DataGridViewに空白がある場合...
-
C# 列の挿入
-
マクロについて。S列の途中から...
-
VBA 何かしら文字が入っていたら
-
VBAで、特定の文字より後を削除...
-
rowsとcolsの意味
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで、あるセルの値に応じて...
-
Worksheets メソッドは失敗しま...
-
vba 2つの条件が一致したら...
-
B列の最終行までA列をオート...
-
IIF関数の使い方
-
Cellsのかっこの中はどっちが行...
-
【VBA】2つのシートの値を比較...
-
VBAのFind関数で結合セルを検索...
-
URLのリンク切れをマクロを使っ...
-
文字列の結合を空白行まで実行
-
VBA 何かしら文字が入っていたら
-
VBAを使って検索したセルをコピ...
-
【Excel VBA】 B列に特定の文字...
-
VBAで指定範囲内の空白セルを左...
-
Changeイベントでの複数セルの...
-
VBAで、離れた複数の列に対して...
-
VBAでのリスト不一致抽出について
-
データグリッドビューの一番最...
-
rowsとcolsの意味
-
DataGridViewに空白がある場合...
おすすめ情報
セルB1にヘッダーがありB2からB列下までは数字が入っていまして(データがある行まで)をB1をキーにして昇順にて並び替えをしたいです。