Excel総合相談所 106

このエントリーをはてなブックマークに追加
952名無しさん@そうだ選挙にいこう:2013/01/02(水) 12:45:04.46
>>948
できました。感謝です。
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Application.EnableEvents = False
Dim syou1, syou2 String
Dim ten1, ten2, kazu As Integer
syou1 = Range("W2")
syou2 = Range("X2")
ten1 = Range("W1")
ten2 = Range("X1")
Range("T1:T100") = ClearContents
For kazu = 1 To 100
Cells(kazu, 1) = "処理中"
Next
For kazu = 1 To 100
Cells(kazu, 1) = ClearContents
If Cells(kazu, 1) <> "処理中" Then
If Cells(kazu, 19).Value >= ten2 Then
Cells(kazu, 20).Value = syou2
End If
If Cells(kazu, 19).Value >= ten1 Then
Cells(kazu, 20).Value = syou1
End If
Cells(kazu, 1) = ""
End If
Next
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
953名無しさん@そうだ選挙にいこう:2013/01/02(水) 13:05:55.64
Application.EnableEvents = False
↑これだけでいいんだよ "処理中"とか意味ないから
954名無しさん@そうだ選挙にいこう:2013/01/02(水) 13:33:47.08
>>952
初歩的過ぎて誰も指摘してないけど、変数の宣言部分もおかしいよ。
Dim a,b As Integer
だと
a はVariant型、b はInteger型になる
面倒でも
Dim a As Integer,b As Integer
って書かないと両方Integer型にはならない

もちろん、Variant型のまま使っても問題ないけど、
もっと大規模なソースコードだと
全体の見通しが悪くなるから
変数の型をきちんと宣言しておいたほうが
何か不具合が会ったときのデバッグ作業が楽になる。
955名無しさん@そうだ選挙にいこう:2013/01/02(水) 13:59:06.53
Range("T1:T100") = ClearContents
956名無しさん@そうだ選挙にいこう:2013/01/02(水) 14:21:18.34
>>954
ありがとうございます。
ご指摘のところを直したらスムーズに動くようになりました。
957名無しさん@そうだ選挙にいこう:2013/01/02(水) 22:29:53.22
>>950
簡単なゲームを具体的に書いてくれ
何のキーをどんなふうに入力させたいんだ?
958950:2013/01/02(水) 22:47:00.99
>>957
例えばセルで壁(■)と通路(空欄)を作り、
自分は通路を↑↓←→(あるいは2、4、6、8)ボタンで自由に行き来でき、宝を探したりする。
モンスターが何匹かいて動き回っており、主人公を見つけると追いかけてくる。
武器はたとえは光線銃で、メータがあってそれが残ってるかぎりモンスターを攻撃できる。
みたいなゲーム。
959名無しさん@そうだ選挙にいこう:2013/01/02(水) 22:53:54.29
なんでそれをエクセルでやろうと思ったんだろう
960名無しさん@そうだ選挙にいこう:2013/01/03(木) 00:16:19.21
>>958
例えばカーソルキーの入力だけでいいならSelectionChangeで代用できるけど
Windows API使うのが一般的だと思うよ
↓こっち池ボケ
http://toro.2ch.net/test/read.cgi/tech/1342087380/
961名無しさん@そうだ選挙にいこう:2013/01/03(木) 01:08:26.08
>>959
単純に、本当に何も知らないんだろう
たまたま目の前にあったvbaでプログラムを組みたくなる気持ちは、俺も結構分かる
962名無しさん@そうだ選挙にいこう:2013/01/03(木) 01:16:59.22
>>959
Excel VBAで作るのが手っ取り早い気がするけど?
もっと簡単な手段を知ってるなら隠さず書いてくれればいいのに役に立たないヤツだな
963名無しさん@そうだ選挙にいこう:2013/01/03(木) 02:50:40.01
>>962
手っ取り早くねぇだろOfficeは有料だしゲーム用のライブラリも何もないし
HSPとかJavaとかフリーのもんもいくらでもあるだろ
964名無しさん@そうだ選挙にいこう:2013/01/03(木) 08:55:59.76
むしろゲームには一番不向きな言語であろう・・・
965名無しさん@そうだ選挙にいこう:2013/01/03(木) 09:38:47.03
VBAでゲーム開発する時に困ること
・入出力が面倒
→画像、動画、音声の出力、キー入力。USBデバイスとかになると死ぬ
・重い
→ゲームは一秒に60回の計算、描画がある。
・バージョン差が激しい
→色やセル幅など、見た目のズレが起こる可能性アリ

