- ベストアンサー
VBAでのストップウォッチの質問です
今のコードを載せます Sub test_StopwatchCell() If did Then kStopwatch Else kStopwatch Range("a1") End If End Sub 上のコードはエクセルワークシートにフォームのボタンを配置して、test_StopwatchCell 関数を登録し、クリックで測定開始し、もう一度クリックで測定停止するマクロですが、一時停止のボタンを新たに作りたいのですが、どうしたらいいのか教えて下さい。お願いします。
- みんなの回答 (3)
- 専門家の回答
関連するQ&A
- VBAでのオートタブ?
エクセルを使って、VBEでのマクロの編集をしています。 その際に、改行した時のオートタブ出来ずに困っています。(正式名称が分かりません) C++でプログラムを書くと、このように ifの範囲では分かりやすくオートタブしてくれるのに If Range("B4") = "" Then Exit Sub End If Else エクセルのエディターで同じ文章を書くと If Range("B4") = "" Then Exit Sub End If Else となってしまい、非常に読みづらいです。 どのように設定すればオートタブ?してくれるのでしょうか? どなたか教えてください・・・。
- ベストアンサー
- その他MS Office製品
- エクセルVBAマクロのオプションボタンについて
オプションボタンのマクロに関して教えて下さい。 マクロのスキルレベルは、新しいマクロの記録を多用して、マクロを組むレベルです。 「表示-ツールバー-フォーム」から選ぶオプションボタンを使って、オプションボタンAが押されている場合とBが押されている場合で、処理を変えたいのですが、そのオプションボタンの値をどうやっても拾えません。 色々検索した結果、以下のマクロでできる気がしたのですが、駄目でした。 Private Sub OptionButton1_Click() オプション1 = True End Sub Private Sub OptionButton2_Click() オプション2 = True End Sub Sub オプションボタン() If オプション1 = True Then Range("a1") = 1 ElseIf オプション2 = True Then Range("a1") = 2 Else Range("a1") = 0 End If End Sub 作ったオプションボタンを右クリックしてマクロ登録を選ぶと、「オプション1_Click」となっているので、「OptionButton1_Click」を「オプション1_Click」に変えてみたのですが、やっぱり駄目でした。 ネットではユーザフォームを使ったマクロ例はあるのですが、そのまま使用するオプションボタンの例がありません。できればユーザフォームは使いたくありません。 ご存知の方がいらっしゃいましたら、教えて下さい。よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- シートのイベント VBA
シートをクリックしたらシートをクリアしたいのですが クリックするセルがA1の場合は、マクロを実行させたくないのですが 下記のコードだとエラーになってしまいます。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Target.Range = Range("a1") Then Cells.Clear End If End Sub ”Range("a1")でなければ、Cells.Clearする” にはどうすればいいですか?
- ベストアンサー
- オフィス系ソフト
- 印刷後のVBAの実行 (2)
Private Sub Workbook_BeforePrint(Cancel As Boolean) If ActiveSheet.Name = "Sheet1" Then If Range("D6").Value = "" Then Cancel = True MsgBox ("名前を入力してください") Range("D6").Select Exit Sub End If Else If ActiveSheet.Name = "Sheet2" Then If Range("C11").Value = "" Then Cancel = True MsgBox ("受付時間を入力してください") Range("C11").Select Exit Sub End If Else Exit Sub End If End If ActiveSheet.Range("A70:Y70").Copy If Worksheets("Sheet3").Range("A1").Value = "" Then Worksheets("Sheet3").Range("A1").PasteSpecial Paste:=xlPasteValues Else Worksheets("Sheet3").Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial _ Paste:=xlPasteValues End If Application.CutCopyMode = False ActiveSheet.Range("A1").Select End Sub 先日、上記のコードを回答者の方から教えてもらい、とても助かっていますが sheet1のD5に「不要」という文字が入っていた場合、 sheet3への貼り付け(23~30行目の作業)をキャンセルして、最後にsheet1のA1を選択するようにはどの様にしたらいいでしょうか?
- 締切済み
- オフィス系ソフト
- エクセル2010のvbaについて
押されたコマンドボタンの名前を取得したいです (調べてみましたがエラーになり取得できませんでした) 後コマンドボタンがたくさんあり、コードも長く とても邪魔なので省略したいのですができますか? (左クリックと右クリックで違う処理をした後 MouseDown コマンドボタンの名前で少し処理を変えるコードです) MouseUp (下のコードのような感じです) 回答お願いします Private Sub CommandButton1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single) Select Case Button Case 1 Range("A1") = 1 Case 2 Range("A1") = 2 End Select End Sub Private Sub CommandButton1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single) If (コマンドボタンの名前を取得) = "aaa" Then Range("A1") = Range("A1") + 1 Else Range("A1") = Range("A1") - 1 End If End Sub
- 締切済み
- その他MS Office製品
- VBAで2つのプロシージャーをつなげるには
VBAでSub ~ End Subまで書き終えて、一つのプロシジャーを完成させたあと、 その下に、もう一つのプロシジャーを作り、連続してマクロを動かしたいと思ってます。 例に例えると、 Sub test() Dim MyRange As Range Set MyRange = Columns("c").Find(What:="﨑") If MyRange Is Nothing Then Debug.Print "環境依存文字ははみつかりません" Else MyRange.Font.ColorIndex = 3 End If Dim MyCells As Range Set MyCells = Columns("c").Find(What:="髙") If MyCells Is Nothing Then Debug.Print "環境依存文字ははみつかりません" Else MyCells.Font.ColorIndex = 3 End If End Sub Sub sample() Dim i As Long For i = 1 To Cells(Rows.Count, "I").End(xlUp).Row If InStr(1, Cells(i, "I"), "VBA", vbTextCompare) > 0 Then Cells(i, "M") = "YES" End If Next End Sub 上記のような2つのマクロをつなげて1つの実家行えるようにするにはどうしたらよろしいのでしょうか。 どうしても実行時に上のマクロと下のマクロが別々に表示されてしまします。 (ちなみに、上側のマクロは環境依存文字を探すマクロ、下側はVBAの文字を見つけ出すマクロです。) どなたかご存知の方いらっしゃいましたら、教えて頂けないでしょうか。 よろしくお願い致します。
- ベストアンサー
- その他(インターネット・Webサービス)
- 印刷後のVBAの実行 (3)
Private Sub Workbook_BeforePrint(Cancel As Boolean) If ActiveSheet.Name = "Sheet1" Then If Range("D6").Value = "" Then Cancel = True MsgBox ("名前を入力してください") Range("D6").Select Exit Sub End If Else If ActiveSheet.Name = "Sheet2" Then If Range("C11").Value = "" Then Cancel = True MsgBox ("受付時間を入力してください") Range("C11").Select Exit Sub End If Else Exit Sub End If End If If Worksheets("Sheet1").Range("D5") = "不要" Then GoTo P1 ActiveSheet.Range("A70:Y70").Copy If Worksheets("Sheet3").Range("A1").Value = "" Then Worksheets("Sheet3").Range("A1").PasteSpecial Paste:=xlPasteValues Else Worksheets("Sheet3").Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial _ Paste:=xlPasteValues End If Application.CutCopyMode = False P1: ActiveSheet.Range("A1").Select End Sub sheet1のD5に「不要」と入っていたら 24~33行目の作業がキャンセルになりますが sheet2のD5にも「不要」と入っていたら、同じ様にキャンセルできる様に出来ますでしょうか? ご回答お願いします
- 締切済み
- オフィス系ソフト
- VBA マクロの2つのカウントダウンタイマーの件
VBAでマクロ作成中ですが、標準モジュール間の変数のやり取りがよくわかりません。 教えていただけないでしょうか? Sub 指定時刻にマクロを実行する1() mywait = 1 指定時刻 = Now + TimeSerial(0,0,mywait) IF MacroStop = False Then Application.OnTime 指定時刻,”指定時刻にマクロを実行する1” Call やりたいこと1 Else MacroStop = False End End If End Sub Sub やりたいこと1 C1= C1+1 ZAN1 =TB1-C1 ・・・ End Sub Sub マクロ停止1() MacroStop = True Range(”A1”).ClearContents ... End Sub と Sub 指定時刻にマクロを実行する2() mywait = 1 指定時刻 = Now + TimeSerial(0,0,mywait) IF MacroStop = False Then Application.OnTime 指定時刻,”指定時刻にマクロを実行する2” Call やりたいこと2 Else MacroStop = False End End If End Sub Sub やりたいこと2 C2= C2+1 ZAN2 =TB2-C2 ・・・ End Sub Sub マクロ停止2() MacroStop = True Range(”A2”).ClearContents ... End Sub という標準モジュールを2つ作成し、一方のマクロ(C1側)を止めると、もう一方のマクロ(C2側)の変数(TB2)がIntegerからEmptyに変わってしまい、ZAN2がマイナスカウントしてしまいます。 TB1はInteger型のままClearContentsされ0になり、C1側のマクロは正常に止まっています。C2側は、継続して正常にカウントダウンさせたいのですが。。。 マクロの初心者です どなたかよろしくお願いします。
- ベストアンサー
- SE・インフラ・Webエンジニア
- VBAのボタン操作について。
For i=0 to 3 with Range("A" & (i+1)) with ActiveSheet.Buttons.Add(.Left,.Top,.Width,.Height) .caption="テストボタン" .OnAction="テストアクション" End with End wirh Sub テストアクション() MsgBox "あなたがクリックしたボタンは上から○番目のボタンです。" End sub 上記マクロを実行すると、セルA1,A2,A3にテストボタンが配置されます。 3つのボタンのどれかをクリックしたとき、テストアクションが実行されますが、 ○番目の○を求めるにはどうすればよいのでしょうか?
- ベストアンサー
- Visual Basic
- エクセル VBA Worksheet_Changeとコピー&ペースト
いつも皆様には大変お世話になっております。 早速の質問ですが Worksheet_Changeを使ってマクロを組んでいるのと フォームを使ってマクロを組んでいます フォームのほうからのマクロで Sheet1のセルをコピーしてSheet2のセルに貼り付けをしたいのですが、 貼り付けができません。 フォームのほうからのマクロじゃなく手動でコピー&ペーストも利きません。コピーはできるのですがSheet2に変えたところ貼り付けができなくなってしまいます。 Worksheet_Changeのマクロを消すと動きました。どうにかならないでしょうか? ちなみにWorksheet_Changeの中のマクロは Private Sub Worksheet_Change(ByVal Target As Range) If Range("J48") = Range("J68") Then Range("J48").Interior.ColorIndex = xlColorIndexNone Else Range("j48").Interior.ColorIndex = 26 End If If Range("V48") = Range("V68") Then Range("V48").Interior.ColorIndex = xlColorIndexNone Else Range("V48").Interior.ColorIndex = 26 End If End Sub となっています。 何かいい解決法がありましたらご教授のほどよろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
お礼
教えて下さったとうり変更してみたらできました! まさに知りたかったのはこのことです。親切に教えて下さって本当に助かりました。VBを勉強している最中で分からないことだらけですが、これから少しずつ上達していきたいと思ってます。 とても役に立ちました。有難うございました。