エクセル2000で以下のような百人一首のマクロを作ったのですが
マクロをボタンに登録すると上の句と下の句の更新が後回しになります
VBEを開いたままマクロを実行すると上の句下の句を更新したあとに
解答用のinputboxがちゃんと先に出てきます。
何か解決方法はありますか?
マクロを作ったのは初めてに近いです
あとマクロコードを2行にするのが出きるときと出来ない時があるのは
何故でしょう。同じように _ アンダーバーを入れて改行してるのですが
エラーになります。改行して良い所と悪い所があるのですか
教えて欲しいです。
Sub 百人一首一番から二十番()
Dim hyakuSh As Worksheet
Dim mySh As Worksheet
Set mySh = Worksheets("百人一首クイズ")
Set hyakuSh = Worksheets("百人一首")
Dim myRow As Integer
Randomize
myRow = Int((21 - 2 + 1) * Rnd + 2)
Dim kaminoku As String
Dim kaminoku2 As String
Dim kaminoku3 As String
Dim simonoku As String
Dim simonoku1 As String
Dim sakusha As String
kaminoku = hyakuSh.Cells(myRow, 3).Value
kaminoku2 = hyakuSh.Cells(myRow, 4).Value
kaminoku3 = hyakuSh.Cells(myRow, 5).Value
shimonoku = hyakuSh.Cells(myRow, 6).Value
shimonoku1 = hyakuSh.Cells(myRow, 7).Value
sakusha = hyakuSh.Cells(myRow, 8).Value
mySh.Activate
mySh.Shapes("Text Box 2").Select
Selection.Characters.Text = kaminoku & Chr(10) & kaminoku2 & Chr(10) & kaminoku3
Dim MyTBox As Integer
Dim smRow As Integer
Dim smRow2 As Integer
Dim smRow3 As Integer
Dim smRow4 As Integer
Dim smRow5 As Integer
Dim i As Integer
mySh.Shapes(2).Select
Randomize
smRow5 = Int((51 - 2 + 1) * Rnd + 2)
Selection.Characters.Text = hyakuSh.Cells(smRow5, 6).Value & Chr(10) & hyakuSh.Cells(smRow5, 7).Value & Chr(10) & hyakuSh.Cells(smRow5, 8).Value
mySh.Shapes(3).Select
Randomize
smRow = Int((51 - 2 + 1) * Rnd + 2)
Selection.Characters.Text = hyakuSh.Cells(smRow, 6).Value & Chr(10) & hyakuSh.Cells(smRow, 7).Value & Chr(10) & hyakuSh.Cells(smRow, 8).Value
mySh.Shapes(4).Select
Randomize
smRow2 = Int((51 - 2 + 1) * Rnd + 2)
Selection.Characters.Text = hyakuSh.Cells(smRow2, 6).Value & Chr(10) & hyakuSh.Cells(smRow2, 7).Value & Chr(10) & hyakuSh.Cells(smRow2, 8).Value
mySh.Shapes(5).Select
Randomize
smRow3 = Int((51 - 2 + 1) * Rnd + 2)
Selection.Characters.Text = hyakuSh.Cells(smRow3, 6).Value & Chr(10) & hyakuSh.Cells(smRow3, 7).Value & Chr(10) & hyakuSh.Cells(smRow3, 8).Value
mySh.Shapes(6).Select
Randomize
smRow4 = Int((51 - 2 + 1) * Rnd + 2)
Selection.Characters.Text = hyakuSh.Cells(smRow4, 6).Value & Chr(10) & hyakuSh.Cells(smRow4, 7).Value & Chr(10) & hyakuSh.Cells(smRow4, 8).Value
Randomize
MyTBox = Int((6 - 2 + 1) * Rnd + 2)
mySh.Shapes(MyTBox).Select
Selection.Characters.Text = shimonoku & Chr(10) & shimonoku1 & Chr(10) & sakusha
mySh.Shapes("Text Box 2").Select
Dim Ans As Integer
*以下の部分が先に出てきて答えを入れないと上のコードが実行されない*
****ここ一行で書いてあるので見にくい部分*******
Ans = InputBox(hyakuSh.Cells(myRow, 3).Value & hyakuSh.Cells(myRow, 4).Value & hyakuSh.Cells(myRow, 5).Value & Chr(10) & Chr(10) & "下の句を番号で答えなさい", Title:="百人一首", Xpos:=7500, Ypos:=2500)
*********************************
If Ans = MyTBox Then
MsgBox " 正解!!! V(・ o ・)V "
Else
MsgBox ("間違いです!!!!!!!!" & Chr(10) & Chr(10) & hyakuSh.Cells(myRow, 6).Value & hyakuSh.Cells(myRow, 7).Value & Chr(10) & Chr(10) & sakusha & "です")
End If
End Sub
No.6
- 回答日時:
>あとマクロコードを2行にするのが出きるときと出来ない時があるのは何故でしょう。
>同じように _ アンダーバーを入れて改行してるのですがエラーになります。
スペースとアンダーバー 改行が正解
No.5
- 回答日時:
こんばんは。
>マクロをボタンに登録すると上の句と下の句の更新が後回しになります
>解答用のinputboxがちゃんと先に出てきます。
>何か解決方法はありますか?
私としては、たぶん、オートシェイプのTextBox が問題かなって思います。
確かに、Excel 2003 でも挙動がおかしいです。原因はテキストメモリとGメモリとは、直接、つながっていないからだと思います。
残念ながら、質問で出ているコードでは、途中からオブジェクトをIndex を使ってしまっているので、正しい名称は分からないものの、出来れば、コントロールツールのテキストボックスとかラベルとかにしたほうが、反応は良いかもしれません。
現状のマクロコードでは、最初に、テキストボックス(Index が確実に1~6あるとします)のテキストをクリアしたらどうでしょうか?
For i = 1 To 6
mySh.Shapes(i).TextFrame.Characters.Text = ""
Next i
No.4
- 回答日時:
整理してみました。
Sub test百人一首一番から二十番()
Dim hyakuSh As Worksheet
Dim mySh As Worksheet
Dim kaminoku As String
Dim simonoku As String
Dim myRow As Integer
Dim MyTBox As Integer
Dim smRow As Integer
Dim Ans As Integer
Dim i As Integer
Set mySh = Worksheets("百人一首クイズ")
Set hyakuSh = Worksheets("百人一首")
mySh.Activate
Randomize
myRow = Int((21 - 2 + 1) * Rnd + 2)
For i = 1 To 3
kaminoku = kaminoku & Chr(10) & hyakuSh.Cells(myRow, i + 2).Value
simonoku = simonoku & Chr(10) & hyakuSh.Cells(myRow, i + 5).Value
Next i
mySh.Shapes(1).TextFrame.Characters.Text = Replace(kaminoku, Chr(10), "", 1, 1)
For i = 1 To 5
Randomize
smRow = Int((51 - 2 + 1) * Rnd + 2)
mySh.Shapes(i + 1).TextFrame.Characters.Text = _
hyakuSh.Cells(smRow, 6).Value & Chr(10) & _
hyakuSh.Cells(smRow, 7).Value & Chr(10) & _
hyakuSh.Cells(smRow, 8).Value
Next i
Randomize
MyTBox = Int((6 - 2 + 1) * Rnd + 2)
mySh.Shapes(MyTBox).TextFrame.Characters.Text = Replace(simonoku, Chr(10), "", 1, 1)
Application.ScreenUpdating = True
On Error Resume Next
Ans = InputBox(Replace(kaminoku, Chr(10), "", 1, 1) & Chr(10) & Chr(10) & _
"下の句を番号で答えなさい", Title:="百人一首", Xpos:=7500, Ypos:=2500)
On Error GoTo 0
If Ans = 0 Or Ans < 2 Or Ans > 6 Then
MsgBox "2~6 の数字を入力してください。"
ElseIf Ans = MyTBox Then
MsgBox "正解!!! V(・ o ・)V"
Else
MsgBox ("間違いです!!!!!!!!" & Chr(10) & Chr(10) & _
Replace(simonoku, Chr(10), "", 1, 1) & Chr(10) & Chr(10) & "です")
End If
Set mySh = Nothing
Set hyakuSh = Nothing
End Sub
このままボタンに登録してもちゃんと動作しました
とりあえず作ってみて後で整理しようと思ってたのですが
一気に解決です。
お正月にちゃんと間に合いそうです
ありがとうございます
No.3
- 回答日時:
Shapeの2~6は、下記のように、For~Nextできないでしょうか。
For i = 1 To 5
Randomize
smRow = Int((51 - 2 + 1) * Rnd + 2)
mySh.Shapes(i + 1).TextFrame.Characters.Text = _
hyakuSh.Cells(smRow, 6).Value & Chr(10) & _
hyakuSh.Cells(smRow, 7).Value & Chr(10) & _
hyakuSh.Cells(smRow, 8).Value
Next i
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) 初めてマクロを入力しますが、テキストとおりに入力したのに構文エラーです。修正を教えてください。 3 2022/10/28 11:18
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたい 6 2023/01/23 12:00
- Visual Basic(VBA) A列B列C列 3 2023/04/26 18:11
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) vbaを早くしたい 5 2022/09/09 10:58
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
伊勢物語 初冠
-
百人一首で友情に関するものあ...
-
思ひ・火の掛詞を使った和歌は...
-
百人一首についてです。 「あら...
-
歌の詩はどうして恋愛の詩ばか...
-
百人一首に恋の歌が多いのはなぜ?
-
百人一首の36番、70番の「何処...
-
百人一首についてです。 みんな...
-
古今著聞集の口語訳について!
-
短歌 五七調・七五調
-
戦争を知らない子供たちの歌詞
-
百人一首の早取りのしかた
-
百人一首についてです。 すごく...
-
百人一首の読み手について
-
百人一首や、有名な和歌で、「...
-
百人一首、”しのぶれど。。。”...
-
あひ見ての、のちの心にくらぶ...
-
和歌にでてきたんですけど「し...
-
百人一首テスト(訳・表現技法・...
-
すいかの名産地
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
伊勢物語 初冠
-
百人一首で友情に関するものあ...
-
百人一首や、有名な和歌で、「...
-
思ひ・火の掛詞を使った和歌は...
-
百人一首についてです。 みんな...
-
百人一首の36番、70番の「何処...
-
平将門と陽成院
-
古今著聞集の口語訳について!
-
短歌 五七調・七五調
-
月という言葉が掛詞になってい...
-
百人一首を小学生が学校で朗詠...
-
歌の詩はどうして恋愛の詩ばか...
-
百人一首と濁点。
-
落語 百人一首を噺の筋に取り...
-
和歌の意味を教えて下さい
-
日本語はなぜ自然に関する美し...
-
大至急!! 天徳内裏歌合にて読...
-
春の夜の夢の浮橋とだえして峰...
-
この時期多い百人一首について...
-
よーく考えてからのお礼文は、
おすすめ情報