[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ファイルが壊れる原因がわかりません』(白音)
エクセルファイルを保存し、次に開くとエラーが表示されます。
メッセージは以下の通り
「〜の一部の内容に問題が見つかりました。可能な限り〜」
なにがおかしいか調べてみると
〜
.Header = xlYes
〜
この行があるなしでエラーの発生が変わりました。
で、調べてみると、以下のページに回答があるのですが
ここで
>並べ替えにおいてKeyによる優先順位の列を重複させると、
>この現象が再現することが判明しました。
とあるのですが、Keyは何を指すのでしょうか?
ソートを行う列のセルでしょうか?
優先順位の重複とはどういうことでしょうか?
理解できている人にはわかるのでしょうけど
私にはまったく理解できませんでした。
:
Dim srowno As Long: srowno = ActiveWindow.SplitRow + 1
:
With SheetD.Sort
.SetRange Range("A" & srowno - 1 & ":G" & erowno - 1) .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With :
.Header = xlYes この行を削除すると
エラーは出なくなりますが、
1行目のヘッダー部分が最下行に移動されて
表示してしまいます。
どのように対処すればよいのでしょうか?
上記ページを見たところ一種のバグなので
どうすることもできないとなっていますが
あきらめるしかないのでしょうか?
< 使用 Excel:Excel2016mac、使用 OS:Windows10 >
見出し行内で見出しが同じものがないだろうか?
例えば 科目 科目 金額 とか。
もしあれば 科目1 科目2 金額 と異なるようにしてみてはどうだろうか? (ねむねむ) 2022/12/06(火) 09:27:59
1行目が見出しになっていると思うのですが
1行目のセルで同じものはありません。
(白音) 2022/12/06(火) 10:34:15
SheetDetail.Range("A" & srowno & ":G" & erowno - 1).Select
SheetDetail.Sort.SortFields.Clear
SheetDetail.Sort.SortFields.Add Key:=Range("G" & srowno & ":G" & erowno - 1), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
多分ソートのキーとなるのはG列だけだと思います。
(白音) 2022/12/06(火) 10:38:43
つかぬ事をお聞きしますが、このプログラムの目的は何ですか?
この文の意味と関連させてご説明いただきたいです。 ↓ srowno = ActiveWindow.SplitRow + 1
あと、SheetDとSheetDetailの2種類のシートがあるようですが、本当ですか?
(半平太) 2022/12/06(火) 11:15:35
説明しにくいのですが
A列はグループの名前が入っています。
A列の順番は現状のままでソートをかけたいので
for文を使用して各グループの
srowno (現在のグループの開始行) erowno(現在のグループの終了行)をもとめて
グループごと(srowno〜erowno)でソートの処理を行っています。
srowno = ActiveWindow.SplitRow + 1 これはループを回すためのデータの開始位置になります。
(白音) 2022/12/06(火) 11:41:56
実態がよく分からないでが、 目的からすると、以下の2箇所を変更、でどうでしょうか?
>SheetDetail.Sort.SortFields.Add Key:=Range("G" & srowno & ":G" & erowno - 1), _ > SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal ↓ SheetD.Sort.SortFields.Add Key:=SheetD.Range("G1"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
>With SheetD.Sort > .SetRange Range("A" & srowno - 1 & ":G" & erowno - 1) > .Header = xlYes ↓ With SheetD.Sort .SetRange Range("A" & srowno & ":G" & erowno - 1) .Header = xlNo
結果如何に関わらず、私はここまでとします。
(半平太) 2022/12/06(火) 13:11:27
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.