知識、知恵のカタマリ

[PR]自分が見つかるハケン日記!

解決済

VBAである規則性があるコードがあるのですがうまく出来ません。どなたかお願いします。

Worksheet("test" & TY).Cells(1, 6).name ="DD" & TY & "0101"
Worksheet("test" & TY).Cells(2, 6).name ="DD" & TY & "0102"
Worksheet("test" & TY).Cells(3, 6).name ="DD" & TY & "0103"
Worksheet("test" & TY).Cells(4, 6).name ="DD" & TY & "0104"
Worksheet("test" & TY).Cells(5, 6).name ="DD" & TY & "0105"

最後の0101とかは日付に近い形にしたいのですがここをどうスマートなコーディングをしたらいいか迷っています。
フォーマットの関係で出来るだけ日付型は避けたいです。連続でセルに名前をふりたいのでお願いします。

2008-04-03 01:00の質問
名前  for  定義  VBA  セル  Cell  Next  
名前
激安!100枚で500円。高精細・簡単入稿・簡単決済・翌日配送のデータ入稿専門サイト
xn--1cr47bqpx57l.com/
この質問と回答を読んで役に立った場合は「役に立つ質問」に投票してください。投票が多い質問は、役に立つ質問一覧に掲載され、より多くの人に見てもらうことができます。
Ads By Google

回答(2)

5.

2008-04-03 03:05:43ベスト
単純に書き換えただけですが…。

1.規則性がある部分は、数字が1から5へ順に変化。
2.変化している部分を変数(例えばi)に置き換える。
3.For~Nextループで、iを1から5へ変化させて、囲んでやる。


Option Explicit

Dim i As Integer

For i = 1 To 5
   Worksheet("test" & TY).Cells(i, 6).Name = "DD" & TY & "010" & i
Next

解決しました。コードの書き間違いもあってよくなかったです。・・・すみません。
For i = 1 to 365
Worksheet("test" & TY).Cells(i, 6).Name = "DD" & Format(Date, yyyymmdd)
Next i

1.

2008-04-03 01:34:23
よくわからんけど、こういうことかな?
For i = 1 To 5
    Names.Add Name:="DDate" & ty & "01" & Right("0" & i, 2), RefersTo:="=test" & ty & "!" & Worksheets("test" & ty).Cells(i, 6).Address
Next
自信度 : 自信なし 回答レベル : アドバイス
Ads By Google

コメント(4)

2008-04-03 03:12:20

もしかして、0101っていうのは、1月1日のことですか?

だとしたら、mm、ddで二重にループさせてやって、
="DD" & TY & Format(mm, "00") & Format(dd, "00")
かな???

#2.  BLUEPIXY
2008-04-03 03:53:01

回答5って実際に試してみた?

#3.  mr_r00
2008-04-03 07:04:16

有難うございます
コードの一番最後は日付ですね
5番の形は既にやったんですけどセル番地は全く違う(1から始まらないので)のでうまく出来ていないのです(汗)

2008-04-03 07:54:05

コードが提示されて、「このコードを奇麗にしたい」という要求なので、「提示されたコードは正しく動く」という前提で回答しています。

提示されたコードが正しく動いているという前提で書き換えただけです。

コードが動かないのであれば、「このコードではうまくいきませんでした」と説明し、「このセルに、こういう条件で、こういう値を書き込みたいのだが、どういうコードを書くべきか?」という風な質問でないと、回答しようがないのでは?

トラックバック

トラックバックURL: