• 締切済み

VBAでカウンターを設定しています

neKo_quatreの回答

回答No.1

初期値が1なら、 Range("A1") = 1 最終値が20なら、今のマクロを、 if Range("A1")<20 then Range("A1") = (Range("A1") + 1) だとか。

ab8102
質問者

お礼

ありがとうございます。早に試してみました。 Range("A1") = 5 if Range("A1")<20 then Range("A1") = (Range("A1") + 1) としてマクロを動かすと 6 で止まってしまいます。トホホ、、、です。

関連するQ&A

  • VBAでカウンタを作るマクロを教えてください

    行いたいことを記述させていただきます。 1 A1セルにカウント数字を表示させたい。 2 フォームボタンを作成 3 フォームボタンを一回クリックでカウント数字が1上がる 4 初期値と最終値を予め、設定しておく 5 最終値を超えたとき、初期値に戻る(制限なく)  例えば1000から2000までのカウントをおこない、2000を超えないで1000に戻る。 以上のマクロを設定したいのですが、、、、

  • エクセルVBAで困っています。

    Excell2003でマクロを作成したのですが、思うような結果が出なくて困っています。 どなたかお力をお貸しください。 お願いします。 【作成したマクロ】 Sub テスト()   myPath = ThisWorkbook.Path   buf = Dir(myPath & "¥データ¥" & "*.xls")   Do While buf <> ""     Target = "'" & myPath & "[" & buf & "]Sheet1'!R1C1"     i = i + 1     Cells(i, 1) = buf     Cells(i, 2) = ExecuteExcel4Macro(Target)     buf = Dir()   Loop End Sub 【設定状況】 ・デスクトップ上に "サンプル.xls" があり、ThisWorkBookに上記マクロを書きました。 ・デスクトップ上に "データ" というフォルダがあり、その中に、"Book1.xls" と "Book2.xls" があります。 ・"Book1.xls" のSheet1のRange("A1")には "あいうえお" が入力されています。 ・"Book2.xls" のSheet1のRange("A1")には "かきくけこ" が入力されています。 【マクロ実行結果】 ・Range("A1") ・・・ Book1.xls ・Range("B1") ・・・ #REF! ・Range("A2") ・・・ Book2.xls ・Range("B2") ・・・ #REF! となってしまいます。 【求めたい結果】 ・Range("A1") ・・・ Book1.xls ・Range("B1") ・・・ あいうえお ・Range("A2") ・・・ Book2.xls ・Range("B2") ・・・ かきくけこ よろしくお願いします。

  • EXCEL VBA コピー貼り付けについて

    はじめまして。 エクセルのマクロの記録でマクロ作成してますが、希望通りに張り付け出来ずにいます。 (1)張り付けた場所に関数がコピーされない。 (2)最終行にコピーする方法が解らない。 (3)印刷範囲の張り付けできない 皆様お忙しい中恐縮で申し訳ありませんがご教授お願い致します。 Sub コピー() ' Range("A1:AR68").Select Selection.Copy  Range("A69").PasteSpecial xlPasteAll 「最終行へ変更したい」 ActiveSheet.Paste 「関数も含めて貼り付けたい」  ・「印刷範囲をコピーしたい」   End Sub

  • エクセルVBAで

    A.xlsを開き、B.xlsも追加で開いた状態で、ウインドウAをアクティブにした状態でマクロを実行します。ウインドウAのB1の値を、ウインドウBのA1に入れたいので、 Windows("B.xls").Range("A1") = Range("B1") と書きましたが、エラーになります。どのように表記するのが正しいのでしょうか?

  • VBAの時間設定について教えてください

    質問1: VBAで、ある一定の時間だけ指定したマクロが実行されることは出来ますか? (例えば毎日16時30分~21時だけ"マクロA"が実行されるというような) ただ、16時30分にエクセルが開いているとは限らないので、もし開始される時間に開いてない場合でも、指定した時間内に1度でも開けば必ず実行されるのでしょうか? マクロAには Sub マクロA() If sheets("1").Range("A1").Value <>"" Then msgbox"このシートは使えません" Else End If End sub という命令を作っています。 質問2: SUB() EndSub で Private Sub Worksheet_SelectionChange(ByVal           Target As Range を開くことは出来ないのでしょか。 色々やってみたのですが出来ません。 すいません。初心者なので色々本を見ながら勉強していますが、なかなかうまく出来ません。 どなたか、教えてください。      

  • フィルタオプション設定をVBAで処理したものに、さらに連番(ナンバリング)もされるようにVBAを作成し直したい。

    よろしくおねがいします。 フィルタオプション設定を下記のようにVBAにて既に作成したものがあります。(ボタンをクリックするだけで、データが抽出されるようにしてあります。) Sub Macro1() Dim myRow1 As Long, myRow2 As Long myRow1 = Sheets("職員名簿").Range("B65536").End(xlUp).Row myRow2 = Sheets("東京都").Range("B65536").End(xlUp).Row If myRow2 >= 5 Then Sheets("東京都").Range("B5:T" & myRow2).ClearContents End If Sheets("職員名簿").Range("A2:S" & myRow1).AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Sheets("データ").Range("A2:F32"), CopyToRange:=Range("B5:T5"), _ Unique:=False End Sub この実行時に、A列に抽出されたデータの件数を自動的に1からの連番にて入る(ナンバリングされる)ように、VBAを追加作成し直したいのですが、 どうしたら良いか分からず、教えていただきたいと思います。 既に作成してある、VBAを実行した後に、A列のセル一つ一つに、 =SUBTOTAL(3,B$6:B6) などのように、関数を入れて抽出した行分、コピーしていけばいいのではないか。とおっしゃるかもしれませんが、 作成は私の仕事なのですが、実際これを使っていくのは、私ではなく上司なので(エクセル超初心者で使いこなせない)、 データ抽出と同時に、A列に番号が連番されていくように、 ボタン一つで、データ抽出とナンバリングができるように、 VBAを追加作成し直したいのです。 どういう命令文を追加すればよろしいのでしょうか。 よろしくおねがいいたします。

  • VBA

    VBA 申し訳ございませんが行列操作がわかりません。 行数は一定ではありません。 ご意見をいただけませんか? (1) Sheet1そして、対象例A, Cは存在します。 ↓を実行するとエラーメッセージ"インディクスが有効範囲内にありません。"が表示されます。 理由が分かりません。 Worksheets("Sheet1").Range("A", "C").Copy (2) 変更前; (A列) 1 データ1 2 3 データ2 4 . . 変更後; (A列) 1 データ1 2 データ1 3 データ2 4 データ2 . データ2 . データ2 行数は一定ではありません。 ThisWorkbook.SaveAs Filename:="c:\xxxxxxxxx.xls" Workbooks("xxxxxxxxx.xls").Worksheets("Sheet1").Range("A", "C").Paste ワークブックを別名保管して新たに作成して、同列に変更値を反映します。 そして、A列には直前のセル値を新しいワークブックに反映してすべてのセルを埋めたいのですが定義が分かりません。 (3) 行数は一定ではありません。 最終行に行を追加したのですが定義が分かりません。 Application.CutCopyMode = False Range(?????).Insert (4) 変更前; (C列) 1 データ3 2 データ3 3 データ3 4 データ3 . データ3 . データ3 変更後; (C列) 1 データ3 2 データ3 3 データ3 4 データ3 . データ3 . データ3 . データ2 行数は一定ではありません。 (3)で追加した最終行のセルCにはA列の直前値を挿入したいのですが定義が分かりません。 (5) 行数は一定ではありません。 D列を新しいワークブックに作成します。 (D列) 1 ● 2 ● 3 ● 4 ● . ● . ▲ 追加した最終行の直前まではすべて●、最終行のセルには▲を挿入したいのですが定義が分かりません。 Application.CutCopyMode = False Range("D").Insert ?????

  • Excel VBAの繰り返し構文について

    A列に日付、B列に曜日、C列に休、D列に1直、E列に2直、という形の年間シフトを作成しています。 初期値としてA2セルに数字を入力→C列が空白の時だけD列に記入するマクロを作成したと思っています。 現在仮として、 Sub C列のセルが空白の行のD列に数値を入力() 下端行 = Range("A" & Rows.Count).End(xlUp).Row '下端検出 For 行 = 3 To 下端行 '1行目から下端行まで1行ずつ繰り返す If Range("C" & 行).Value = "" Then 'その行のC列のセルの値が空白の時 Range("A2").Copy 'A2をコピーする Range("D" & 行).PasteSpecial Paste:=xlPasteFormulas 'その行のA列のセルを起点に 'して数式を貼り付ける End If Next End Sub というマクロを置いていますが、「Range("A2").Copy」の部分を 「A2を初期値として、最初にC列が空白でなくなる時まで初期値を繰り返し、次にC列が空白になった場合は初期値+1の数をD列に入力する。 ただし初期値+1の最大数は6までとする(要するに1~6の繰り返しです)」 という感じに変更したいのですが、どうすればいいのかさっぱりです…。 VBAレベルはこの質問をする程度なのでかなり初級です。

  • VBA シングルクォーテーションと=の入力

    文字が入っているセルの前後にに文字を追加するマクロ ="=aaa"と入力したい ダブルクォーテーションとイコールを追加したいのですが ↓のとおり作ってみたもののうまくいきません。 range(a1).Value = " = " & """ " = " & .Value" これだとダメですか??

  • 【エクセル】 VBAでエラーが出てわかりません。。

    やりたいことは、関数をマクロでセルに記入してオートフィルで指定した行数まで伸ばしたいのです。 (すでに関数で作成したファイルがあるのですが、行数が多いため、とても重い。。^^;) まずマクロの記録で次のマクロを取得しました。 Sub Macro4() Range("C4").Select ActiveCell.Formula = "=SUM(A2:A10)" Range("C4").Select Selection.AutoFill Destination:=Range("C4:C12"), Type:=xlFillDefault Range("C4:C12").Select Range("D11").Select End Sub そして、 Sheet2に貼り付けて > ActiveCell.Formula = "=SUM(A2:A10)" の"=SUM(A2:A10)"部分をちょっと長い関数ですが、 "=IF(ISERROR(INDEX(Sheet1!$I$1:Sheet1!$I$400,SMALL($A$2:$A$400,ROW(A1)),1)),"",INDEX(Sheet1!$I$1:Sheet1!$I$400,SMALL($A$2:$A$400,ROW(A1)),1))" と書き換えてマクロを実行すると「アプリケーション定義またはオブジェクト定義エラーです。」 というエラーが出てしまうんですが、どこを直せばわからないです。。 おかしいところを教えてください、よろしくお願いします。 わかり図らい説明かと思いますが。。この件(1行目の文)について似たようなことを解説して いるサイトがありましたら、教えて欲しいです。