![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
VBA初心者です。Xp,Excel2000を使用しています。
シフト者のカレンダー作成しており、動作していたVBAのコピーを利用しています。
何回かループを回った後表記エラーとなります。アドバイスをお願いいたします。
A B C D E
--------------------------
1 2 3 4 ...... <-- 日付
2 2 0 1 ...... <-- シフト(ln_1の範囲名)
7 8 9 10 ...... <-- 日付
1 0 3 3 ..... <-- シフト(ln_2の範囲名)
....................
For i = 1 To 6 <-- 最大6週にわたる
Set r = Range("ln_" & LTrim$(Str$(i)))
cpos = r.Column
rpos = r.Row
For n = 1 To r.Columns.Count
With Cells(rpos - 1, cpos + n - 1)
m = .Characters.Count <-- 数回ループ後ここでエラーとなる!
s = Cells(rpos, cpos + n - 1) <-- シフト情報
Select Case s
Case "" '- Blank -
........ 日付セルの装飾
Case "0" '- Holiday -
......... 日付セルの装飾
Case "1" '- shift1 -
........... 日付セルの装飾
No.5ベストアンサー
- 回答日時:
よく調べてみたら、Characters.Countは、"ABC"などの文字列では3を返しますが、"123"ではエラーになり、数字ではだめなようです。
セルの書式を文字列にしてもだめでした。m = .Characters.Count は文字の数をお知りになりたいだけのようなので、以下のコードに換えて試してみてください。
m=Len(.value)
なお、MsgBox .Address などは、エラーのでるコードの前に挿入、という意味で書きました。
泥臭い方法ですが、コードがどのセルを参照しているのかわかるので、エラーがでる時などにはおすすめです。
再びありがとうございます!
あなたの言われる通りです。これで疑問が氷解いたしました。Helpファイルの説明だけでは、読みきれませんでした。(ん...修行が足りぬ。)長くお付き合いさせてしまって、ごめんなさい。sakenomoさん、お礼に本当に一緒に「酒飲み(sakenomo)」たい気分です。
今後も、宜しくお願いします!!
No.6
- 回答日時:
再びこんにちは。
> *Cells()はObjectとですので、Cellの頭の点はお間違いですね?)
> ループの外で With Worksheets("XXXX")でシート明示しました
えっと、当方Excel97なんですが、Excel97ではCellsはプロパティです。
この場合、特定のWorksheetオブジェクトのセルに対しての操作なので、
.Cells
にしないとWithの意味が無いと思います。
Excel2000以降では違うのかな?
原因は別の所だったようですが、、、
No.4
- 回答日時:
エラーがでるコードの前に、
MsgBox .Value とか、
MsgBox .Address
などを置いて様子をみてはいかがでしょう。
In_*の名前が付けられたセル範囲の列と、
日付セルの列が合っていない部分がある
ような気がしますが…。
この回答への補足
ご教授の件を試行錯誤している時、日付セルを修正入力(F2+Enter)あるいは新規に入力(TAB or ENTER)すると、
エラーを起こす場所(セル)が入力した次のセルに移動します。
コードでセルデータを、自身のデータで上書きしてもNGです。
全ての日付データを入力しなおしたら、最後までループが回りました!!
一体どう言う事なんでしょう?
*後学のため、どなたか考えられる要因と対処方法をお教え願えないでしょうか?
ありがとうございます。
ご教授の件は Debug.Print .Address, .Value でしょうか?
Debugの中にも色々知らない便利な機能があるんですね!…
ご指摘の定義名の列と日付セルの列は、合っていました。
No.3
- 回答日時:
こんにちは。
問題の Select Case部分が解らないのですが、、、
With Worksheets("Sheet1")
m = .Cells(rpos - 1, cpos + n - 1).Characters.Count
s = .Cells(rpos, cpos + n - 1)
のように、シートを明示した場合はどうでしょう?
ありがとうございます。Withってネストできますよね?
(1)ループの外で With Worksheets("XXXX")でシート明示しました....NGでした。(WIthのネスト)
(2)ご指摘の場所でシート明示し、日付セル( Cells(rpos - 1, cpos + n - 1))のコントロール、プロパティ部分はWithを用いず全てコーディングしました。....NGでした。
(*Cells()はObjectとですので、Cellの頭の点はお間違いですね?)
*何が原因なのでしょうか?この2,3日悩んでおります!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Visual Basic(VBA) VBA横データを縦にしたいです 2 2023/08/08 19:38
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Excel(エクセル) エクセル VBAの構文について 2 2023/02/10 18:26
- Visual Basic(VBA) Sheet1のA列にコードB列にメアド、Sheet2のB列にコード一覧とD列にメアド一覧があり、Sh 3 2022/10/19 11:57
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
- Visual Basic(VBA) 【VBA】Excelの特定範囲のセルを画像で保存したい 2 2023/01/25 13:06
- Visual Basic(VBA) Excelのマクロ ブック間である範囲をコピー Workbooks(“a.xlsx“).Sheets 3 2022/05/12 17:02
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【エクセル】IF関数 Aまたは...
-
エクセル 足して割る
-
エクセルで指定したセルのどれ...
-
エクセルの一つのセルに複数の...
-
Excelで数式内の文字色を一部だ...
-
貼り付けで複数セルに貼り付けたい
-
Excel 例A(1+9) のように番地の...
-
セルをクリック⇒そのセルに入力...
-
セルの高さ(行高)を求めるには?
-
複数のセルのいずれかに数字が...
-
エクセルで住所と建物名を分け...
-
エクセル “13ヶ月”を“1年1ヶ月...
-
(Excel)数字記入セルの数値の後...
-
【Excel】 セルの色での判断は...
-
エクセル オートフィルタで絞...
-
数式を残したまま、別のセルに...
-
excelの特定のセルの隣のセル指...
-
Excelでのコメント表示位置
-
対象セル内(複数)が埋まった...
-
EXCEL VBA セルに既に入...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで指定したセルのどれ...
-
【エクセル】IF関数 Aまたは...
-
セルをクリック⇒そのセルに入力...
-
Excelで数式内の文字色を一部だ...
-
エクセル 足して割る
-
対象セル内(複数)が埋まった...
-
貼り付けで複数セルに貼り付けたい
-
Excelでのコメント表示位置
-
エクセルのセルの枠を超えて文...
-
エクセル オートフィルタで絞...
-
エクセルの一つのセルに複数の...
-
EXCEL VBA セルに既に入...
-
【Excel】 セルの色での判断は...
-
(Excel)数字記入セルの数値の後...
-
エクセル “13ヶ月”を“1年1ヶ月...
-
excelのCOUNTIF関数で、『範囲=...
-
Excel2003 の『コメント』の編...
-
枠に収まらない文字を非表示に...
-
Excelで住所を2つ(町名迄と番...
-
複数のセルのいずれかに数字が...
おすすめ情報