🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

1回答

623閲覧

【VBA初心者】Excel vbaで数値入力する方法

reat326

総合スコア2

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2020/11/29 10:48

編集2020/12/01 07:23

A1を1行目として考える。
A1に"1"と記入する。
(1列分)

A2を2行目として考える。
2行目をA2:"2",B2:"3",C2:"4",D2:"5",E2:"6",F2:"7”,G2:"8"と記入する。
(7列分)

A3を3行目として考える。
3行目をA3:"9",B3:"10",C3:"11",D3:"12",E3:"13",F3:"14",G3:"15",H3:"16",J3:"17",K3:"18",L3:"19",M3:"20"~"27"と記入する。
(19列分)

4行目以降↓
4行目
(37列分)
5行目
(61列分)

このようなプログラムをVBAで作る際には、
どのようなプログラムを書けば良いのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2020/11/29 12:16

> 2以降が分かりません。 ぜんぶですやん。。
meg_

2020/11/29 13:25

「既定値」とはユーザー入力で決めるものなのでしょうか?
m.ts10806

2020/11/29 19:48

まずは思うように一通り書いてみるところから。 あと、コードやエラーはマークダウンのcode機能を利用してご提示ください。 https://teratail.com/questions/238564
mattuwan

2020/12/01 07:04

4行目は26列分が入力の対象でしょうか?
guest

回答1

0

コメントする方の心無い言葉に傷つく人も居るので気をつけて欲しいと考えております。

質問文に言葉が足りないことを棚に上げて、
自分の意図が伝わらないことを他人のせいにされても困ります。
回答側は質問文を読んだ率直な感想をコメントされているだけで、
それがいいとも悪いとも言ってないと思います。
ただただ、質問者の意図が伝わらないことを伝えられているだけかと思います。
文字だけのやり取りですので、どうしてもニュアンスが伝わらなく、
きつく受け取られてしまうこともありますが、この辺は慣れていただくしかないかなと思います。
あと、全く放置されるより何らかの返答がある方がまだましかと思います。

この質問の後、もう一方で同じ質問をされたんですかね?
そういう時は、こっちは解決にしておいてもらえませんか?
それから、もう一方の質問もそちらの意図が伝わってないようですが、
解決なんですかね?(こちらの勘違いでしょうか?)
で、こっちは未解決で回答を待っているのですかね?

とりあえず回答を待っているのであろうということで、本題。

A1に"1"と記入する。
2行目をA2:"2",B2:"3",C2:"4",D2:"5",E2:"6",F2:"7”,G2:"8"と記入する。
3行目をA3:"9",B3:"10",C3:"11",D3:"12",E3:"13",F3:"14",G3:"15",H3:"16",J3:"17",K3:"18",L3:"19",M3:"20"~"27"と記入する。

このようなプログラムをVBAで作る際には、
どのようなプログラムを書けば良いのでしょうか。

ここだけを読むと

range("A1").value = 1 range("A2").value = 2 range("B2").value = 3 range("C2").value = 4 以下続く

このようにつらつら書き連ねていけばいいけど、
そういうことではないですよね?

繰り返しの構文を使って、コードを短くしたいと思ったのですよね?
ならば、そのように書くべきです。

A1を1行目として考える。
A2を2行目として考える。
A3を3行目として考える。

この辺の表現もわかりづらいと思います。
A1はA列の1行目のことだから、1行目として考えなくても1行目ですよね?
A2は当然2行目。
当たり前のことを言ってるだけで、よくわからないといえばよくわからない。

まずはこう考えてみてはいかがでしょうか?

1)A1セルを起点に考える(C5セルに起点が変わっても、起点は起点で)
2)1回目は、起点から1行、その時セルの幅は、1列分
3)2回目は、起点からの2行目、その時のセルの幅は、7列分
↑ここをこちらが6列と数え間違いましたので確認しました。
4)3回目は、起点からの3行目、その時のセルの幅は、19列分
5)以降任意の回数まで繰り返す。

この時に、その対象のセルに連番を記入したい

1+3n(n-1)

で、列が増えるなら、
ならば、ルールが解っているならそのルールも説明すべきです。
それから、ここのサイトは画像を挿入できますので、
意図する結果を画像で説明されると分かりやすいかなと思います。

このことをコード化したら、

ExcelVBA

1Sub test() 2 Dim i As Long 3 Dim j As Long 4 Dim k As Long 5 6 For i = 1 To 5 7 For j = 1 To 1 + 3 * i * (i - 1) 8 k = k + 1 9 Range("A1").Cells(i, j).Value = k 10 Next 11 Next 12End Sub

こんな感じになると思います。
たぶん、列数と入力する数値と2つ同時に違う量変化させたいけど、
やり方が思いつかなかったと思いますが、
意図がくみ取れてますでしょうか?

あと、
「初心者」と言えばなんでも許されるわけでもなければ、
回答者の対応が変わるわけでもありません。
初心者でも上級者でも対応は変わりません。
初心者なんだからもっと優しく教えろよとお思いかも知れませんが、
単に、知らない人が聞く、知っている人が答えるというスタンスで良くないですか?
当然、意図が伝わらなければ、回答者も質問者も聞き返すことになると思います。
適切な言葉を思いつかないことがあるのは、質問者も回答者も同じです。
やり取りの中で、話をすり合わせていけたらと思います。

あと、解決してもしてなくても、
回答が参考になった。とか
思い通りの結果が得られた。とか、
意図とは違う結果になった。とか、
他の回答を参考にしたので、試せる時間がない。とか
長々と説教がうるさい。とか、(たまに言われます^^;)
回答にコメントいただけますか?
回答した結果がどうなったかは知りたいです。
こちらも日々勉強なので。。。

長々と乱文、失礼しました。

投稿2020/12/01 09:53

mattuwan

総合スコア2163

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

reat326

2020/12/01 10:19

明日試してみます。 丁寧な解説をありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問