• ベストアンサー

VBA 数式の入力方法

セルの連結や文字列の扱いで混乱してエラーばかり起こしています。 画像にて状況を説明致します。 ・行を表す、変数i は11 です。 ・N11セルに、画像上部の数式となる様にVBAでコードを入力したいです。 (→C11セルが10桁なら、頭に0を加えて11桁にする。そうでなければ   その数字を入力する) ・「Range("N" & i).Formula = 」の続きのコードをご教示願います。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • SI299792
  • ベストアンサー率47% (772/1616)
回答No.2

私から見れば、無駄以外の何物でもありませんが、 Cells(i, "N") = "=IF(LEN(C" & i & ")=10,0&C" & i & ",C" & i & ")"

0611birth
質問者

お礼

意図通り動きました。 すぐに感覚や仕組みを忘れてしまうので、継続してVBAの練習をしたいと思います。 有難うございました。

Powered by GRATICA

その他の回答 (2)

  • SI299792
  • ベストアンサー率47% (772/1616)
回答No.3

普通にに入力したら、 = "=IF(LEN(C11)=10,0&C11,C11)" 「11」👉「" & i & "」 に置き換えます。

  • SI299792
  • ベストアンサー率47% (772/1616)
回答No.1

C11 ~C列のデータの最後まで数式を入れるとして、 範囲指定をして数式を入力すれば、コピペと同じ、自動で変換してくれます。 Option Explicit ' Sub Macro1() Dim REnd As Long ' REnd = Cells(Rows.Count, "C").End(xlUp).Row Range("N11:N" & REnd) = "=IF(LEN(C11)=10,0&C11,C11)" End Sub ' ' どうしてもループにこだわりたいなら、時間がかかるのでお勧めしませんが、 Sub Macro2() Dim RInp As Long ' For RInp = 11 To Cells(Rows.Count, "C").End(xlUp).Row Cells(RInp, "N").FormulaR1C1 = "=IF(LEN(RC[-11])=10,0&RC[-11],RC[-11])" Next RInp End Sub

0611birth
質問者

補足

有難うございます。 「11」はループにて変わる為、 "=IF(LEN(C11)=10,0&C11,C11)" の部分を、"=IF(LEN("C" & i)=10,0&("C" & i),("C" & i)) の様にしたいのですが、理解が足りずエラーとなります。お時間頂けたら宜しくお願い致します。

関連するQ&A