Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


364 / 13645 ツリー ←次へ | 前へ→

【80796】Excelの新元号対応(?)で、ExcelVBAにバグが発生しました 令和で困り者 19/5/13(月) 17:19 質問[未読]
【80797】Re:Excelの新元号対応(?)で、ExcelVBAにバ... マナ 19/5/13(月) 19:30 発言[未読]
【80800】Re:Excelの新元号対応(?)で、ExcelVBAにバ... 令和で困り者 19/5/14(火) 9:19 質問[未読]
【80801】Re:Excelの新元号対応(?)で、ExcelVBAにバ... ピンク 19/5/14(火) 11:17 発言[未読]
【80802】Re:Excelの新元号対応(?)で、ExcelVBAにバ... 令和で困り者 19/5/14(火) 14:06 質問[未読]
【80803】Re:Excelの新元号対応(?)で、ExcelVBAにバ... ピンク 19/5/14(火) 17:30 発言[未読]
【80804】Re:Excelの新元号対応(?)で、ExcelVBAにバ... 令和で困り者 19/5/14(火) 17:53 お礼[未読]
【80805】Re:Excelの新元号対応(?)で、ExcelVBAにバ... マナ 19/5/14(火) 18:58 発言[未読]

【80796】Excelの新元号対応(?)で、ExcelVBAにバグ...
質問  令和で困り者  - 19/5/13(月) 17:19 -

引用なし
パスワード
   MS-Offceを新元号対応にしたところ、前任者が作成した年間スケジュール(Excel VBA)に
次のエラーが発生しました。

Sheet名[31年4月]までは正常でしたが、Sheet[1年5月]を作り掛けると
「実行時エラー'13' 型が一致しません」となり
「 intI = CInt(Mid(strBuff, 1, 2)) + 1988」行が黄色となります。

また、以下1行目の「/」を外すと、Sheet[1年9月]まで作成後、同様のエラー表示になります。
(桁数が問題かと色々探して見てみましたが...)

解決方法のご教示をお願いできれば助かります。


strBuff = Replace(strDate, "年", "/")         ---->strDate "1年5月" strbuff ""      int:10
strBuff = Replace(strBuff, "月", "/")         ---->strDate "1年5月" strbuff "1/5月"  int:10
strBuff = Trim(StrConv(strBuff, vbNarrow)) & "01"   ---->strDate "1年5月" strbuff "1/5/"   int:10
intI = CInt(Mid(strBuff, 1, 2)) + 1988         ---->strDate "1年5月" strbuff "1/5/01"   int:10
strBuff = CStr(intI) & Mid(strBuff, 3, 6)


ちなみにSheet名[31年4月]の場合は以下のようになります。

strBuff = Replace(strDate, "年", "/")         ---->strDate "31年4月" strbuff ""      int:10
strBuff = Replace(strBuff, "月", "/")         ---->strDate "31年4月" strbuff "31/4月" int:10
strBuff = Trim(StrConv(strBuff, vbNarrow)) & "01"   ---->strDate "31年4月" strbuff "31/4/"  int:10
intI = CInt(Mid(strBuff, 1, 2)) + 1988         ---->strDate "31年4月" strbuff "31/4/01"  int:10
strBuff = CStr(intI) & Mid(strBuff, 3, 6)       ---->strDate "31年4月" strbuff "31/4/01"  int:2019
strBuff = DateAdd("m", -3 ,strBuff)          ---->strDate "31年4月" strbuff "2019/4/01" int:2019

【80797】Re:Excelの新元号対応(?)で、ExcelVBAに...
発言  マナ  - 19/5/13(月) 19:30 -

引用なし
パスワード
   ▼令和で困り者 さん:

2年以上前は無視して良いなら

Sub test()
  Dim shn As String
  
  shn = "1年5月"

  If Val(shn) > 29 Then
    MsgBox Format("H" & shn, "yyyy/mm/01")
  Else
    MsgBox Format("R" & shn, "yyyy/mm/01")
  End If
  
End Sub

【80800】Re:Excelの新元号対応(?)で、ExcelVBAに...
質問  令和で困り者  - 19/5/14(火) 9:19 -

引用なし
パスワード
   マナ様

ご連絡ありがとうございます。
始めからで申し訳ありませんが、お教え頂きました以下の
9行を何処に差し込めばいいのでしょうか?
よろしくお願いいたします。


▼マナ さん:
>▼令和で困り者 さん:
>
>2年以上前は無視して良いなら
>
>Sub test()
>  Dim shn As String
>  
>  shn = "1年5月"
>
>  If Val(shn) > 29 Then
>    MsgBox Format("H" & shn, "yyyy/mm/01")
>  Else
>    MsgBox Format("R" & shn, "yyyy/mm/01")
>  End If
>  
>End Sub

