Excel VBA質問箱 IV

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

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


8506 / 13646 ツリー ←次へ | 前へ→

【32733】繰り返し処理 超初心者 05/12/21(水) 14:01 質問[未読]
【32747】Re:繰り返し処理 Jaka 05/12/21(水) 16:13 回答[未読]
【32783】Re:繰り返し処理 Jaka 05/12/22(木) 9:16 発言[未読]
【32805】Re:繰り返し処理 超初心者 05/12/22(木) 14:24 質問[未読]
【32810】Re:繰り返し処理 Jaka 05/12/22(木) 15:17 回答[未読]
【32883】Re:繰り返し処理 超初心者 05/12/26(月) 13:50 お礼[未読]

【32733】繰り返し処理
質問  超初心者  - 05/12/21(水) 14:01 -

引用なし
パスワード
   C列に列を挿入して計算した後B列を削除するコードがあります。
定数"上"と変数"下"は列が移動しても値は不変です。
コードを書き加えてAD列まで同じ処理をさせたいのです。
(列挿入→計算→1列前の列削除)
for loopを使うのかと考えたり過去ログを調べたり
してみたのですが、変数をどう設定したらいいかわかりませんでした。
よろしくご教授ください

Columns("C:C").Select
Selection.Insert Shift:=xlToRight
Range("C2").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-1]=""?"","""",RC[-1]*1*RC[-2])"
Selection.Copy
上= 2                
左= 3   (C列の3)                  
下= Range("a65536").End(xlUp).Row
右 =3   (C列の3) 
Range(Cells(上, 左), Cells(下, 右)).Select 
Selection.PasteSpecial Paste:=xlAll   
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False       
Range("B1").Select
Application.CutCopyMode = False
Selection.Cut Destination:=Range("C1")
Columns("B:B").Select
Selection.Delete Shift:=xlToLeft
 

【32747】Re:繰り返し処理
回答  Jaka  - 05/12/21(水) 16:13 -

引用なし
パスワード
   どういう風に繰り返すのか解らずに作ってみたけれど...。
計算出来る範囲を超えちゃってエラーになります。

With Range(Range("A2"), Range("A65536").End(xlUp))
   For i = 2 To 30
     AD1 = Cells(2, i).Address(0, 0)
     AD2 = Cells(2, i - 1).Address(0, 0)
     .Offset(, 255 - i + i).Formula = "=IF(" & AD1 & "=""?"",""""," & AD1 & "*1*" & AD2 & ")"
     .Offset(, i).Value = .Offset(, 255 - i + i).Value
     DoEvents
     .Offset(, 255 - i + i).ClearContents
   Next
End With
Columns(256).Delete

【32783】Re:繰り返し処理
発言  Jaka  - 05/12/22(木) 9:16 -

引用なし
パスワード
   > .Offset(, 255 - i + i)
この類全く意味がありません。
なんか勘違いしてました。

.Offset(, 255)
これで良いです。

【32805】Re:繰り返し処理
質問  超初心者  - 05/12/22(木) 14:24 -

引用なし
パスワード
   ▼Jaka さん:
レスありがとうございました。
教えていただいたコードに書き直して実行したところ
計算した値がエラー()になってしまいました。
列挿入がぬけているからだと思い

"AD2 = Cells(2, i - 1).Address(0, 0)"のあとに
     ".Selection.Insert Shift:=xlToRight"と書き足すと
オブジェクトはこのプロパティまたはメソッドをサポートしていません
と出てしまいました。
それからコードを解読しようとしたのですが、AD1 = Cells(2, i).Address(0, 0)
とAD2 = Cells(2, i - 1).Address(0, 0)がわからなかったので教えていただけない
でしょうか。どうぞよろしくお願いします

【32810】Re:繰り返し処理
回答  Jaka  - 05/12/22(木) 15:17 -

引用なし
パスワード
   >計算した値がエラー()になってしまいました。
の原因は、ちゃんと書いておきました.....。
要するにどう繰り返すのか解らないから大体で作ったら、
計算できる主要範囲を超えちゃったみたいでエラーになるのです。

>それからコードを解読しようとしたのですが、AD1 = Cells(2, i).Address(0, 0)
>とAD2 = Cells(2, i - 1).Address(0, 0)がわからなかったので教えていただけない
Addressプロパティーのヘルプを見たろろくな事が書いてなかったので、
正確に書くと
AD1 = Cells(2, i).Address(False, False)
意味は、
msgbox "Cells(3,5)のアドレスは、" & cells(3,5).Address(0, 0)

合っているのか解らない関数をシート2に書き込みましたから確認してください。

With Range(Range("A2"), Range("A65536").End(xlUp))
   For i = 2 To 30
     AD1 = Cells(2, i).Address(0, 0)
     AD2 = Cells(2, i - 1).Address(0, 0)
     .Offset(, 255).Formula = "=IF(" & AD1 & "=""?"",""""," & AD1 & "*1*" & AD2 & ")"
     Sheets(2).Range(.Offset(, i).Address).Value = "'=IF(" & AD1 & "=""?"",""""," & AD1 & "*1*" & AD2 & ")"
     .Offset(, i).Value = .Offset(, 255).Value
     DoEvents
     .Offset(, 255).ClearContents
   Next
End With
Columns(256).Delete

【32883】Re:繰り返し処理
お礼  超初心者  - 05/12/26(月) 13:50 -

引用なし
パスワード
   ▼Jaka さん:
お返事おそくなり申し訳ありません。いろいろありがとうございました。
教えていただいたコードを書き換えて自分の行いたい処理を実行できるように
していきます。

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