[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 12/27 15:50 / Filesize : 259 KB / Number-of Response : 921
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA質問スレ Part9



1 名前:デフォルトの名無しさん mailto:sage [2008/12/04(木) 15:42:51 ]
ExcelのVBAに関する質問スレです

前スレ pc11.2ch.net/test/read.cgi/tech/1219673793/

★1 質問テンプレ(雛形)は用意しませんが、OSとExcelのバージョンは必ず書きましょう。

★2 ExcelのVBA以外の部分に関する質問はNGです。
   但し、VBA無しでも出来ることだが、あえてVBAでやりたいって物に関してはOK。

★3 ExcelのVBE(Visual Basic Editor)を使うとしても、VBAの分野以外に関してはスレ違いです。
   
 VBAとは、『Visual Basic for Application』の略で
  Application
  ├Workbooks
  |└Workbook
  |  ├Worksheets
  |  |└Worksheet
 というApplication以下のオブジェクトを、VB言語で操作するものを指します。 
 例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、
 セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。

★4 とりあえず、Excelのインスタンスを作らずにVB6で出来ることは全てスレ違いだと思ってください。

★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み
   コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。
   ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。

★6 わからなければとりあえず「マクロの記録」(Alt, T, M, R)


24 名前:デフォルトの名無しさん mailto:sage [2008/12/09(火) 11:00:26 ]
VBAを起動し「コードの表示」をクリック(フォームをWクリック)すると「メモリが不足しています。」と表示され、
コードの書き込みが一切できません。
新規で開いたエクセルファイルで、まっさらな状態でも
「メモリが不足しています。」と表示されます。
対処法はありますでしょうか?

Mac OS 9.2.2 Microsoft Office 2001 バージョン9.0(2615)です。あと何か必要な情報はありますか?


25 名前:デフォルトの名無しさん mailto:sage [2008/12/09(火) 11:58:26 ]
>>24
ttp://support.apple.com/kb/TA25701?viewlocale=ja_JP&locale=ja_JP

26 名前:24 mailto:sage [2008/12/09(火) 12:07:46 ]
>>25
べらぼうに割り当てを増やしてもだめなんだよ。

27 名前:デフォルトの名無しさん mailto:sage [2008/12/09(火) 12:55:43 ]
>>26
オマエのいってる「べらぼう」がなんだか知らないけど、
メモリがたりないんだろ?

28 名前:24 mailto:sage [2008/12/09(火) 14:43:36 ]
>>27
そういう基本的なことじゃないらしいというところまではわかっているんですけどね。
オマエ呼ばわりするオタクがいるところにきたオレがバカだった。

29 名前:デフォルトの名無しさん mailto:sage [2008/12/09(火) 14:51:50 ]
>>28
わかってねーじゃん

30 名前:デフォルトの名無しさん mailto:sage [2008/12/09(火) 14:53:43 ]
要するにVBEが使い物にならないんだな
再インスコくらいは試してるよな?
2chで質問する前にこんな基本的なこともしてないならマジでバカだな

31 名前:デフォルトの名無しさん mailto:sage [2008/12/09(火) 22:21:16 ]
>>24
こちらへどうぞ
pc11.2ch.net/pcqa/

32 名前:デフォルトの名無しさん mailto:sage [2008/12/09(火) 22:48:23 ]
FOMの本で勉強中なんですが
配列について教えてください。

Sub 配列変数()
Dim Nanakusa(6) As String
dim As Integer
Nanakusa(0) = "せり"
Nanakusa(1) = "なずな"
Nanakusa(2) = "ごぎょう"
Nanakusa(3) = "はこべ"
Nanakusa(4) = "ほとけのざ"
Nanakusa(5) = "すずな"
Nanakusa(6) = "すずしろ"
For i = 0 To 6
Cells(8 + i, 3).Value = Nanakusa(i)
Next i
End Sub

このサンプルコードなんですが、下から3行目の
Cells(8 + i, 3).Value = Nanakusa(i) この部分は
セルC8から下方向にインデックスiの配列変数Nanakusaの値を入力。 と書いてあるのですが

(8 + i, 3) ←ここがよくわかりません。

CellsだとR1C1?形式みたいので列も行も数字で指定するってのはわかったのですが
どこで"下方向"ってのを指定してるのか
また、( 8,3 + i) ←列と行を指定してから変数iを入れる感じの、これのほうがしっくり来る気がするのですが
どういうことなんでしょうか?



33 名前:デフォルトの名無しさん mailto:sage [2008/12/09(火) 23:11:07 ]
(row,col)ってことです。

34 名前:デフォルトの名無しさん mailto:sage [2008/12/10(水) 01:47:18 ]
便乗質問。>>32のサンプルでわからない部分があるのですが
dim As Integer
これはどういう意味ですか?

35 名前:デフォルトの名無しさん mailto:sage [2008/12/10(水) 01:48:57 ]
電卓のテンキーと電話のテンキーみたいなもの

36 名前:デフォルトの名無しさん mailto:sage [2008/12/10(水) 07:01:07 ]
変数の宣言が判らないレベル?

37 名前:デフォルトの名無しさん [2008/12/10(水) 08:18:23 ]
すみません。

A1セルに「業務1」という値がある場合、A2セルに「担当1」、
A1セルに「業務2」という値がある場合、A2セルに「担当2」
B1セルに「業務1」という値がある場合、B2セルに「担当1」...
というようなものを、現在If関数でやっています。
追加追加で来ていたので、ネストがかなり深いです。
だんだん条件が増えてきたので、何とかマクロで作成できないものかと考えています。

メンテを楽にする条件で、変数と代入で可能でしょうか。
VBAが初めてなので、ちょこちょこ調べながらなのですが、
方向性がつかめなくて・・・

38 名前:デフォルトの名無しさん mailto:sage [2008/12/10(水) 10:44:31 ]
テンプレ読めないやつ多いな・・・

>>37
1行目に業務を入れて2行目にその担当を出したい
今はIFでやってるから業務が増えてくると大変なのでどうにかしたい
ってところか?
LOOKUPとかじゃだめなのか?

39 名前:デフォルトの名無しさん mailto:sage [2008/12/10(水) 11:48:48 ]
デフォルトの型をバリアントから変更する方法でもあるのかと思ったけど試したらエラーになったから
Dim i As Integerの書き間違い?

コピペすれば間違いようがないと思うんだけど、もしかしてパソコン使わずに本だけで勉強してんのかな。

40 名前:デフォルトの名無しさん mailto:sage [2008/12/10(水) 17:03:11 ]
>>37
VBAやったことない人なら、lookup なり作業列なり使って、
考え方から整理し直した方がどう考えてもラク
今の考え方のままだと、VBAでも if でネストしまくったわかりにくいコードになりそう
改行とインデントがある分読みやすいだけみたいな

41 名前:デフォルトの名無しさん mailto:sage [2008/12/10(水) 18:46:07 ]
すみません・・・
VLOOKUPであっさり出来ました・・・orz

VBAもちょこちょこ勉強していきます。
スレ汚しすみませんでした

42 名前:デフォルトの名無しさん mailto:sage [2008/12/10(水) 19:40:57 ]
WindowsXP&Excel2003で質問です。
印刷された時に、セルに入力されているデータが長すぎて、
全文表示されなかったりしますが、
そういう状態かどうか調べるにはどうしたらいいでしょうか?



43 名前:デフォルトの名無しさん mailto:sage [2008/12/10(水) 19:48:51 ]
>>42
文字数や文字バイト数(unicodeだと全部2バイトだから変換しる。)で情報量を調べておいて、、
予め余裕持って設計しましょう。
80バイト毎にheightをX倍してやるとかね。

印刷すると崩れるのは仕方の無い事。
崩したくないならば、excelじゃなくて優秀なドローツールを使うか、ラスタライズしてから印刷するとか。


44 名前:デフォルトの名無しさん [2008/12/10(水) 20:48:45 ]
左から6文字が空白ならという条件式は次のでいいですか?
xp 2003 空白文字も含めて全て全角にしています。

if left$(moziretu,6)=space(6) then


45 名前:44 [2008/12/10(水) 20:50:50 ]
効いていないので効きました。
よろしく


46 名前:デフォルトの名無しさん mailto:sage [2008/12/10(水) 21:09:53 ]
if left$(moziretu,6)="      " then

47 名前:デフォルトの名無しさん mailto:sage [2008/12/10(水) 21:58:41 ]
>>44
mid関数

48 名前:デフォルトの名無しさん mailto:sage [2008/12/10(水) 23:47:47 ]
>>47
左から6文字「目」じゃない

49 名前:デフォルトの名無しさん mailto:sage [2008/12/11(木) 10:42:48 ]
>>
それは半角の空白6文字かどうかの判定式。
全角6文字の空白かどうかなら
If Left$(moziretu,6)=String$(6," ") then
混在だとちょっと面倒かな?

50 名前:デフォルトの名無しさん mailto:sage [2008/12/11(木) 11:48:18 ]
>>49
全角半角考慮してこんなのはどうかな?
LTrim$(Left$(moziretu, 6)) = ""

51 名前:デフォルトの名無しさん mailto:sage [2008/12/11(木) 13:07:48 ]
>>50
なるほどね。
それが一番いいだろうな。

52 名前:デフォルトの名無しさん mailto:sage [2008/12/11(木) 16:54:36 ]
StrComp(Left$(moziretu,6),Space(6),vbTextCompare)



53 名前:デフォルトの名無しさん mailto:sage [2008/12/11(木) 17:24:22 ]
空白文字も含めて全て全角にしています、って書いてあるし、
数も6個で固定なら>>46で充分でしょ
わざわざ余分な関数使う意味がわからない

54 名前:50 mailto:sage [2008/12/11(木) 18:16:07 ]
>>53
>>45を読めばその一言が信用できないことくらい分かるだろ?

49だけ読んでレスした漏れが言えた事じゃないがw

55 名前:デフォルトの名無しさん mailto:sage [2008/12/11(木) 20:34:08 ]
>>43
ありがとうございました。
バイト数を数える事で対応してみます。

56 名前:デフォルトの名無しさん mailto:sage [2008/12/13(土) 03:22:22 ]
VBAフォームに、VBのFlexGridのようなマス目の入ったものを
表示させてEXCELのシートとやりとりしたいのだが、
そういったコントロールってないの?
今使ってるのがEXCEL2000なんだが。。。

57 名前:デフォルトの名無しさん mailto:sage [2008/12/13(土) 03:48:02 ]
アホ発見

58 名前:デフォルトの名無しさん mailto:sage [2008/12/13(土) 14:45:20 ]
会社でやってる作業を自動化したくてVBAに興味を持ったんですが、よい参考資料が見つかりません。

VBAのリファレンス本でお勧めを教えて頂ければ助かります。

環境はWin2kでExcel 2003です。Cとか弄ったことがあるのでまるっきり初心者ではないです。

59 名前:デフォルトの名無しさん mailto:sage [2008/12/13(土) 14:56:02 ]
丸っきりの初心者ではないと言い張るのなら、参考資料など見つからなくても何とかするもんだ。

60 名前:デフォルトの名無しさん mailto:sage [2008/12/13(土) 16:22:48 ]
>>56
owc

>>58
msdnのヘルプ

61 名前:デフォルトの名無しさん mailto:sage [2008/12/13(土) 18:39:41 ]
本といわれてヘルプを紹介するアホはどうにかならんかね。


62 名前:デフォルトの名無しさん mailto:sage [2008/12/13(土) 18:43:12 ]
どうにもならんよ



63 名前:デフォルトの名無しさん [2008/12/13(土) 19:36:14 ]
大きな本屋に行って参考書探すくらいの努力したら?

64 名前:デフォルトの名無しさん mailto:sage [2008/12/13(土) 20:57:44 ]
経験者なら本なんていらんだろ。
VBAくらい中学生でも使え紆余w

65 名前:デフォルトの名無しさん mailto:sage [2008/12/13(土) 22:32:27 ]
折れは、このスレだったか昨年知った次の本を薦める。
「技術評論社 Excel VBA ポケットレファレンス」
成りは小さいが、他のどの本よりも役に立った。
今年、確か、2007対応の改訂版が出たと思うが2003等も使えるように整理してあるはず。


66 名前:デフォルトの名無しさん mailto:sage [2008/12/13(土) 22:55:26 ]
ヘルプを見るのは常識として
本なら俺も↑のポケットリファレンスだな。
あとはできる大事典VBAもいい
勉強中なら本のほうがやりやすい所あるし。



67 名前:58 mailto:sage [2008/12/14(日) 15:30:22 ]
コメントくださった方、ありがとうございました。

>65,66で紹介して頂いたポケットリファレンスを購入してきました。
ちょっと手に取って調べられる本が欲しかったので、まさにぴったりです。

68 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 16:42:59 ]
>ちょっと手に取って調べられる本が欲しかったので、まさにぴったりです。
だったらそれを先に書いておけよ。