【80801】Re:Excelの新元号対応(?)で、ExcelVBAに...
発言  ピンク  - 19/5/14(火) 11:17 -

引用なし
パスワード
   ▼令和で困り者 さん:
strBuff = Replace(strDate, "年", "/")
s = InStr(strBuff, "/")
strBuff = Replace(strBuff, "月", "/")
strBuff = Trim(StrConv(strBuff, vbNarrow)) & "01"
If s = 3 Then
  strBuff = Mid(strBuff, 1, 2) + 1988 & Mid(strBuff, 3, 6)
ElseIf s = 2 Then
  strBuff = Mid(strBuff, 1, 1) + 2018 & Mid(strBuff, 2, 6)
End If

【80802】Re:Excelの新元号対応(?)で、ExcelVBAに...
質問  令和で困り者  - 19/5/14(火) 14:06 -

引用なし
パスワード
   ▼ピンク 様:

以下のようでよろしいでしょうか?

「Elself s = 2 Then」でコンパイルエラー(修正候補:ステートメントの最後)が表示されてしまいます...


  strBuff = Replace(strDate, "年", "/")
  s = InStr(strBuff, "/")
  strBuff = Replace(strBuff, "月", "/")
  strBuff = Trim(StrConv(strBuff, vbNarrow)) & "01"
  If s = 3 Then
  strBuff = Mid(strBuff, 1, 2) + 1988 & Mid(strBuff, 3, 6)
  Elself s = 2 Then
  strBuff = Mid(strBuff, 1, 1) + 2018 & Mid(strBuff, 2, 6)
End If

  With ActiveWorkbook.Sheets(strDate).Tab
    .Color = dblColor(intI)
    .TintAndShade = 0
  End With

End Sub


>▼令和で困り者 さん:
>strBuff = Replace(strDate, "年", "/")
>s = InStr(strBuff, "/")
>strBuff = Replace(strBuff, "月", "/")
>strBuff = Trim(StrConv(strBuff, vbNarrow)) & "01"
>If s = 3 Then
>  strBuff = Mid(strBuff, 1, 2) + 1988 & Mid(strBuff, 3, 6)
>ElseIf s = 2 Then
>  strBuff = Mid(strBuff, 1, 1) + 2018 & Mid(strBuff, 2, 6)
>End If

【80803】Re:Excelの新元号対応(?)で、ExcelVBAに...
発言  ピンク  - 19/5/14(火) 17:30 -

引用なし
パスワード
   ▼令和で困り者 さん:  
  strBuff = Replace(strDate, "年", "/")
  s = InStr(strBuff, "/")
  strBuff = Replace(strBuff, "月", "/")
  strBuff = Trim(StrConv(strBuff, vbNarrow)) & "01"
  If s = 3 Then
    strBuff = Mid(strBuff, 1, 2) + 1988 & Mid(strBuff, 3, 6)
  ElseIf s = 2 Then
    strBuff = Mid(strBuff, 1, 1) + 2018 & Mid(strBuff, 2, 6)
  End If

あなたの記述は
 Elself
正解は
 ElseIf

【80804】Re:Excelの新元号対応(?)で、ExcelVBAに...
お礼  令和で困り者  - 19/5/14(火) 17:53 -

引用なし
パスワード
   ピンクさま

いろいろお手数をおかけしました。
お礼申し上げます!!
まだ不明な点がありますので、その時はまたお願いいたします。


▼ピンク さん:
>▼令和で困り者 さん:  
>  strBuff = Replace(strDate, "年", "/")
>  s = InStr(strBuff, "/")
>  strBuff = Replace(strBuff, "月", "/")
>  strBuff = Trim(StrConv(strBuff, vbNarrow)) & "01"
>  If s = 3 Then
>    strBuff = Mid(strBuff, 1, 2) + 1988 & Mid(strBuff, 3, 6)
>  ElseIf s = 2 Then
>    strBuff = Mid(strBuff, 1, 1) + 2018 & Mid(strBuff, 2, 6)
>  End If
>
>あなたの記述は
> Elself
>正解は
> ElseIf

【80805】Re:Excelの新元号対応(?)で、ExcelVBAに...
発言  マナ  - 19/5/14(火) 18:58 -

引用なし
パスワード
   ▼令和で困り者 さん:

>まだ不明な点がありますので、その時はまたお願いいたします。

解決したからといって、マルチポスト先を放置しないほうがよいです。
誰も回答してくれなくなりますよ。

364 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free