1

私は彼に与えた日付と年に応じて自動作業手配を行うボタンを作成しようとしています。文字列に次の名前の新しいシートを作成します--year

Sub Create_Arran_Click()

Dim year As String
Dim sdate As Date
Dim row As Integer

year = Worksheets("Main").Cells(17, 4)
sdate = Worksheets("Main").Cells(18, 4)
Sheets.Add.Name = year

For i = 1 To 56
row = ((i - 1) * 12) + 2
Worksheets(year).Cells(row, 1) = "week " & i
Worksheets(year).Cells(row + 1, 1) = "day"
Worksheets(year).Cells(row, 1).Font.Bold = True
For j = 2 To 15

    (!)Range(Cells(row, j), Cells(row, (j + 1))).Merge 
    Worksheets(year).Cells(row, j) = sdate + (j - 2)
    (!)Range(Cells(row + 1, j), Cells(row + 1, j + 1)).Merge 
    Worksheets(year).Cells(row + 1, j) = Weekday(sdate + (j - 2), vbSunday)

j = j + 2
Next
sdate = sdate + 7
Next'

問題は、「!」でマークされた行が '年'シートでマージを行っていません。私は次のようないくつかのことを試しました:

          'Worksheets(year).Range(Cells(row, j), Cells(row, (j + 1))).Merge

またはsheets(year).Range(Cells(row、j)、Cells(row、(j + 1)))。MergeまたはWorksheets(year).activate

しかし、何も助けにはなりませんか?

4

3 に答える 3

1

別のシートから範囲を参照するときは、範囲とセルを呼び出すときにそれがどこにあるかを言う必要があります

だから書くのではなく

Worksheets(year).Range(Cells(row, j), Cells(row, (j + 1))).Merge

これを行う

with Worksheets(year)
.Range(.Cells(row, j), .Cells(row, (j + 1))).Merge
end with

RangeとCellsの両方を呼び出すときにシートを参照する方法に注意してください

于 2013-03-27T17:02:22.187 に答える
1

この形式でもセルを参照する場合は、シートを参照する必要があります

sheet( "year")。Range(sheets( "year")。Cells(i、j)、sheets( "year")。Cells(i、j + 3))。merge

Sooraj

于 2017-04-22T05:01:20.700 に答える
0

あなたがそうするとき、あなたはRange(Cells(row, j), Cells(row, (j + 1))).Mergeコードが書かれているシートを取っています、そしてそれは「年」のワークシートではないかもしれません。

Worksheets(Year).Range(Cells(row, j), Cells(row, (j + 1))).Merge代わりにやってみてください。

必要に応じて、次の前にアクティブ化します。

Worksheets(Year).Activate
Worksheets(Year).Range(Cells(row, j), Cells(row, (j + 1))).Merge
于 2013-03-27T14:59:35.193 に答える