質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

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

Q&A

解決済

1回答

1074閲覧

vba ボタンを押したときの操作と再生ボタンの入力では結果が異なってしまう

soroban2000

総合スコア13

VBA

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

0グッド

0クリップ

投稿2020/06/16 16:07

編集2020/06/17 00:40

vbaにて、ボタンを押したときの結果 と コード入力部分の実行 を押したときの動作が異なります。
結果的には、後者の入力のときは正しく入力されます。
変数dは、どちらも正しく読み込まれておりますが、前者でのみcell(x,7).valueの値が読み込まれず、dのままの数値になります。
わかりずらい説明で申し訳ありませんがどなたか解決方法を教えていただきたいです。

#インシデント
例えば下記の部分であれば、cells(9,7)のセルの数値+dをcells(9,8)に出力するというものですが
ボタンを押したときの場合、dのみの値になってしまっています。
コード入力の実行の部分であれば問題なく作動します。

vba

1Dim d As Integer 2 3d = Cells(Cells(9, 15).Value + 1, 2).Value 4 5Cells(9, 8).Value = Cells(9, 7).Value + d 6Cells(10, 8).Value = Cells(10, 7).Value + d 7Cells(11, 8).Value = Cells(11, 7).Value + d 8Cells(12, 8).Value = Cells(12, 7).Value + d 9

vba

1Sub ボタン1_Click() 2 3If Cells(9, 13) = "1" Then 4 5Dim d As Integer 6 7d = Cells(Cells(9, 15).Value + 1, 2).Value 8 9Cells(9, 8).Value = Cells(9, 7).Value + d 10Cells(10, 8).Value = Cells(10, 7).Value + d 11Cells(11, 8).Value = Cells(11, 7).Value + d 12Cells(12, 8).Value = Cells(12, 7).Value + d 13 14Call fanc1 15 16ElseIf Cells(9, 13) = "2" Then 17 18p = Cells(Cells(9, 13).Value + 1, 2).Value 19d = Cells(Cells(9, 15).Value + 1, 2).Value 20 21Cells(9, 8).Value = Cells(9, 7).Value + d 22Cells(13, 8).Value = Cells(13, 7).Value + d 23Cells(14, 8).Value = Cells(14, 7).Value + d 24Cells(15, 8).Value = Cells(15, 7).Value + d 25 26Call fanc1 27 28ElseIf Cells(9, 13) = "3" Then 29 30p = Cells(Cells(9, 13).Value + 1, 2).Value 31d = Cells(Cells(9, 15).Value + 1, 2).Value 32 33Cells(10, 8).Value = Cells(10, 7).Value + d 34Cells(13, 8).Value = Cells(13, 7).Value + d 35Cells(16, 8).Value = Cells(16, 7).Value + d 36Cells(17, 8).Value = Cells(17, 7).Value + d 37 38Call fanc1 39 40ElseIf Cells(9, 13) = "4" Then 41 42p = Cells(Cells(9, 13).Value + 1, 2).Value 43d = Cells(Cells(9, 15).Value + 1, 2).Value 44 45Cells(11, 8).Value = Cells(11, 7).Value + d 46Cells(14, 8).Value = Cells(14, 7).Value + d 47Cells(16, 8).Value = Cells(16, 7).Value + d 48Cells(18, 8).Value = Cells(18, 7).Value + d 49 50Call fanc1 51 52ElseIf Cells(9, 13) = "5" Then 53 54p = Cells(Cells(9, 13).Value + 1, 2).Value 55d = Cells(Cells(9, 15).Value + 1, 2).Value 56 57Cells(12, 8).Value = Cells(12, 7).Value + d 58Cells(15, 8).Value = Cells(15, 7).Value + d 59Cells(17, 8).Value = Cells(17, 7).Value + d 60Cells(18, 8).Value = Cells(18, 7).Value + d 61 62Call fanc1 63 64End If 65 66End Sub 67 68Function fanc1() 69 70Dim p As Integer 71p = Cells(Cells(9, 13).Value + 1, 2).Value 72 73If Cells(9, 15) = "1" Then 74 75Cells(9, 8).Value = Cells(9, 7).Value + p 76Cells(10, 8).Value = Cells(10, 7).Value + p 77Cells(11, 8).Value = Cells(11, 7).Value + p 78Cells(12, 8).Value = Cells(12, 7).Value + p 79 80ElseIf Cells(9, 15) = "2" Then 81 82Cells(9, 8).Value = Cells(9, 7).Value + p 83Cells(13, 8).Value = Cells(13, 7).Value + p 84Cells(14, 8).Value = Cells(14, 7).Value + p 85Cells(15, 8).Value = Cells(15, 7).Value + p 86 87ElseIf Cells(9, 15) = "3" Then 88 89Cells(10, 8).Value = Cells(10, 7).Value + p 90Cells(13, 8).Value = Cells(13, 7).Value + p 91Cells(16, 8).Value = Cells(16, 7).Value + p 92Cells(17, 8).Value = Cells(17, 7).Value + p 93 94ElseIf Cells(9, 15) = "4" Then 95 96Cells(11, 8).Value = Cells(11, 7).Value + p 97Cells(14, 8).Value = Cells(14, 7).Value + p 98Cells(16, 8).Value = Cells(16, 7).Value + p 99Cells(18, 8).Value = Cells(18, 7).Value + p 100 101ElseIf Cells(9, 15) = "5" Then 102 103Cells(12, 8).Value = Cells(12, 7).Value + p 104Cells(15, 8).Value = Cells(15, 7).Value + p 105Cells(17, 8).Value = Cells(17, 7).Value + p 106Cells(18, 8).Value = Cells(18, 7).Value + p 107 108End If 109 110End Function

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

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

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

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

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