69 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 17:19:15 ]
それくらい読み取れよアホ

70 名前:デフォルトの名無しさん mailto:sage [2008/12/15(月) 02:04:11 ]
まあ解決したみたいだからいいじゃないか。

71 名前:デフォルトの名無しさん mailto:sage [2008/12/15(月) 16:37:15 ]
2007は関数の追加や仕様の変更が色々あったおかげで説明が増えて少し読みにくくなったので、
もし2003で使うならブックオフあたりで古いやつを探すといいかも。

72 名前:デフォルトの名無しさん mailto:sage [2008/12/15(月) 23:15:34 ]
スレチでしょうか…?初心者です。質問させて下さい
WindowsXP、Excel2000です

マクロでゲーム作りに挑戦し、遊べる段階にまで出来上がったのですが…
なぜだか遊んでいると、高確率で突然「画面更新」が止まってしまいます。
処理は続いているので、音も鳴りますし、Escボタンでコードの実行を中断すると、画面更新が再開され内容が反映されます。
その時「継続」を選ぶとゲームを続けられるのですが、しばらくするとまた止まってしまいます。
ループ中にScreenupdating = Trueを入れてみましたが、効果はありませんでした。

何が原因なのでしょうか?思い当たる節があれば教えて下さい。
因みに落ちゲーで、セルドット方式です。Sleep関数を多用しています。

