今、withを勉強しています。
つい最近も教えて頂きました。
with xxx の xxxだけしか無いような極端な例を考えてみました。
こんなことは出来ないのでしょうか。
以下にコードを載せます。
test8が原型で、test9がwithを使ってみたものです。
質問は、この「obj8」をどう表現するかです。
宜しくお願いします。
Sub test8()
Dim n As Long
Dim obj8 As Variant
For n = 1 To 5
obj8 = Range("B" & n).Value
Range("C" & n).Value = obj8
Next
End Sub
Sub test9()
Dim n As Long
Dim obj8 As Variant
For n = 1 To 5
With obj8
[.] = Range("B" & n).Value
Range("C" & n).Value = [.]
End With
Next
End Sub
No.2ベストアンサー
- 回答日時:
こんばんは
https://learn.microsoft.com/ja-jp/office/vba/lan …
With With object [ statements ] End With [ statements ] End With
つまりは Object である事が条件となります
Sub test8()
Dim n As Long
Dim obj8 As Variant
For n = 1 To 5
obj8 = Range("B" & n).Value
Range("C" & n).Value = obj8
Next
End Sub
obj8 は As String (Variant/String) 文字列です
Sub test9()
Dim n As Long
Dim obj8 As Variant
For n = 1 To 5
With obj8 '未設定Variant型変数
[.] = Range("B" & n).Value
Range("C" & n).Value = [.]
End With
Next
End Sub
obj8 は Variant
代入されていないVariant型変数は Empty です
変数obj8を Object型にする場合には
使用前に Set obj8=Object とする必要があります
例 A1セルをセット
Sub test9()
Dim n As Long
Dim obj8 As Variant '(Range)
Set obj8 = Range("A1") 'RangeObjectを代入(セット)
For n = 1 To 5
With obj8
.Value = Range("B" & n).Value
Range("C" & n).Value = .Value
End With
Next
End Sub
Range("B" & n)の値をA1に書き出し
セルA1の値をRange("C" & n)セルに書き出す
結果として
Range("B" & n).Value=Range("C" & n).Value
Next
Range("A1").Value= Range("B" & 5).Value
End Sub
と同じ結果で この例の場合 With obj8 のメリット(合理性)はありません
今回もありがとうございました。
良く分かりました。
説明を読んだところ、『variant』と在りましたので、
そう書いてみましたが、『object』ということなのですね、
本質が分かっていないからの質問でした。
>メリット(合理性)はありません
これは勿論承知しております。
あくまで勉強の過程として作ったモノです。
Sub test7()
Dim n As Long
Dim obj8 As Range
Set obj8 = Range("A1")
For n = 1 To 5
With obj8
.Value = Range("B" & n).Value
Range("C" & n).Value = .Value
End With
Next
End Sub
お世話になりました。
No.4
- 回答日時:
こんにちは
with構文はオブジェクト等に対して用いるものです。
https://learn.microsoft.com/ja-jp/office/vba/lan …
一方で、ご提示の obj8 は単純変数で、その内容は値です。
「値」に対してwithを用いること自体に意味がありませんので、通常はご提示のtest8のような記述がとられます。
どうしても
>with obj8
のような形式にしたいのなら、
With obj8
obj8 = Range("B" & n).Value
Range("C" & n).Value = obj8
End With
としておけば実行できますが、Withに意味がないことがわかるでしょう。
意味のあるコードしたければ、ユーザ定義型やクラスを用いれば可能です。
例えば、
Type hoge
v As Variant
End Type
Sub test9()
Dim n As Long
Dim obj8 As hoge
For n = 1 To 5
With obj8
.v = Range("B" & n).Value
Range("C" & n).Value = .v
End With
Next
End Sub
みたいに。
(ご提示の内容で、このような回りくどいことをする意味はありませんけれど)
お教え有難うございました。
たった今、クローズしてしまったところで、
前後してしまいました。
申し訳ありません。
objectであること、
少し前に分かりました。
全く了解です。
お世話になりました。
No.3
- 回答日時:
With With object [ statements ] End With [ statements ] End With
コピペミス
With With object [ statements ] End With です
参考リファレンスサイト 抜粋
すみません
No.1
- 回答日時:
with って『頭を纏める』ですからねぇ。
with range("A1")
.value=123
end with
であって
with value
range("A1"). = 123
end with
ではないと思いますよ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) ExcelVBAで、index、match関数を使用して、指定範囲に出力したい 3 2022/10/18 21:53
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) Dateserialで データ抽出 2 2022/06/26 21:07
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ゴールデンウィークの略は?GW...
-
「多くの方々」と「多くの方」...
-
『50歳の誕生日おめでとう』を...
-
単位の何本とかってなんて訳せ...
-
Creampieは何故クリームパイで...
-
外国人が箇条書きする際、先頭...
-
数学に関して
-
ご縁を外国語で言うと?
-
英語にしてください!5文で犬派...
-
ある会合の、「第1回」、「第2...
-
ofで結ぶ複数形と単数形
-
章立ては、部、章、節、項、だ...
-
せっかく○○してくださったのに...
-
「ポジション」と「ポディショ...
-
『あなたがいつも幸せの中にい...
-
英語で「30歳の誕生日おめでと...
-
英語にしてほしいです! 私の好...
-
MSNのホームからhotmailのペー...
-
見ず知らずの人とでも、同じ本...
-
東と西
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ゴールデンウィークの略は?GW...
-
「多くの方々」と「多くの方」...
-
高3春のスタサポ αなのに、英語...
-
Creampieは何故クリームパイで...
-
メールの「様、」←様の後の句読...
-
『50歳の誕生日おめでとう』を...
-
単位の何本とかってなんて訳せ...
-
外国人が箇条書きする際、先頭...
-
ご縁を外国語で言うと?
-
章立ては、部、章、節、項、だ...
-
数学に関して
-
英語で「30歳の誕生日おめでと...
-
revert
-
ある会合の、「第1回」、「第2...
-
must notに、「~のはずがない...
-
good dayに対してなんと返すの...
-
半角のφ
-
「ポジション」と「ポディショ...
-
赤ちゃんの百日祝い 英語で何...
-
『あなたがいつも幸せの中にい...
おすすめ情報