- 締切済み
VBAでカウンターを設定しています
Range("A1") = (Range("A1") + 1) を作成しましたが初期値と最終値を設定するには どのようなマクロを追加すればよいのでしょうか
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- kagakusuki
- ベストアンサー率51% (2610/5101)
回答No.4の文面を入力している途中で回答No.3に対するお礼が投稿されていた事にしばらく気づきませんでした。 >1 A1セルにカウント数字を表示させたい。 >2 フォームボタンを作成 >3 フォームボタンを一回クリックでカウント数字が1上がる >4 初期値と最終値を予め、設定しておく >5 最終値を超えたとき、初期値に戻る という事でしたら以下の様にして下さい。 まず、「Microsoft Visual Basic for Applications」のウィンドウを開き、御質問のマクロを設定したいExcel bookの標準モジュールに以下のVBAのマクロの構文を入力して下さい。 Sub マクロの名称() With Range("A1") If Not IsNumeric(.Value) Then .Value = 1 ElseIf Int(.Value) <> .Value Or .Value > 19 Or .Value < 1 Then .Value = 1 Else .Value = .Value + 1 End If End With End Sub 次に、フォームコントロールボタンを作成し、そのボタンに上記のマクロを登録して下さい。 以上です。
- kagakusuki
- ベストアンサー率51% (2610/5101)
>貴殿のご説明の中の日本語注釈を省いて >以下のマクロにコピーをしました。 >Range("A1").Value = 1 >Do > If Then Range("A1").Value = Range("A1").Value + 1 > Loop While Range("A1").Value < 20 >エラーメッセージが出て動きません。 当たり前です。 >カウントが1進むのに必要となる条件 の部分は単なる注釈などではありません。 If~Then にはIfとThenの間に必ず条件を指定する式が必要であるのに、それを省略してしまっているのですから、質問者様がVBAの構文として成り立たない様に変えてしまっている訳です。 どの様な場合にカウントを進めるのかという条件に関して質問者様が何も説明していないため、仕方が無く >カウントが1進むのに必要となる条件 >の様な形式のマクロ という書き方をせざるを得ませんでしたが、「カウントが1進むのに必要となる条件」の部分に当てはまる式は、当然の事ながら「質問者様がどの様な場合にカウントを進めたいのか」という条件によって変わって来ます。 ですから、「質問者様が考えている『どの様な場合』」に合わせた条件式を質問者様が考えて、その条件式で >カウントが1進むのに必要となる条件 の部分を差し替える様にして下さい。 もし条件式を自力で考え出す事が出来ない場合には、「質問者様がどの様な場合にカウントを進めたいのか」を回答者にちゃんと説明する様にして下さい。 現状では、質問者様が状況や条件に関する必要な説明をしていない事が原因で、問題を解決するために必要不可欠な情報が不足しています。 それでは問題を解決する具体的な方法を提示する事など誰にも不可能です。 >当方VBAは初心者です。 と仰るのであれば、質問者様御自身は何をどうしたいのかという事を、正確に説明する様にして下さい。
- kagakusuki
- ベストアンサー率51% (2610/5101)
回答No.2です。 もし条件などは特になく、同じような処理を1回済ませるごとにカウントが必ず1ずつ進むようにする場合には、以下の様な型式のマクロにして下さい。 Dim i As Long For i = 1 To 20 カウント以外の処理 Range("A1").Value = i Next i
お礼
当方の説明不足をお詫びいたします。 行いたいことを詳しく記述させていただきます。 1 A1セルにカウント数字を表示させたい。 2 フォームボタンを作成 3 フォームボタンを一回クリックでカウント数字が1上がる 4 初期値と最終値を予め、設定しておく 5 最終値を超えたとき、初期値に戻る 以上のマクロを設定したいのですが、、、、
- kagakusuki
- ベストアンサー率51% (2610/5101)
追加するのではなく、以下の様な形式のマクロに変更された方が良いと思います。 Range("A1").Value = 1 Do カウント以外の処理 If カウントが1進むのに必要となる条件 Then Range("A1").Value = Range("A1").Value + 1 Loop While Range("A1").Value < 20
お礼
ありがとうございます。当方VBAは初心者です。貴殿のご説明の中の日本語注釈を省いて 以下のマクロにコピーをしました。 Range("A1").Value = 1 Do If Then Range("A1").Value = Range("A1").Value + 1 Loop While Range("A1").Value < 20 エラーメッセージが出て動きません。トホホ。。。。
- neKo_quatre
- ベストアンサー率44% (735/1636)
初期値が1なら、 Range("A1") = 1 最終値が20なら、今のマクロを、 if Range("A1")<20 then Range("A1") = (Range("A1") + 1) だとか。
お礼
ありがとうございます。早に試してみました。 Range("A1") = 5 if Range("A1")<20 then Range("A1") = (Range("A1") + 1) としてマクロを動かすと 6 で止まってしまいます。トホホ、、、です。
お礼
kagakusukiさん、当方の意図を十分にお伝えできず、申し訳ございませんでした。ご教授のとおり、おこないましたところ、完璧に動作しました。本当にありがとうございました。助かりました。感謝、感謝です。