長文失礼しました…



73 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 00:01:40 ]
仕様です。
おとなしくFlashの勉強するのが吉。

74 名前:72 mailto:sage [2008/12/16(火) 04:33:53 ]
>>73
レスありがとうございます。
仕様ですか…Excelの描写速度が遅いことは知っています。
しかし、ゲームプログラマーの方々もいらっしゃいますし、自分に否があるように思えてなりません。

コードの書き方に問題がある、ということは考えられませんか?コードは現在700行程です。
自信はありませんが、Sleepが問題な気がします。どうでしょうか。

75 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 04:41:10 ]
「否」でなく「非」でした

76 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 06:08:43 ]
だったらコードを晒したら?
それができないなら自分で勝手に調べて答えを出せばいいよ。

77 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 10:00:26 ]
データ型について質問です。
エクセルのセルに勤務時間が入っており、これをvbaで計算しているのですが
時間の時も日付型(DATE)の方が良いのでしょうか?
それともSingleやDoubleでしょうか?

VBAの勉強も兼ねてやってますので、関数でやれという回答はご容赦下さい・・

78 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 12:24:26 ]
>>76
やっぱり、コード見ないとどうしようもないですよね…
お騒がせしました

79 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 13:09:50 ]
そりゃぁ、Sleepが問題だなんて認識している香具師とまともに会話が成立するとは思えないもんねぇ。