VBAが使えるなら最初はHSPの方が絶対に楽。
今更HSPというのもナンだが。確かクラスが使えないんだっけか。
慣れてきたらC#.NETがオススメ。無料であり、ユーザーが多い。ライブラリもサンプルも死ぬほどある。
966名無しさん@そうだ選挙にいこう:2013/01/03(木) 11:08:52.87
新年早々VBAの話題かよw
967名無しさん@そうだ選挙にいこう:2013/01/03(木) 11:56:56.88
【1 OSの種類         .】 WindowXP
【2 Excelのバージョン   】 Excel2010

マクロのボタンをクリックして印刷のプレビュー画面を出したいのですが、
マクロの自動記録をやっても何も書かれていません。
どう書けばいいですか?

それから、1ページ43行の文書フォーマットがあり、43行までなら拡大/縮小100%、
44〜48行なら横×1縦×2に収め、フッターに1/?ページを設定するには
どう書けばいいですか?
968967:2013/01/03(木) 12:02:50.63
訂正です

【誤】
それから、1ページ43行の文書フォーマットがあり、43行までなら拡大/縮小100%、
44〜48行なら横×1縦×2に収め、フッターに1/?ページを設定するには
どう書けばいいですか?

【正】
それから、1ページ43行の文書フォーマットがあり、43行までなら拡大/縮小100%、
44〜47行なら横×1縦×1に収め、48行以上なら拡大/縮小100%で2ページにまたがり、
フッターに1/?ページを設定するにはどう書けばいいですか?
最大70行程度なので、3ページになることはありません。
969名無しさん@そうだ選挙にいこう:2013/01/03(木) 13:28:16.07
Sub test()
Dim r As Long

With ActiveSheet.UsedRange
r = .Row + .Rows.Count - 1
With ActiveSheet.PageSetup
Select Case r
Case Is < 43
.Zoom = 100
.CenterFooter = ""
Case Is < 47
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
.CenterFooter = ""
Case Is >= 48
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 2
.CenterFooter = "&P/&N"
End Select
End With
End With

ActiveSheet.PrintPreview

End Sub
970名無しさん@そうだ選挙にいこう:2013/01/03(木) 13:52:49.27
修正

Sub test()
Dim r As Long

With ActiveSheet.UsedRange
r = .Row + .Rows.Count - 1
End With
With ActiveSheet.PageSetup
Select Case r
Case Is < 43
.Zoom = 100
.CenterFooter = ""
Case Is < 47
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
.CenterFooter = ""
Case Is >= 48
.Zoom = 100
.CenterFooter = "&P/&N"
End Select
End With

ActiveSheet.PrintPreview

End Sub
971名無しさん@そうだ選挙にいこう:2013/01/03(木) 14:06:55.87
>>963-965
>>958程度のもん作るなら別にExcelでも困らんだろ
HSPとかJavaとかC#とか知らない言語を一から覚えて作るほうがめんどくさい
972名無しさん@そうだ選挙にいこう:2013/01/03(木) 14:16:02.17
Excelでテトリスつくったひとがいるんじゃなかったか
それ見れば参考になるんじゃね
973名無しさん@そうだ選挙にいこう:2013/01/03(木) 14:26:44.46
>>971
エクセルVBA知ってる前提ならな…
その前提がないんだからどれでもいいってことになる
974名無しさん@そうだ選挙にいこう:2013/01/03(木) 14:47:49.75
そもそもExcel VBAを知ってるなら>>950>>958みたいなアホな聞き方しないしな
975967:2013/01/03(木) 20:16:20.42
>>970
ありがとうございます。

うまくいかなかったので、分解してみました。
With ActiveSheet.UsedRange
 r1 = .Row
 r2 = .Rows.Count - 1
End With
r = r1 + r2
MsgBox r1=" & r1 & ", r2=" & r2: Exit Sub

r1が1、r2が69でした。
しかし、データがある行数は43で、44〜70は空白セルです。

