![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
EXCEL VBA 最初だけ0という値を入れたい。
以前VBAのストップウォッチ機能について投稿したものですが
最初、startstopボタンを押した時にB6に0を入れるようにしてその後にsplitを押していくと
B8.B10.B12...と値が入っていくようにしたいです!
参考に下記にコード書いておきます!
お手数おかけしますが詳しい方教えて下さい!
宜しくお願いします!
Option Explicit
Declare PtrSafe Function GetAsyncKeyState Lib "User32.dll" (ByVal vKey As Long) As Integer
Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private cnt As Range
Private blnStop As Boolean
Private blnStart As Boolean
Private dblTimer As Double
Private bLap As Double
Private cntLap, No, No2, i, j, k, S, F, X, Z, V, R, No3 As Long
Private keyTimer(0 To 1) As Double
Sub StartStop()
If blnStart = True Then
blnStop = True
' キーを無効化
Application.OnKey "{ENTER}"
Application.OnKey "~"
Application.OnKey "{RIGHT}"
Exit Sub
End If
' キーを有効化
Call Enter_set
Call RIGHT_set
bLap = 0
cntLap = 0
blnStart = True
blnStop = False
dblTimer = Timer
Do Until blnStop = True
Cells(2, 2) = Int((Timer - dblTimer) * 100) / 100
Sleep 1
If GetAsyncKeyState(vbKeyRight) Then Call keyControl(0)
If GetAsyncKeyState(vbKeyReturn) Or _
GetAsyncKeyState(vbKeySeparator) Then Call keyControl(1)
DoEvents
Loop
blnStart = False
blnStop = False
End Sub
Sub keyControl(ByRef n As Long)
Dim dt As Double
Const keyWeight = 120 '←キーの感度をこの値で調節
dt = Timer - keyTimer(n)
If dt < 0 Then dt = dt + 86400
If dt < keyWeight / 1000 Then Exit Sub
keyTimer(n) = Timer
If n = 0 Then Call RGT Else Call nui
End Sub
Sub Enter_set()
End Sub
Sub RIGHT_set()
End Sub
Sub Enter_set1()
'キー割り当て用
Application.OnKey "{ENTER}", "nui" 'テンキーのエンターキーのみ
Application.OnKey "~", "nui" 'キーボードのエンターキーのみ
End Sub
Sub nui()
V = 6
R = Cells(Rows.Count, 1).End(xlUp).Offset(-6, 0).Row - 1
If 2 >= Z Then
Z = 2
If R >= No2 Then
No2 = No2 + 2
Sleep 1
Cells(No2 + 4, Z) = Round(Timer - dblTimer, 1)
Else
Z = Z + 1
No2 = 0
No2 = No2 + 2
Sleep 1
Cells(No2 + 4, Z) = Round(Timer - dblTimer, 1)
End If
Else
if R >= No2 Then
No2 = No2 + 2
Sleep 1
Cells(No2 + 4, Z) = Round(Timer - dblTimer, 1)
Else
Z = Z + 1
No2 = 0
No2 = No2 + 2
Sleep 1
Cells(No2 + 4, Z) = Round(Timer - dblTimer, 1)
End If
End If
End Sub
Sub RIGHT_set1()
'キー割り当て用
Application.OnKey "{RIGHT}", "RGT" 'キーボードのエンターキーのみ
End Sub
Sub RGT()
Z =Z + 1
No2 = 0
No2 = No2 + 2
Sleep 1
Cells(No2 + 4, Z) = Round(Timer - dblTimer, 1)
End Sub
Sub LapSplitClear()
S = 6
F = Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row - 2
'F = 25
Do While F >= S
Range(Cells(S, 2), Cells(S, 16)).ClearContents
S = S + 2
Loop
Cells(2, 2) = 0
Z = 0
No2 = 0
End Sub
No.3ベストアンサー
- 回答日時:
お礼を読みました。
そこで、少し疑問です。今ある処理は生かすのだと思いますが、
If R >= No2 Thenの時、Zは3すなわち、C列だと思います。
No2変数は、2ステップのようですが、対象セルは重複しないのかな?と
#1で回答しているコードを少しわかりやすくしましたので
R = Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row - 8
上部に入れてください。
If blnStart = True Then
With ActiveSheet
.Cells(7, "C").Offset(splCnt) = Int((Timer - dblTimer) * 100) / 100
splCnt = splCnt + 2
End With
End If
R = Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row - 8
SS = Worksheets("設定").Range("B2").Value
・
・
もしかして、示されているコードを書き換えるとの事ならば、もう少し条件をお伝えして頂かないと判りません。
ちなみにご質問の処理だけを行う場合の参考コードを書いておきます。
Option Explicit
Private blnStop As Boolean
Private blnStart As Boolean
Private dblTimer As Double
Private splCnt As Long
Sub StartStop()
If blnStart = True Then
blnStart = False
blnStop = True
splCnt = 0
dblTimer = 0
Exit Sub
Else
blnStart = True
blnStop = False
ActiveSheet.Range("B6").Value = 0
dblTimer = Timer
End If
End Sub
Sub split_button()
If blnStart = True Then
With ActiveSheet
.Cells(7, "C").Offset(splCnt) = Int((Timer - dblTimer) * 100) / 100
splCnt = splCnt + 2
End With
Else
MsgBox ("Startしていません。")
End If
End Sub
回答ありがとうございます!
分かりにくくてすいません!
一回質問終了させていただき、ちゃんと詳細情報を載せたうえで投稿します!
お手数かけましてすみません!
宜しくお願いします。
No.2
- 回答日時:
投稿後気が付きました
B2でなくB6でしたね
ActiveSheet.Range("B6").Value = 0 '
回答ありがとうございます!
splitボタンですが下記コードに追加したいです。
スタートがC7 からでした。すみません
Sub LapSplit14項目用()
R = Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row - 8
SS = Worksheets("設定").Range("B2").Value
If 2 >= Z Then
Z = 3
If R >= No2 Then
No2 = No2 + 2
Sleep 1
Cells(No2 + 5, Z) = Round(Timer - dblTimer, SS)
Else
Z = Z + 1
No2 = 0
No2 = No2 + 2
Sleep 1
Cells(No2 + 5, Z) = Round(Timer - dblTimer, SS)
End If
Else
If R >= No2 Then
No2 = No2 + 2
Sleep 1
Cells(No2 + 5, Z) = Round(Timer - dblTimer, SS)
Else
Z = Z + 1
No2 = 0
No2 = No2 + 2
Sleep 1
Cells(No2 + 5, Z) = Round(Timer - dblTimer, SS)
End If
End If
End Sub
No.1
- 回答日時:
こんにちは、
>最初、startstopボタンを押した時にB6に0を入れるようにしてその後にsplitを押していくとB8.B10.B12...と値が入っていくようにしたいです!
変数を追加
Private splCnt As Long
Sub StartStop()
If blnStart = True Then
blnStop = True
' キーを無効化
Application.OnKey "{ENTER}"
Application.OnKey "~"
Application.OnKey "{RIGHT}"
splCnt = 0 'ここに追加
Exit Sub
Else
ActiveSheet.Range("B2").Value = 0 'これも追加
End If
プロシージャを追加 (下記を丸ごとコピペ)
Sub split_button()
With ActiveSheet
.Cells(8 + splCnt, 2) = Int((Timer - dblTimer) * 100) / 100
splCnt = splCnt + 2
End With
End Sub
splitを押していく?ボタンに
split_button を登録
ご質問のコードを参考にしています。
いかがでしょう?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) 実行時エラー´5854´ 文字列型パラメーターが長すぎます。 3 2023/06/08 21:17
- Visual Basic(VBA) excel VBA if文について 3 2022/03/27 17:42
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Visual Basic(VBA) VBA 請求書自動作成 3 2022/04/24 01:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
IF文、条件分岐の整理方法
-
Exel VBA 別ブックから該当デ...
-
1日に1人がこなせるプログラム...
-
access2003 クエリSQL文に...
-
JANコードとPOSコードは同じ?
-
sinカーブの表示のさせ方
-
COBOLの文法
-
文字列を検索しその列をコピー...
-
SQL
-
【VB6】実行ファイルとした後、...
-
JIPS-Eコードのコード表について
-
JavaScriptの定数名が取り消し...
-
ACCESSで、履歴事項を管理する...
-
コンボボックスの複数列表示に...
-
◾️Excel VBA 統合について Cons...
-
EXCEL VBA 最初だけ0という値を...
-
ExcelVBAで「Shift_JIS(MS932)...
-
CheckBoxのコントロール配列に...
-
C# コードビハインドについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
1、Rstudioで回帰直線を求める...
-
1日に1人がこなせるプログラム...
-
access2003 クエリSQL文に...
-
エクセルVBAコードで教えて下さ...
-
Exel VBA 別ブックから該当デ...
-
JavaScriptの定数名が取り消し...
-
COBOLの文法
-
access2021 VBA メソッドまたは...
-
PreviewKeyDownイベントが2回...
-
JANコードとPOSコードは同じ?
-
過剰なオブジェクト指向脳から...
-
特定行の背景色を変えたいのですが
-
ACCESSユニオンクエリでORDER B...
-
変数名「cur」について
-
Nullの使い方が不正です。
-
◾️Excel VBA 統合について Cons...
-
欠番の抽出について
-
VBA リストボックス(複数条件...
-
ACCESSで、履歴事項を管理する...
おすすめ情報