VBA勉強中です。
For~Nextについて、いまいちわからないので、教えてほしいのですが、
下記の表を作り、テーブルと言う名前を付けました。
C列に上からA.Bの値を入れようと思います。
| A | B |C
1| AA| 11|
2| AB| 12|
Sub Macro1()
Dim AA As Range, BB As Range, AB As Variant
Dim myTbl As Range, myFld As Integer, i As Integer
Set AA = Range("A1") 'AAの箱にA1の値を
Set BB = Range("B1") 'BBの箱にB1の値を
Set myTbl = Range("テーブル") 'myTblの箱にテーブルを
myFld = 3 'myFldの箱に3列目
AB = AA & "." & BB 'A1とB1の値を入れる
For i = 1 To myTbl.Rows.Count 'iはテーブルの1行目から最後の行まで
If myTbl.Cells(i, myFld).Value = AB Then 'テーブルの1行目のCのセルにA1とB1の値を入れる
Exit Sub
End If
Next
End Sub
と思うのですが、やはり動きません。
アドバイスをお願いします。
No.4ベストアンサー
- 回答日時:
Set AA = Range("A1") 'AAの箱にA1の値を
でなく ここではAAの箱にA1の箱を指定しただけです。
AAの箱(変数)にA1の値を なら
Dim AA As Variant
AA = Range("A1").Value
For Next で テーブルの処理行に応じて
'iはテーブルの1行目から最後の行まで 対象を変化させて
実行すべきところ 処理すべき AAの箱 BBの箱が
For Next の外にあり 固定で Setでオブジェクト指定する効果なく固定になっています。
If Then End If Exit Sub はここでは使わない。
条件判定と 出力実行処理 が混乱しているかも・・
・・とりあえずそのまま直す
Sub Macro1()
Dim AAの箱 As Range, BBの箱 As Range
Dim AB As Variant
Dim myTbl As Range, 出力列 As Integer
Dim テーブル処理行 As Integer
Set myTblの箱 = Range("テーブル") 'myTblの箱にテーブルを
出力列 = 3 '出力列にmyFldの箱の3列目
For テーブルの処理行 = 1 To myTblの箱.Rows.Count
Set AAの箱 = Range("A" & テーブルの処理行)
Set BBの箱 = Range("B" & テーブルの処理行)
AB = AAの箱.Value & "." & BBの箱.Value 'A1とB1の値を入れる
myTblの箱.Cells(テーブルの処理行, 出力列).Value = AB 'テーブルのテーブルの処理行目のCのセルにA1.B1の値を入れる
Next
End Sub
'整理すると "テーブル"と言う範囲の中での処理を意図しているようなので
'Set AA = Range("A1") で進めても テーブルの移動に追従しない(上のはテーブル=Range("A1:C3")固定)ので
'#2に沿って
Sub テーブルのAAとBB⇒CC()
出力列 = 3
Set 処理範囲 = Range("テーブル")
With 処理範囲
For テーブルの処理行 = 1 To .Rows.Count
A列の値 = .Cells(テーブルの処理行, 1).Value
B列の値 = .Cells(テーブルの処理行, 2).Value
出力の値 = A列の値 & "." & B列の値
.Cells(テーブルの処理行, 出力列).Value = 出力の値
Next
End With
End Sub
丁寧に解説を書いていただき、有難うございました。
For~Nextの意味はわかるのですが、処理の記述の仕方がわからなかったんです。解りやすくて、勉強になりました。
No.3
- 回答日時:
#1です。
> これは If文です。
> 条件が合わないので Exit Sub に入り、そのまま何もしないで終了です。
すみません、勘違いでした。
何も起きない理由は「条件が合わない場合の記述がない」ためです。
If を使うなら
If myTbl.Cells(i, myFld).Value = AB Then
Exit Sub
Else
myTbl.Cells(i, myFld).Value = AB
End If
のように Else で条件が一致しない場合の処理をいれるか、
If myTbl.Cells(i, myFld).Value <> AB Then
myTbl.Cells(i, myFld).Value = AB
End If
のように条件が一致しない場合に処理するようにするかです。
No.2
- 回答日時:
たぶん、こういうことでは?
なお、テーブルと設定されたのでしたら、そのまま使えばよいと思います。
Sub TestMacro2()
Dim i As Long
Const myFld As Integer = 3
With Range("テーブル")
For i = 1 To .Rows.Count
.Cells(i, myFld).Value = .Cells(i, 1).Value & "." & .Cells(i, 2).Value
Next i
End With
No.1
- 回答日時:
この行の意味は解って書いてますか?
If myTbl.Cells(i, myFld).Value = AB Then
Exit Sub
End If
これは If文です。
条件が合わないので Exit Sub に入り、そのまま何もしないで終了です。
代入したいなら上記3行を下記に置き換える
myTbl.Cells(i, myFld).Value = AB
但し、この指定は全部に同じ値を入れるようになってます。
それで良いの?
本当は
myTbl.Cells(i, myFld).Value = Range("A" & i) & "." & Range("B" & i)
のようにしたいのでは?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
- Visual Basic(VBA) エクセル マクロ(A1:A10)までの中で一番多く出た数字をB10に表示 6 2023/04/25 17:01
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
至急!尿検査前日にオナニーし...
-
尿検査前日に自慰行為した時の...
-
白血球が多いとどんな心配があ...
-
彼女のことが好きすぎて彼女の...
-
検便についてです。 便は取れた...
-
腕を見たら黄色くなってる部分...
-
勃起する時って痛いんですか? ...
-
尿検査の前日は自慰控えたほう...
-
精子が黄色?
-
中出しをするとお腹が痛い・・・。
-
EXCELで条件付き書式で空白セル...
-
excelでsin二乗のやり方を教え...
-
これって喉仏ですか? 私は女性...
-
口の中に黒い血の塊
-
納豆食べた後の尿の納豆臭は何故?
-
2つの数値のうち、数値が小さい...
-
エクセル指定した範囲からラン...
-
筋トレするとチンコが縮んじゃ...
-
変な話しになります。尿検査で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
至急!尿検査前日にオナニーし...
-
首吊りどこ締めるの
-
尿検査の前日は自慰控えたほう...
-
尿検査前日に自慰行為した時の...
-
検便についてです。 便は取れた...
-
白血球が多いとどんな心配があ...
-
中出しをするとお腹が痛い・・・。
-
射精をして1週間以内に尿検査を...
-
彼女のことが好きすぎて彼女の...
-
腕を見たら黄色くなってる部分...
-
勃起する時って痛いんですか? ...
-
変な話しになります。尿検査で...
-
これって喉仏ですか? 私は女性...
-
EXCELで条件付き書式で空白セル...
-
男です。昨日の午後3時くらいに...
-
今朝、毎朝の習慣でオナニーし...
-
納豆食べた後の尿の納豆臭は何故?
-
1日前の検尿
-
値が入っているときだけ計算結...
-
精子が黄色?
おすすめ情報