80 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 13:10:45 ]
>>77
勉強を兼ねているんだろ。全部やれ。

81 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 13:15:49 ]
>>80
試してみてどちらでもできるということは確認済みなんです
でも一般的に、どちらがベターなのかなと思いまして


82 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 13:27:29 ]
一般的には、シート関数だな。



83 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 15:03:10 ]
>>79
Sleep関数は問題無いんですね?ありがとうございます!安心しました
Sleepが使えないとなると凄く面倒になるので…

以前に原因を調べていたところ、Sleep関数の欠点(?)を綴ったページを見つけ、
その内容を見て勝手にSleepが原因だと解釈してしまったみたいです。
自己解決出来るよう、もう少し頑張ってみます

84 名前:デフォルトの名無しさん [2008/12/16(火) 15:42:22 ]
エクセルでVBAを使ってじゃんけんゲームを作れと言われたのですがわかりません
教えてください


85 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 15:50:10 ]
宿題丸投げはご遠慮ください。
VBAでなくてもできることの質問は、VBスレ辺りでどうぞ。

86 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 21:46:59 ]
VBスレでも宿題はお断りだw

87 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 23:12:04 ]
V=チョキ
B=グー
A=パー

としてじゃんけんを楽しんでください。

88 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 07:58:32 ]
意地悪なやつらだな。
逆に考えろよ。VBAなんて宿題かゲームくらいにしか使わないだろ。
おまえらのご自慢のテクニックを披露できるチャンスだぞ。

