
vbaで月を進めたいのですが、文字と組み合わせると「型が一致しません」というエラーが出ます。
どうすればよいですか?
下記コードでは、 & s1 という部分がなければvba実行の度に1~12を順番に繰り返します。
しかし、文字と組み合わせるとエラーになります。セルの書式設定と組み合わせればやりたいことは実現できますが、vbaのみで行うには、下記のどこを修正すればよいでしょうか?
よろしくお願いいたします。
Sub 月を進める()
Dim s1 As String
s1 = "月"
Range("A1") = Format(DateAdd("M", 1, Format(Left(Range("A1").Value, 2), "0-00")), "m") & s1
End Sub
No.2ベストアンサー
- 回答日時:
まだ、引きずっていたのでしょうか。
質問内容そのものが変わったようですね。
>vbaで月を進めたいのですが、文字と組み合わせると「型が一致しません」というエラーが出ます。
>どうすればよいですか?
質問を正確に読むと、よく分かりません。
元は、一体どうなっているのでしょうね。
例:
1) 11月
それとも、
2) 2014年11月
Left(Range("A1").Value, 2)
となっているとなれば、1) らしい。
前の内容を引きずっていても、内容が一新されて、その経緯が書かれていませんので、当事者間しか分かりません。
'1) を採用し、「11月」は、文字列とみなした場合の例:
'//
Sub Test1()
Dim myDate As Variant
myDate = Range("A1").Text 'テキスト形式で受け取らないと、実際は分からない
If myDate = "" Then Exit Sub
myDate = Val(myDate) '2014年12月になっていたら取れない。
myDate = DateValue(myDate & "/01")
myDate = DateAdd("m", 1, myDate)
Range("A1").Value = Format(myDate, "M月") '現代では、Format$ は好ましくない
End Sub
'//
'すでに、書式で11月になっていて、中身は日付のシリアル値が入っている場合
'//
Sub Test2()
Dim myDate As Variant
myDate = Range("A1").Value
If IsDate(myDate) = False Then Exit Sub
myDate = DateAdd("m", 1, myDate)
'Range("A1").NumberFormatLocal = "m月" '書式は設定されている場合は不要
Range("A1").Value = myDate
End Sub
'//
注意:「コードのネストは深くしない!」「プロパティの省略はしない」
VBA/VB プログラミングの原則です。
こういう場合、Excelでは、文字列で"11月"とかしないで、表示形式で、11月として、日付のシリアル値をセルに入れれば、もっと簡単にできるでしょうに。
なお、前回の補足だけに書かれても、私は、ここに常駐して覗いているわけでもないので分かりません。それで、前置きもなく、新しい質問にされると、さっぱり事情が分からなくなります。
ベストアンサーが欲しい人は、ポイントの取れるチャンスが増えるから、質問は新しいほうがよいのでしょうが、こちらは、そんなことはどうでもよいことで、分かりやすく書けば、それだけ目的には近いはずです。それに、どの質問も誰が解決しようと、質問者さんが満足できればよいことです。ただ、かつての私がそうだったように、掲示板は学ぶ場であってもほしいと思います。ここでも、半年・一年と徐々に上達していった人もいます。
ただ、最近、一部の質問者も回答者もVBAのコードの荒っぽさが目立ちますね。
どうもありがとうございます。
まだ少し引きずっていました。
まだまだ応用が利かないんで、少しパターンが変わるとすぐいきづまってしまい何日もどつぼにはまります。
あと知識不足もあるんですが質問の内容が片手落ちで2パターンの回答で考えさせて申し訳ございません。
質問的には1の方でしたが、両方試してみました。
両方とも問題なく動作しました。また動き的も思い通りでした。
現実的には表示形式と合わせてすると簡単になると思いましたが、今回は勉強のために質問させていただきました。
学ぶ場であってほしいという心遣い感謝いたします。
VBAのコードの荒っぽさというのが初心者には良く分からないのですが、「コードのネストは深くしない!」「プロパティの省略はしない」ということなんでしょうね。
なかなか初心者には、そこまでの配慮に行く前にコードの意味を理解できて動作すればいい、となってしまいます。すいません。
また今後もしょうもない質問もするかもしれませんが、よろしくお願いいたします。
質問者のためにという心遣いが良く感じられたので、今回ベストアンサーに選ばせてください。
どうもありがとうございました。
No.3
- 回答日時:
>Range("A1") = Format(DateAdd("M", 1, Format(Left(Range("A1").Value, 2), "0-00")), "m") & s1
↓
Range("A1").Value = Format(DateAdd("M", 1, DateValue(Range("A1").Value & "1日")), "m月")
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA初心者です 検索した数字の行に色をつける 5 2023/02/13 14:22
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Excel(エクセル) エクセルVBA、ファイル名をセルの値で保存の方法を教えてください。 おそれいります。こちらで数々のエ 6 2023/06/30 22:17
- Visual Basic(VBA) エクセルVBAで教えて頂きたいのですが? 2 2022/12/31 20:28
- Visual Basic(VBA) Excle VBA Findメソッドについて 3 2022/07/15 13:56
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
- Android VBA、フォルダのパスに環境文字 ㉑ があり、VBAが機能しません。 2 2022/07/27 09:16
- Excel(エクセル) 並べ替え、ソートの構文がわからない。 お世話になります。VBA超初心者です。 エクセルでワークシート 2 2023/06/28 21:00
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
既婚で現役のAV女優さんは居ま...
-
VBA ソートすると、1、11、...
-
CDレコの曲の消し方を教えてく...
-
エクセル・VBAで決められたルー...
-
大昔から、クンニ、フェラって...
-
the vicar's pleasure 和訳
-
別ブックの空白行に転記
-
エクセル最終行の下に貼り付け
-
シンナーの夏型と冬型の違いは?
-
サイドビジネスやるべきか?
-
直線コネクタの中央にコネクタ...
-
Excel マクロの一部改造の方法...
-
Word 黒塗り部分の文字のみ削除...
-
最適な組み合わせの自動計算
-
射精したあとの匂いって他人に...
-
1日3回セックスって多いですか...
-
おっぱいを舐める
-
女性は電マ、ローター、バイブ...
-
先日彼氏とラブホに行ったら電...
-
手マンした手って臭いですか?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
既婚で現役のAV女優さんは居ま...
-
VBA ソートすると、1、11、...
-
VBAが止まります。
-
CDレコの曲の消し方を教えてく...
-
シンナーの夏型と冬型の違いは?
-
直線コネクタの中央にコネクタ...
-
大昔から、クンニ、フェラって...
-
EXCELで3行を一組にして結合す...
-
エクセルvbaで月と文字の組み合...
-
相対参照から絶対参照に変換す...
-
別ブックの空白行に転記
-
最適な組み合わせの自動計算
-
データの平均を1分値にまとめる...
-
エクセル最終行の下に貼り付け
-
性欲自体はあるのにセックスで...
-
bluetoothのclass1とclass2の互...
-
エクセルのVBAでTTESTがエラー...
-
Word 黒塗り部分の文字のみ削除...
-
至急です。AQUOS ZERO2とGalaxy...
-
Excelで抽出・連続印刷したいです
おすすめ情報