ttyp03

2020/06/16 23:49

変数bが見当たりません。 シートの構成は? 対象とするシートは? ボタン1_Click関数を置いているシートは? VBEから実行するときどのシートがアクティブ? コードはコードタグで括ってください。その際インデントも忘れずにお願いします。
soroban2000

2020/06/17 00:18

変数はdでした。誤字失礼いたしました。 ボタンが置かれているシートと実行するときのシートは同じかと思います。 (シートは1枚しか作成していないので)
ttyp03

2020/06/17 00:27

対応ありがとうございます。 コードのインデントがされてないですが、まあいいでしょう。 シートが1つしかないのであれば、不可解な動きですね。 時間があるときに調べてみます。
soroban2000

2020/06/17 00:40

インシデント追加させていたしました。
ttyp03

2020/06/17 00:45

ああ、いや、お願いしたのは「インデント(字下げ)」のことなんですが・・・
ttyp03

2020/06/17 00:49

> cell(x,7).valueの値が読み込まれず 「読み込まれず」のところ正確にお願いします。 文字通り読み込むことができない(エラー)なのか、「0」なのか、「空文字」なのか。
soroban2000

2020/06/17 00:55

cells(x,7)は空文字になってしまいます。 先ほど別の部分に出力したところ、何も出力されませんでした。 エラーは特に出ません。
guest

回答1

0

ベストアンサー

全然原因がわからないのですが、試しにシートを明示的に指定してみたらどうなりますか?
Withで括って、全てのCellsの先頭にピリオド(.)を付加する。

VBA

1Sub ボタン1_Click() 2 3 With Worksheets(1) 4 If .Cells(9, 13) = "1" Then 5 6 Dim d As Integer 7 8 d = .Cells(.Cells(9, 15).Value + 1, 2).Value 9 10 .Cells(9, 8).Value = .Cells(9, 7).Value + d 11 .Cells(10, 8).Value = .Cells(10, 7).Value + d 12 .Cells(11, 8).Value = .Cells(11, 7).Value + d 13 .Cells(12, 8).Value = .Cells(12, 7).Value + d 14 15 Call fanc1 16以下省略 17

fanc1関数もお願いします。

投稿2020/06/17 01:20

ttyp03

総合スコア17000

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

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

soroban2000

2020/06/18 15:50

返信が遅れてしまいました。 変更したところ無事に動作しました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問