89 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 09:42:52 ]
と学生が申しております
仕事で使うわアホ


90 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 11:06:52 ]
>>89
VBAがまともに使えない上に仕事したことないやつが若気の至りってやつで書き込んだんだろう
あまり責めてやるなよw

91 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 12:55:10 ]
>>89>>90
どんなことに使ってるの?

92 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 13:49:36 ]
ルーチンワークは大体そう
他は資料をデータベースっぽく正規化するために使うことも

・・まぁ、大企業ならこんなことしなくても既にシステムは完成されてるんだけどね



93 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 13:51:22 ]
SAPのBWなんかはExcelマクロ

94 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 13:57:12 ]
オフコンからデータ(CSVとか)受け取って
帳票(見積書とか)の形に整えて印刷とか

95 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 18:51:26 ]
WindowsXP、Excel2002ユーザの質問です。

現在VBAマクロ内で、OSのXP/Vistaの違いを問わず、 インストールされているFirefox 3.0.xの
実行ファイルのフルパスを取得しようとしています。Firefox3が

・標準のフォルダ以外にインストールしている可能性がある
・HTML、HTTP等に関連付けられている
・デフォルトブラウザに指定されている

という状態で使われているとき、マクロ上で何をすればスマートにフルパスが得られるでしょうか?
検索すると、既存ファイルを利用する方法、レジストリの関連付けを参照する方法がありますが、
他の方法は無いでしょうか?

参考になる情報をご存知の方、教えてください。

96 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 19:27:43 ]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\firefox. exe]


97 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 01:52:45 ]
問屋でデータ処理に未知のオフコン使ってて、送られてくる売り上げデータのフォーマットが変態的なんで
VBAで整形&正規化してる。なんか>>94とよく似た境遇だな。おまけに受け渡しはいまだにフロッピーディスク。
社内でデータベース処理してるマシンも松下製の見たことない機種だったなあ。
こっちはなんとPC-9821が専用ケーブルでつながってて、N88-BASICで書かれた端末ソフトが走ってる。

中小企業でコンピューターの知識がないと、メーカーの営業の言うがままにシステム構築して
記憶媒体から何から何まで汎用性ゼロのシステムで囲い込まれてにっちもさっちもいかないことが多い希ガス。

98 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 10:56:24 ]
何年前に作ったシステムだよ?

99 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 11:40:21 ]
wikiによるとPC-9821が入ったのは早くても15年位前らしいな

パソコンで動くエミュレーターがあるにもかかわらず
いまだにバカ端が業務で現役ってところもあるしそんなに珍しくもないんじゃね?

まぁスレ違いだしこの辺で流れ斬ろうか・・・

100 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 13:42:45 ]
ダム端って言うんだよ

101 名前:sage mailto:sage [2008/12/18(木) 15:09:13 ]
いまユーザーフォームを利用してモグラたたきを作っているのですが
じかんをカウントダウンさせるプログラムとモグラの動きのプログラムが
うまく作用せず、モグラの動きのプログラムが終了すると
再びカウントダウンするようになってしまいます。両方とも独立して動くように
したいのですがよい方法はありませんか。

102 名前:sage mailto:sage [2008/12/18(木) 15:11:29 ]
ソースです

スタートボタンを押すと時間のカウントダウンを開始
Private Sub CommandButton1_Click()
starttime1 = 2
starttime2 = 0
startflag = 1 'ゲーム開始用フラグ

