アプリ版:「スタンプのみでお礼する」機能のリリースについて

VBAで並べ替え(ソート)するコードを使用しています。

ソートする対象の文字列が非常に長いので、
変数に格納しようと考え、コードを書き換えしましたが、
「型が一致しません」というエラーになります。原因が自分ではわからないのですが、どなたか教えていただけませんでしょうか?

<変更前>
Sub hm()
Dim wb As Workbook
Dim bk As Workbook
Dim ws As Worksheet
Dim n As Long
Set ws = ActiveSheet
Dim メニュー一覧 As String
メニュー一覧 = "朝食プランA,朝食プランB,朝食プランB,朝和定食,朝洋定食,コーヒーセット"

ws.Range("G12:W21").Select
ws.Sort.SortFields.Clear
ws.Sort.SortFields.Add Key:=Range("V12:V21"), _
SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
"朝食プランA,朝食プランB,朝食プランB,朝和定食,朝洋定食,コーヒーセット", DataOption:=xlSortNormal
ws.Sort.SortFields.Add Key:=Range("W12:W21"), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortTextAsNumbers
With ws.Sort
.SetRange Range("G12:W21")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End sub

<変更後>
Sub hm()
Dim wb As Workbook
Dim bk As Workbook
Dim ws As Worksheet
Dim n As Long
Set ws = ActiveSheet
Dim メニュー一覧 As String
メニュー一覧 = "朝食プランA,朝食プランB,朝食プランB,朝和定食,朝洋定食,コーヒーセット"

ws.Range("G12:W21").Select
ws.Sort.SortFields.Clear
ws.Sort.SortFields.Add Key:=Range("V12:V21"), _
SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
メニュー一覧, DataOption:=xlSortNormal
ws.Sort.SortFields.Add Key:=Range("W12:W21"), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortTextAsNumbers
With ws.Sort
.SetRange Range("G12:W21")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End sub

A 回答 (1件)

ws.Sort.SortFields.Add Key:=Range("V12:V21"), _


SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
”””,” & メニュー一覧 & """", DataOption:=xlSortNormal
ではいかがでしょう。
    • good
    • 0
この回答へのお礼

なるほど。ありがとうございます!!!
解決できました!!
本当に助かりました心から御礼申し上げます。

お礼日時:2018/04/17 19:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!