- ベストアンサー
エクセルのマクロで
Cells(r-2,c) ="=if(L" & N & "=0,"""",L" & N & "")"" の意味を教えてください N=5です (r-2, c)のセルはわかります まったくの初心者なので なるべくわかりやすくお願いいたします
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
r-2,cのセルに、L列のN行目が「0」であれば空白「””」を入れて、「0」でなければL列N行の値をそのまま入れる。という事です。 分かり易く言うと、Nが10行目だったら r-2,cに「=if(L10=0, "", L10)」と入力した事になります。 Nは何処かで定義されていると思いますよ。
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
(1)#2のご回答の >セルL5という文字を表示しろ->セルL5の内容(値)を表示しろだと思います。 (2)書いておられるようにFormula(RangeのプロパティにFormulaがある)を普通つけて記述して、式をセットすることを明示するのが文字列の=何々を代入することが判って良いが、質問例のようにしても、即、式のセットと見てくれるので、便利ではあります。 (3)=の次からが、実際このステップを実行される時どういう文字列になるか考えれば良いです。 "=if(L" -----> =IF(L N --->実行時に決まってくる数字が、文字列に直されて文字数字の5になる。 そして&で文字列結合されて =IF(L5 となる。 "=0,"""",L"--->この部分は決まった文字列で良いので =0,"",L になる。 & N---->Nが文字列に直されて文字数字の5となり、結合されて =0,"",L5 となる。 & "")"" --->文字列)が結合されて=0,"",L5)となる。 全体では=IF(L5=0,"",L5)と、実行時にはなります。 多分""""--->"","")""---->")"でも同じになると思います(”がしつこい。余分)。 Nのように変数にしておいて実行時に文字列化して、文字列の1部に組みこむのは、プログラムにおける常套手段です。たまたまエクセルは文字結合の&を使うとNを自動的に文字列化して結合します。
お礼
大体の事がわっかたような気がします 後でゆっくり見直したいと思います ありがとうございました
#2です。 >VisualCの書き方です。 そういうわけでもないと思いますけど?。 #もちろん僕が動作させようとしたときも Subプロシージャでくくってますよ(^^;; でも確かに普通は#3の方法を取る気がしますね。 質問からしてhajihaji様が自分でそのソースを 書いたのではなく、どこかの本やプログラムを もらってきたのでしょう。 本や作った人のスタイルか、 あるいは理解の仕方か それとも全然別の理由か・・・う~む。 #って何か一番分かりやすく「意味」を 述べているのは#1さんの気がする
お礼
そのとうり、本から参考になる部分だけを抜きだして 自分なりに使おうとしましたが やはり、1から勉強しないとダメですね でもカス頭にはあまりにも難しいです ありがとうございました
- primary5869
- ベストアンサー率27% (9/33)
やっぱり、と思ったので書かなかったのですが、^^(卑怯もんです、はい) VisualBasicの書き方ではないです。 VisualCの書き方です。 VisualBasicの記述で、エクセルなどは動作します。 以下のようなら、分かります。 Sub Test() Dim r, c, N As Integer r = 7 c = 12 N = 5 If Sheet1.Cells(r - 2, c) = Sheet1.Range("L" & N) Then Sheet1.Cells(r - 2, c) = 0 End If End Sub
お礼
回答ありがとうございました VisualBasicとVisualCの違いさえ、わかりませんでした もっと勉強します
ダブルクオーテーションマークが多すぎる気がする。 ソースとして貼り付けたらエラーが出た rの値もcの値も不明なので分かりませんが Cells(r - 2, c).Formula = "=if(L" & N & "=0,"""",L" & N & ")" なら 「セルL5(N=5だから)の値が0ならセル(r-2,c)に 何も表示するな そうでなければ セルL5の内容を表示しろ。」 Cells(r - 2, c).Formula = "=if(L" & N & "=0,"""",""L" & N & """)" なら 「セルL5(N=5だから)の値が0ならセル(r-2,c)に 何も表示するな。 そうでなければ セルL5という文字を表示しろ。」 となる。 ・・・って書いて気づいたときには #1さんにスピードで負けた
お礼
時間を争ってまでの回答ありがとうございました
お礼
PAPA0427様 何度か回答をいただきました いつも分かりやすく 初心者には助かります