Do While starttime1 >= 0

keika = Timer + 1
Do While keika > Timer
Loop
starttime2 = starttime2 - 1
If starttime2 < 0 Then
starttime2 = 59
starttime1 = starttime1 - 1
End If
If starttime1 < 0 Then
MsgBox "TIME UP!" '時間が過ぎたら
Exit Do
End If
Label4 = starttime1 & ":" & starttime2 'ラベルに時間のカウントダウンを表示
DoEvents
Loop
End Sub



103 名前:sage mailto:sage [2008/12/18(木) 15:18:27 ]
ソースの続き

Private Sub back1_Click() back1はイメージオブジェクトです
If startflag = 1 Then
Call moguratataki
End If
End Sub
コマンドボタンを押したら時間のカウントダウンとゲームの開始したいと
思っていますがそれもまだ分からないので調べ中です。
call命令で、もぐらたたきゲームが始まるような感じで作りたいと思っています。


104 名前:sage mailto:sage [2008/12/18(木) 15:22:58 ]
ソースの続き2

Sub moguratataki()

Randomize
kyarass = 15
stsuu = Int((3 * Rnd) + 1)
hozon(0) = stsuu
hozon(1) = stsuu
a = 0
Do While stsuu > 0
stkyara = Int((kyarass * Rnd) + 1) - 1
If krflag(stkyara) <> 1 Then
trkyara(a) = stkyara
krflag(stkyara) = 1
stsuu = stsuu - 1
a = a + 1

End If
Loop




105 名前:sage mailto:sage [2008/12/18(木) 15:25:33 ]
ソースの続き3
b = 0
Do While hozon(0) > 0
stbasyo = Int((25 * Rnd) + 1)
If anaflag(stbasyo - 1) <> 1 Then
If stbasyo < 16 Then
anaflag(stbasyo - 1) = 1
yokoti = (stbasyo Mod 5) - 1
If stbasyo = 5 Or stbasyo = 10 Or stbasyo = 15 Then
yokoti = 4
End If
If stbasyo = 15 Then
stbasyo = 14
End If
tateti = Int(stbasyo / 5)
anax(b) = xti1(yokoti)
anay(b) = yti1(tateti)
b = b + 1
hozon(0) = hozon(0) - 1


106 名前:sage mailto:sage [2008/12/18(木) 15:26:25 ]
ソースの続き4
Else
anaflag(stbasyo - 1) = 1
yokoti = (stbasyo Mod 5) - 1
If stbasyo = 20 Or stbasyo = 25 Then
yokoti = 4
End If
If stbasyo = 25 Then
stbasyo = 24
End If
tateti = Int((stbasyo - 15) / 5)
anax(b) = xti2(yokoti)
anay(b) = yti2(tateti)
b = b + 1
hozon(0) = hozon(0) - 1
End If
End If
Loop

107 名前:sage mailto:sage [2008/12/18(木) 15:27:54 ]
ソースの続き5
For i = 0 To hozon(1) Step 1
mogura(trkyara(i)).Move anax(i), anay(i)
mogura(trkyara(i)).Visible = True
Next i
For i = 30 To 0 Step -3
For j = 0 To hozon(1) Step 1
mogura(trkyara(j)).Move anax(j), anay(j) + i
Next j
DoEvents
ts = Timer + 0.1
Do Until ts < Timer
Loop
Next i
DoEvents
ts = Timer + 0.1
Do Until ts < Timer
Loop
For i = 0 To 30 Step 3
For j = 0 To hozon(1) Step 1
mogura(trkyara(j)).Move anax(j), anay(j) + i
Next j
DoEvents
ts = Timer + 0.1
Do Until ts < Timer
Loop
Next i

For i = 0 To hozon(1) Step 1
mogura(trkyara(i)).Visible = False
Next i
end sub

108 名前:sage mailto:sage [2008/12/18(木) 15:30:53 ]
わかりにくく読みにくいコードだと思いますが(すいません)よい方法あれば
教えてください。

109 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 15:31:07 ]
Application.Ontimeでゴリゴリやるか、時間計測用のActiveX EXEを作ってイベントドリブンにしろ。
っつってもわかんねーかな。

