Excel VBA質問箱 IV

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

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


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

【79111】VBAの1か月の日にちを表記し”日”も一緒に表記したい かな 17/5/12(金) 15:32 質問[未読]
【79113】Re:VBAの1か月の日にちを表記し”日”も一... 亀マスター 17/5/12(金) 17:06 回答[未読]
【79114】Re:VBAの1か月の日にちを表記し”日”も一... かな 17/5/12(金) 17:22 お礼[未読]

【79111】VBAの1か月の日にちを表記し”日”も一...
質問  かな  - 17/5/12(金) 15:32 -

引用なし
パスワード
   一応対象の月日1〜30はマクロで実行できたのですが、それに付随して”日”という文字の追加の仕方がわからないのですが、どうすればいいのでしょうか?

一応コードはこの様になっています。


Sub kake()
Dim a As Byte, w As Byte

  w = 0
  For i = 1 To 31 Step 1
    w = w + 1
    Cells(5 + i, 1) = w
  Next
 
End Sub

【79113】Re:VBAの1か月の日にちを表記し”日”も...
回答  亀マスター  - 17/5/12(金) 17:06 -

引用なし
パスワード
   考え方で大きくふたつあります。

まず、単純に「1日」「2日」という文字列をセルに入れたいということであれば、

Dim i as Integer
For i = 1 to 31
  Cells(5 + i, i) = i & "日"
Next i

のようにすればいいです。
i & "日" で、数字+「日」になります。
示されたコードではわざわざwを使っていますが、これは不要でしょう。

ただし、これだと入力した情報が文字列として扱われ、計算するための数字として使えません。
(「1日」というデータに対して+1しても「2日」とはできません)
計算に使いたいのであれば、上記のコードで「 & "日"」の部分を除き、
VBAではなくエクセルのシート上でセルの書式を「0日」としてください。
それなら、内容としてはただの数字だが、表示は「1日」のように表示されます。


なお、示されたコードでいくつか気になることがあります。

まず、変数 iを使っているのに、それを宣言しているところがありません。
設定で変数の宣言を強制するようにしていなければこれでも動きますが、バグの元になるので、変数の宣言は強制するようにしておいた方がいいでしょう。

また、変数aとwの型をByte型にしているのも気になります。
小さな数字を入れるのだからByte型でいいだろうということなのかもしれませんが、一般的にByte型を使う場合にはそれなりに理由があり、整数を扱うのであれば通常はInteger型かLongを使います。

ForループでStep 1とするのも無意味ですね。
Step 1は書かなくてもForループでは1ずつ増えるようになっていますし、1以外ずつ増えたり減ったりする場合だけ記述すればいいです。

【79114】Re:VBAの1か月の日にちを表記し”日”も...
お礼  かな  - 17/5/12(金) 17:22 -

引用なし
パスワード
   ▼亀マスター さん:
とてもわかりやすく、その他のご指摘もご教示いただきまして大変恐縮しております。
回答ありがとうございました。

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