♪なんでだろ〜ぉなんでだろ〜 なんでだなんでだろ〜〜〜
976名無しさん@そうだ選挙にいこう:2013/01/03(木) 20:18:05.41
VBA知っててもキー入力なんて必要にならないからそういう聞き方になっても不思議じゃないと思うが。
>>974
んでキー入力はどうやってかけばいいの?
977名無しさん@そうだ選挙にいこう:2013/01/03(木) 20:28:04.88
>>976
Excelのマクロでは無理API使え
978名無しさん@そうだ選挙にいこう:2013/01/03(木) 20:29:53.82
>>975
最終行の求め方は、いろいろあるので、調べてみてらどうですか
979名無しさん@そうだ選挙にいこう:2013/01/03(木) 20:33:25.90
>>952
コードは動けばいいってもんじゃねーぞ
>>955も指摘してるが ClearContentsは未宣言の変数として扱われてる
未宣言の変数の値はEmptyだからRange("T1:T100") = Emptyって書いてるのと結果的に同じでたまたまうまくいってるだけ
Range("T1:T100").ClearContentsってしないとな
980名無しさん@そうだ選挙にいこう:2013/01/03(木) 20:40:37.47
エクセルの資格を取ろうかと思い質問なのですが、
自分のwindows 7のノートPCには最初からエクセルが入っていなくて、
父親の古いXPのノートPCにはエクセル2003が入っています。
なのでエクセルの学習をする時は父親のノートPCを借りようかと思いユーキャンでエクセル2003のゲーム感覚で学習できるソフト付き教材と本がセットのを数ヶ月前に購入しました。
学習ソフトは2003はXPにしか対応していなく、2007、2010はvistaと7だけしか対応していませんでした。
ですが自分のノートPCがあるのにわざわざ父親にノートPCをいちいち借りなきゃ学習できないのがめんどくさくてあまり勉強していませんでした。
ですが、最近エクセル2010を購入して自分のPCからでもエクセルを使えるようにしようかと考えています。
ユーキャンでエクセル2003の教材を買ってしまったのですが、2003の内容書でもエクセル2010で学習できるのでしょうか?
981名無しさん@そうだ選挙にいこう:2013/01/03(木) 20:43:05.06
出来ないこともないけど2003〜2007で大分仕様が変わって
2010は2007を引き継いでるからな。分かりづらい部分もあるだろう。でも基本は覚えられるとおも。
ちなみに2010→2013でもかなりインターフェイスが変わってるぞ
今更2003の教材なんか使うより、その辺の1000円2000円の本買ってきて2010か2013覚えたほうがいい
982名無しさん@そうだ選挙にいこう:2013/01/03(木) 20:43:38.15
hoge=Columns.Countとか斬新だな
983967:2013/01/03(木) 20:44:33.28
>>978

With ActiveSheet.UsedRange
 r = .Row + .Rows.Count - 1
End With

これ↑を、こっち↓に変えてみました。

For j = 1 To ActiveSheet.UsedRange.Columns.Count
 rx = ActiveSheet.Cells(ActiveSheet.Rows.Count, j).End(xlUp).Row
 If rx > r Then
  r = rx
 End If
Next

みなさん、ありがとうございました。
984名無しさん@そうだ選挙にいこう:2013/01/03(木) 20:49:43.98
Sub a()
Dim x As Long
For col = 1 To Columns.Count
xnew = Cells(Rows.Count, col).End(xlUp).Row
x = Application.WorksheetFunction.Max(x, xnew)
Next
MsgBox (x)
End Sub
オワテタ
985名無しさん@そうだ選挙にいこう:2013/01/03(木) 23:17:09.69
>>981
2013ってもう発売されていたんですか?
通販サイトで教本は2010、2007あたりが多いみたいなので2010にしてみようかと思います!
教えていただきありがとうございました。
986名無しさん@そうだ選挙にいこう:2013/01/04(金) 07:09:08.45
987名無しさん@そうだ選挙にいこう:2013/01/04(金) 07:44:31.27
Excel総合相談所 107
http://toro.2ch.net/test/read.cgi/bsoft/1357252928/
次スレ
988名無しさん@そうだ選挙にいこう:2013/01/04(金) 12:03:15.67
989名無しさん@そうだ選挙にいこう:2013/01/04(金) 19:09:44.64
>>987
おつ
990名無しさん@そうだ選挙にいこう:2013/01/04(金) 19:12:33.64
うめ
991名無しさん@そうだ選挙にいこう:2013/01/05(土) 06:29:01.18
>>987
おつ
992名無しさん@そうだ選挙にいこう:2013/01/05(土) 10:31:17.05
うめ
993名無しさん@そうだ選挙にいこう:2013/01/05(土) 15:05:00.40
うめ
994名無しさん@そうだ選挙にいこう:2013/01/05(土) 15:46:23.03
995名無しさん@そうだ選挙にいこう:2013/01/05(土) 16:42:46.75
うめるのはやくね?
996名無しさん@そうだ選挙にいこう:2013/01/05(土) 18:22:18.26
うめ
997名無しさん@そうだ選挙にいこう:2013/01/05(土) 18:25:49.80
うね
998名無しさん@そうだ選挙にいこう:2013/01/05(土) 18:28:00.98
うべ
999名無しさん@そうだ選挙にいこう:2013/01/05(土) 18:53:31.82
1000名無しさん@そうだ選挙にいこう:2013/01/05(土) 18:54:42.05
今だ!1000ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
                  ∧∧       (´⌒(´
            ⊂(゚Д゚ )≡≡≡(´⌒;;;≡≡≡
        ⊆⊂´ ̄ ⊂ソ  (´⌒(´⌒;;
           ̄ ̄ ̄   ズザーーーーーッ
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。