Calc Basic Do loop while, select case
Posted: 1月 3, 2020, 11:47 am
OpenOffice 初心者です。 Excel VBA でそのまま作動しないものを Calc Basic で書き直していますが、Do Loop While がよく分かりません。 下記が記述とその結果です。 Select Case が土曜で止まり、次は 8, 9, 10 の dateserial の日付が表示されます。 どこが間違っているのでしょうか。 ご指導頂けるとありがたいのですが。 又、Excel VBA では 入れ子の For でうまく作動しましたが、OpenOffice では作動しません。
REM ***** BASIC *****
Sub Dating
Dim document as object
dim sheet as object
document = ThisComponent
sheet = document.sheets(7)
Dim i as integer
Dim j as date
Dim k as variant
i = 5
j = sheet.getCellByPosition(0, i).value
k = WeekDay(j)
Do
sheet.getCellByPosition(0, i).value = j
sheet.getCellByPosition(1, i).value = k
Select Case k
Case = 1
sheet.getCellByPosition(1, i).string = "(日)"
Case = 2
sheet.getCellByPosition(1, i).string = "(月)"
Case = 3
sheet.getCellByPosition(1, i).string = "(火)"
Case = 4
sheet.getCellByPosition(1, i).string = "(水)"
Case = 5
sheet.getCellByPosition(1, i).string = "(木)"
Case = 6
sheet.getCellByPosition(1, i).string = "(金)"
Case = 7
sheet.getCellByPosition(1, i).string = "(土)"
End Select
i = i + 6
j = j + 1
k = k + 1
Loop While i <= 334
End Sub
01/01/20 (水)
01/02/20 (木)
01/03/20 (金)
01/04/20 (土)
01/05/20 01/07/00
01/06/20 01/08/00
REM ***** BASIC *****
Sub Dating
Dim document as object
dim sheet as object
document = ThisComponent
sheet = document.sheets(7)
Dim i as integer
Dim j as date
Dim k as variant
i = 5
j = sheet.getCellByPosition(0, i).value
k = WeekDay(j)
Do
sheet.getCellByPosition(0, i).value = j
sheet.getCellByPosition(1, i).value = k
Select Case k
Case = 1
sheet.getCellByPosition(1, i).string = "(日)"
Case = 2
sheet.getCellByPosition(1, i).string = "(月)"
Case = 3
sheet.getCellByPosition(1, i).string = "(火)"
Case = 4
sheet.getCellByPosition(1, i).string = "(水)"
Case = 5
sheet.getCellByPosition(1, i).string = "(木)"
Case = 6
sheet.getCellByPosition(1, i).string = "(金)"
Case = 7
sheet.getCellByPosition(1, i).string = "(土)"
End Select
i = i + 6
j = j + 1
k = k + 1
Loop While i <= 334
End Sub
01/01/20 (水)
01/02/20 (木)
01/03/20 (金)
01/04/20 (土)
01/05/20 01/07/00
01/06/20 01/08/00