110 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 15:46:55 ]
<<109 さん
おはやい回答ありがとうございます。
Application.Ontimeを調べてみました。なんとなくできそうな気が
しそうですのでこれでやってみようと思います。ありがとうございました!

111 名前:デフォルトの名無しさん [2008/12/18(木) 20:25:38 ]
セルのある列全体ににプルダウンの選択式で○、×を選ぶとします。

それをif判定で、試してみたところうまく結果がでませんでした。
プルダウンの選択式だと、"○"として扱われないのでしょうか?

112 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 20:46:33 ]
>>111
何のプロパティをチェックしてるの?



113 名前:デフォルトの名無しさん [2008/12/18(木) 20:48:17 ]
>>112
cellsでとってvalueを参照しております。
イミディエイトで中身みたら、ちゃんと×や○になってたのに・・・

114 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 21:40:37 ]
>>113
実際のif文は?

115 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 21:41:19 ]
>>113
そもそも、プルダウンじゃなくすれば判定できるの?

116 名前:デフォルトの名無しさん [2008/12/18(木) 21:48:14 ]
>>114
do until なんとか =""
with ほにゃらら
if .cells(x, y).value = "○" then
処理
end if
loop

.valueにはいってる値を確認したところ、×とかちゃんとはいってました

セル全体にプルダウンの選択がそれぞれ入ってるからループ文では聞かないのかな



117 名前:デフォルトの名無しさん [2008/12/18(木) 22:26:25 ]
sheet1の2-24行、D列に○×のプルダウンがはいっています。
これでやるとエラーがでますifの行に

x = 1
i = 2
y = 4
Do Until Cells(i, y).Value = ""

If Cells(i, y).Value = "○" Then
Sheets(2).colums(x).Delete

x = x + 1
i = i + 1

End If
Loop

118 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 22:36:44 ]
i=i+1はEndIfとLoopの間だと思う。

sheets(2)の列x(初期値1)を削除した後のループで再び削除する時にはxがインクリメントされてるから初期状態の列番号でいう所の3列目が削除されると思うがそれで良いのか、ふと疑問に思った。

どちらもエラーの原因じゃないけど。
というか、俺には「○×のプルダウンが入ってます」の意味が理解できない。
すまんな。

119 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 22:46:18 ]
あとcolums→columns、だね

それでもif文の行にはエラーは出ない。
力になれなくてすまんな。

120 名前:デフォルトの名無しさん [2008/12/18(木) 22:48:29 ]
そうでした^^;
たしかにインクリメントしないといけませんね

Dim i As Integer
Dim y As Integer
Dim x As Integer

x = 1
i = 2
y = 4


Do Until Cells(i, y).Value = ""

If Cells(i, y).Value = "○" Then
Sheets(2).colums(x).Delete
x = x - 1

End If
i = i + 1
x = x + 1

Loop

End Sub


これでやったらif文にオブジェクトはプロパティかメソッドをサポートしてない
ってでてまたエラーになってしまいました

121 名前:デフォルトの名無しさん [2008/12/18(木) 22:53:48 ]
ありがとうございます!
columnsがまちがっていたようでした
無事いけました
ご指摘いただいたcolumnsが間違っていたことが一番の原因だったようです

122 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 23:16:55 ]
失礼します


シート1から実行するとしてセルB2には名前という文字が入っております
const mojicell as string "B2"

のようにしてシートの対応するセルに格納されてる値をとりだすことはできますか?
やってみたところ、セルを格納するのはできなかったので・・・何か方法があるのかと思いまして

実際どのように試し方といいますと

Sheets(mojicell).cells(...... のように使いました。
SHeets("名前").cells(...  に置き換えられるかとおもっていたのですが、
実際はSheets("B2")と 入っておりました。

const で指定したセルが参照する値を格納することはできないのでしょうか?



123 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 23:19:36 ]
セル参照だけならrangeオブジェクト使いなさい。
シートまで含むならまずconstの値を工夫しなさい。

124 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 23:21:20 ]
>>122
const mojicell as string = "B2"
worksheets(range(mojicell).value).cells(...






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<259KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef