|
▼sashiba さん:
こんばんは。
>>これはIEに埋め込まれたExcelの操作で結合するものですか?
>分かりません、宜しかったら次を見て下さい。
わかりましたここはとりあえず、置いておきます。
>送信したら ERROR:本文に禁止語句が含まれています。となりました。
>ここにURLを書いていた為でしょうか?。
できれば、最初に主語つけてくださいね。
ここに投稿するときの話ですね。
ここは直リンク禁止と言ってURLを書くと投稿できなくなります。
http部分を外したURLを書くようにしてください。
>載せるのはエクセルのファイル、VBAが組み込んである。で良いでしょうか?。
とりあえずここもFTP機能のようなのがVBAで実装しているということで、
置いておきます。
で、このソース理解されて書かれてますか?
とにかく一通りコメントを入れてみます。
Sub セル結合()
'作業という名前のシートを選択します
Sheets("作業").Select
'エラー処理:エラーとなった場合はエラー表示なく次の行に進む設定。
'On Error Resume Next−−−あってもなくても同じでした。
'メッセージ類の表示を無効に設定。
Application.DisplayAlerts = False
'r 変数に5を入れます。(普通は最初にDim r As Integerを本来定義します)
r = 5
'r1にr変数に5を入れます。(ここも最初にDim r1 As Integerを本来定義します)
r1 = r
'セルのr変数行の5列に値が入っているかの分岐条件。
'(本来、Sheets("作業").Cells(r, 5) = ""と書きます)
Do Until Cells(r, 5) = "" '属の列
'セルr行の5列とセルr + 1行の5列と比較。異なれば入る
'(ここも、Sheets("作業").Cells(r, 5) <> Sheets("作業").Cells(r + 1, 5)と本来書きます)
If Cells(r, 5) <> Cells(r + 1, 5) Then
'r2にr変数の値を入れます
r2 = r
'(ここも、Sheets("作業").Range(Sheets("作業").Cells(r1, 5), Sheets("作業").Cells(r2, 5)).Select と本来書きます)
Range(Cells(r1, 5), Cells(r2, 5)).Select
'Withブロック定義。このWith枠内では「Selection」以降のプロパティ指定。
With Selection
'Withブロック内なので、Selection.HorizontalAlignment = xlCenter
'がSelection以降なので、.HorizontalAlignment = xlCenterと略して書ける。
'因みに「.HorizontalAlignmentプロパティ」は水平位置設定
.HorizontalAlignment = xlCenter '左右中央
'Withブロック内なので、Selection.VerticalAlignment = xlCenter
'が.HorizontalAlignment = xlCenterと略して書ける。
'因みに「.VerticalAlignmentプロパティ」は垂直位置設定
.VerticalAlignment = xlCenter '上下中央
'Withブロック内なので、Selection.WrapText = False
'が.WrapText = Falseと略して書ける。
'因みに「.WrapTextプロパティ」は折り返して全体表示設定
.WrapText = False '折り返さない
'Withブロック内なので、Selection.Orientation = 0
'が.Orientation = 0と略して書ける。
'因みに「.Orientationプロパティ」は文字の回転方向の位置設定
.Orientation = 0 '方向指定なし
'Withブロック内なので、Selection.AddIndent = False
'が.AddIndent = Falseと略して書ける。
'因みに「.AddIndentプロパティ」はインデント設定
.AddIndent = False 'インデントを追加しない
'Withブロック内なので、Selection.IndentLevel = 0
'が.IndentLevel = 0と略して書ける。
'因みに「.IndentLevelプロパティ」はインデント数設定
.IndentLevel = 0 'インデント数無し
'Withブロック内なので、Selection.ShrinkToFit = False
'が.ShrinkToFit = Falseと略して書ける。
'因みに「.ShrinkToFitプロパティ」は 縮小して全体表示設定
.ShrinkToFit = False '縮小表示設定しない
'Withブロック内なので、Selection.ShrinkToFit = False
'が.ReadingOrder = Falseと略して書ける。
'因みに「.ReadingOrderプロパティ」は文字の方向設定
.ReadingOrder = xlContext '順序
'Withブロック内なので、Selection.MergeCells = True
'が.MergeCells = Trueと略して書ける。
'因みに「.MergeCellsプロパティ」はセル結合設定
.MergeCells = True 'セル同士結合
'「.Mergeプロパティ」は選択中のセルを結合する。
'このCells(r, 5) <> Cells(r + 1, 5)条件に入っている
'ケースは値が異なる場合に入る。ずっと異なる値が来た場合ずっと1行選択。
'つまり結合できない条件でも入る。ということによりエラーとなる。
' Selection.Merge−−−あってもなくても同じでした。
End With
r1 = r2 + 1
End If
r = r + 1
Loop
以下D列分は上と同様ですので省略しています
Application.DisplayAlerts = True
Cells(5, 1).Select
End Sub
>>因みにループ処理に以下のエラー処理はあまり多様はしないほうが良いかと。
>>> 'On Error Resume Next−−−あってもなくても同じでした。
>>これは一つエラーとなった箇所だけステップするのでループし続けます。
>>それによってエラーがわかりにくくなるかも知れないので、
>>On Error Goto ラベル名
>>が良いかもです。
>>後、ループ処理は最初からエラーになってますか?
>
>***前回の回答に訂正がありました***。
>On Error Resume Next がない時。
>ダウンロードで「開く」にして、マクロ「結合」を実行した時、
>エラー400が出て、先に進みません。
>On Error Resume Next がある時。
>エラーにはならないが、警告が出ます。
前にも説明しましたが、On Error Resume Nextはエラー箇所を無視して進みます。
エラーにならないではないです。なっていても無視しているだけです。
エラー400というのが本来発生しているエラーということです。
>>>下記を警告と書いていました。
>>>選択範囲には複数のデータ値があります。1つのセルとして結合すると、
>>>選択範囲にある最も左上端にあるデータのみが保持されます。
>>>(空白セルは無視されます)。
>>この警告ですが、ダウンロード時にも表示される警告と一緒ですか?
>>ダウンロードは普通IEがしますよね?
>ダウンロード時に出るメッセージ?は、
>1.「開く」か「保存」で、
>2.「開く」にした時、セキュリティ警告 「マクロを無効にする」「有効にする」
> [保存」にした時は、後ほどエクセルファイルを開いた時に、同上です。
>
>>それではなく、Excelからダウンロードするようなソース生成されてますか?
>>それであればダイアログの何かの作られてそうなので、
>>サンプルソース見せてもらっても良いですか?
>分かりませんが、そのようなソースはありません。
それであればダウンロードはIE任せですね。
>>>>4.Application.DisplayAlerts = False を使用しています。と
>>>> ありますが。これで何かされているのでしょうか?
>>>これがあると上記の警告が出ないのですが。
>>警告が出るということは処理されてないということはないですか?
>警告に対して「OK]で1組のセルの結合が出来、続いてまた警告が出ます、
>300回以上「OK」でマクロ終了です。「NO]の場合は結合なしで次のセル
>に進みます。
>問題のマクロを実行して貰えば分かって貰えると思いますが、面倒な事が起こり
>ますので−−−!。
>今後は実際に経験された方がおられたらその方のレスを待ちたいと思います。
>如何でしょうか?。
わかりました。理解していただけないのでしたらこれ以上の説明はできませんので
レスをお待ちください。
それでは。
|
|