1 名前:デフォルトの名無しさん mailto:sage [2007/01/09(火) 11:14:15 ] ・まじめにExcelの機能を追及してみようと思う奇特なひと ・スキルがないのに無理やりVBAの仕事を押し付けられた普通のひと ・VBAなんていまさらやりたくないのに業務で仕方なく使っているひと ・とにかく漏れにこんな仕事まわすなと怒っているひと そんなM$大好きなひとからアンチM$なひとたちまで幅広くカバーするスレです OOoのCalcの質問もOKです 前スレ pc10.2ch.net/test/read.cgi/tech/1054356121/
80 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 07:47:17 ] >>79 VBならコントロール配列使うところだが、VBAのコントロールではコントロール配列に出来ないので、 連番名(標準のCheckBox1, CheckBox2, …で良い)にしておいてControlsコレクションを使う Controls("CheckBox" & i) イベントも取りたい場合はクラスで疑似コントロール配列を実装する つーか、何百個ものチェックボックスを配置するインターフェイスを見直した方がいいと思うけどね 予測するに、ListBoxを ListBox.MultiSelect = fmMultiSelectMulti ListBox.ListStyle = fmListStyleOption と、「複数選択可 & チェックボックス有り」で使えば済む話なんじゃないの? ListBox.Selected(i)でチェック状況取得できるし
81 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 23:26:09 ] テキストを読み込みたいんです。 123 123 123 123 123 123 123 133 みたいなのは Line #で読めたんですけど 123 123 132 123 123↑123 123 132 123 123↑・・・ こういうデータは読み込めません。↑は何なのか、わかりません。 改行されてないデータはどうしたら読み込めるんでしょう? 検索しようにも↑の記号の読み方がわかりません。お手上げです。
82 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 23:40:22 ] >>81 > ↑は何なのか、わかりません。 お前は解るはずだ。というか調べる手段があるはずだ。 それが何なのかはバイナリエディタで見れば一目瞭然だからな 逆にこっちがわかんねーっつうの。 文字としての↑(81 AA)だってならわかるが、Line #で読めないってことは 81 AA では無いわけで 特殊文字の表現記号ならエディタによって表示が異なるので、お手上げです。
83 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 23:45:40 ] ↑は本当はもっと横につぶれたような形をしており コピーしてペーストすると消えてしまう謎の文字です。 バイナリエディター・・・? 調べてみます。
84 名前:79 mailto:sage [2007/01/27(土) 11:00:26 ] >>80 さっそくの回答ありがとうございます ですがcontrols("checkbox"&i)ではエラーになりました(subまたはfunctionが見つかりません) もしかしてワークシート上に直接配置したcheckboxだとダメですか? 実際には900行×20列の表(900人分顧客データみたいなもの) から今回対象になる人を範囲でえらび(100番目から200番目等) さらにその中から対象から外したい人を最左列に配置したチェックボックス で選択して残った対象者だけで別の表を作成するというようなプログラムを組みたかった のですが、リストボックスの方法だとちと選びづらいです >>つーか、何百個ものチェックボックスを配置するインターフェイスを見直した方がいいと思うけどね おっしゃる通りですね(´・ω・`) 素直に左端に1か0を入力することで判別する方がいいかもです チェックボックス900個も置いたらめちゃくちゃ重くなったし
85 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 11:50:41 ] >>84 シート上ならOLEObjectsコレクションだ objSheet.OLEObjects("CheckBox" & i).Object.Value Shapesコレクションからも辿れるけどね objSheet.Shapes("CheckBox" & i).OLEFormat.Object.Object.Value > 素直に左端に1か0を入力することで判別する方がいいかもです の方法でも、表示形式を [=0]"";[=1]"●" とかにすれば解りやすいし ' A列をダブルクリックしたらチェック反転 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Column <> 1 Then Exit Sub Target.Value = 1 - Target.Value Cancel = True End Sub ' A列を含む範囲を右クリックしたら、その範囲全てのチェック状態を、選択範囲の一番上を基準に反転 Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) If Target.Column <> 1 Then Exit Sub Target.Resize(, 1).Value = 1 - Target.Cells(1).Value Cancel = True End Sub などを使えば、マウスでチェック状態の切替が出来る ●の変わりに☐☑を使うことも可能 Range("A:A").NumberFormat = "[=0]""" & ChrW(9744) & """;[=1]""" & ChrW(9745) & """"
86 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 15:05:41 ] >>81 何らかの制御コードだろ。そのテキストを作った香具師に聞けば? #なんとなく、改行コードの問題な希ガス。
87 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 16:18:50 ] VBAの命令の意味と 記述方法が書いてある辞典的なページってありませんか?
88 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 16:43:58 ] >>87 付属のVBAヘルプ
89 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 02:19:41 ] do Until xxxx <> vbnullstring のときの <>っていうのはどういういみですか =とは違うの?
90 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 02:23:31 ] >>89 w
91 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 02:50:28 ] >>89 =とは逆の意味
92 名前:デフォルトの名無しさん [2007/01/28(日) 09:27:17 ] excelのVBEを開こうとすると、VBEを開けるどころかexcelそのものが閉じてしまいます。 ウィルススキャンをしたところウィルスに感染はしていませんでした。 OS:Windows2000でexcelはexcel2000です。ちなみにwordのVBEは普通に開けます。 どうすれば正常にVBEが開けるようになれば良いのか、よろしくお願いします。
93 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 09:30:28 ] do Until xxxx <> vbnullstring do While xxxx = vbnullstring 同じ意味と考えてもいいですか?
94 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 09:51:59 ] >>92 とりあえずブックを全て閉じた状態で試していないならブックを全て閉じてからVBEを立ち上げろ 同じく、アドインも全て外した状態で試してないなら一度全て外せ それでダメならExcel(Office)の再インストール 上書きインストールではなく一度アンインストールしてから再インストールね それでもダメならOS再インストール まさかこの板に来る奴が再インストール出来ないとか面倒とかは言わないだろ >>93 結果は同じだけど意味は違う
95 名前:92 mailto:sage [2007/01/28(日) 10:01:56 ] >>94 ご返信ありがとうございます! 一応Officeの再インストールは既に行いましたが、駄目でした。 ちなみにVBEのみの起動はどうすればよいのでしょうか? やっぱりOSの再インストールしかないんでしょうかねぇ。。。
96 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 11:28:10 ] >>95 まぁがんばれ
97 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 14:31:36 ] EXCEL2000で イベントプロージャー「テキストボックス名_Change」を作成したいのですが 図形作成→テキストボックスで テキストボックスを作成したのですが 右クリックしてもコードの表示は出ません。(本には書いてあるのですが) 2000だと他の方法にしないといけないのですか 結果として Private Sub TextBox1_Change() をかくようにしたいのですが
98 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 14:36:44 ] >>97 今2000で試したけど、ちゃんと出たよ。
99 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 15:04:36 ] コントロールツールの方だと「プロパティ・コードの表示」がある フォームコントロールの方だと「マクロの登録・コントロールの書式設定」がある イベントが使えるのはコントロールツールの方 右クリックして「マクロの登録・コントロールの書式設定」が出るなら、間違った物使ってるだけ 「プロパティ・コードの表示」も「マクロの登録・コントロールの書式設定」も出ないならPCを窓から投(ry
100 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 15:05:38 ] できましたあああ。ありがとうございます! ですが最終的にこっちの方法を採用させていただきました。 >表示形式を [=0]"";[=1]"●" とかにすれば解りやすいし > A列をダブルクリックしたらチェック反転 >Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) > If Target.Column <> 1 Then Exit Sub > Target.Value = 1 - Target.Value > Cancel = True >End Sub 大変有益なご教示大感謝です
101 名前:79 mailto:sage [2007/01/28(日) 15:06:46 ] ミスッタ_| ̄|〇 上の100は>>85 さんへのレスです
102 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 15:10:48 ] >>98 >>99 できました フォームコントロールの方で書いてましt
103 名前:102 mailto:sage [2007/01/28(日) 15:11:19 ] ありがとうございました 。
104 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 18:28:12 ] vista.crap.jp/img/vi6997563313.jpg
105 名前:83 mailto:sage [2007/01/28(日) 19:38:04 ] 矢印の正体はLFってやつでした。chr(10)とやらなんやら なるほど・・・CR+LFじゃないとダメ・・・ まだ読み込めないけど、手がかりはつかめたんで頑張ってみます。
106 名前:デフォルトの名無しさん [2007/01/28(日) 21:47:19 ] 2007ってデフォルトフォーマットではマクロは保存できないんだな、店頭デモ機で試してみたんだが VBAは後方互換で残ってるだけなの?
107 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 00:23:36 ] >>106 オプションで開発タブをリボンに表示するにチェックを入れると使えるよ
108 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 15:41:15 ] べき算って 2の2乗=4 3の3乗=27ってことですか?
109 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 16:32:45 ] 冪乗とはいうけど冪算とは余り言わない希ガス。
110 名前:デフォルトの名無しさん [2007/01/29(月) 21:56:03 ] 今ExcelのマクロはほとんどVBAになっちゃってるけど、ブックにシートを追加するときに Excel4.0のマクロシートが残ってることがわかる。やってみたいけど、誰かマスターする 方法おしえてくれないかな?解説書は売り切れてるしネットでも見当たらない。せっかく 残ってる機能だから眠らせておくのは惜しい。
111 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 22:29:47 ] 2列のセルの文字列を一つにすることは可能? セルA セルB 桃 太郎 =桃太郎
112 名前:デフォルトの名無しさん [2007/01/29(月) 22:54:34 ] >>111 可能だ。=CONCATENATE("桃","太郎")とすればいい。 セルA=桃、セルB=太郎なら、=CONCATENATE(セルA,セルB)でもいい。 セルが3つ以上でもやり方は同じだ。
113 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 00:00:45 ] >>112 それのどこがVBA? このスレ的にはVBAで応えるべきなんじゃないのか?
114 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 00:51:21 ] Word/VBAの教えてスレはどこ?
115 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 00:53:40 ] ありがとうございます
116 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 16:21:57 ] すみません、ちょっと教えて下さい マクロで、指定したセルにチェックボックスを作ったり、削除したりするには どう書けば良いのでしょう? VBA駆け出しで、全く分かりませんorz
117 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 18:12:08 ] >>116 マクロの記録を録ってみろ その記録されたコードを見てわからなければお前にはまだ早い 精進して出直せってことで
118 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 22:59:22 ] >>116 表示→ツールバー→VISUAL BASIX 出ないことを祈る
119 名前:デフォルトの名無しさん [2007/01/30(火) 23:05:19 ] >>111 >>112 を転用で、 Application.WorksheetFunction.CONCATENATE(セルA,セルB) VBA的に セルA.value & セルB.value 又は セルA.value + セルB.value &だと文字列+数値が可。+だと不可 CStr(数値) + 文字列だと文字列として結合 >116 作るのは>>117 の言うとおり。 ぐぐるなら[OLEObject]もしくは[Shape] 削除はデザインモードじゃないときにやるとエクセルが壊れる。 デザインモードでなら.Deleteとか.Cutで消える。 中途半端だがかんべん。
120 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 23:55:15 ] はじめまして、早速一つお聞きしたいことがあります。 Function関数において最終的に表示される文字列を、 「その関数を使ったセルとは別のセル」に表示させたいのですが どのような式を打ち込めばよいでしょう?
121 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 00:09:06 ] >>120 Sub abc() Dim str As String str = test Worksheets("Sheet2").Range("A1").Value = str End Sub Function test() As String test = "返り血" End Function こういうこと?
122 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 00:37:35 ] ありがとうございます。まさかこんな早くに答えていただけるとは思いませんでしたので驚きました。 よろしければもう一つだけお聞きしたいのですが、任意のセルをそのつど入力し そのセルに表示させたい場合はどうしたらよいでしょう?
123 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 00:56:22 ] >>122 よくわからんのだけども、 任意のセル(入力するセル)の指定方法: @クリック→任意のWorkSheetのマクロを開いて、マクロ書くスペースの左上にある ちっちゃいコンボボックス的なやつの値を[WorkSheet]に設定、そのとなりのボックスの値を [SelectionChange]に設定(ディフォルト) したら、 Private Sub Worksheet_SelectionChange(ByVal Target As Range) End Sub ができるから、ここに Target.value = "返り血" Targetは引数ね。ちなみにThisWorkBookのまくろで同じの作るとすべてのシートに適応される。 Aセルの値→ 上と同じ感じで、左[WorkSheet]右[Change]に設定 Private Sub Worksheet_Change(ByVal Target As Range) End Sub ができるからここに、 If Target.Row = 1 And Target.Column = 1 Then Range(Target.Value).Value = "返り血" End If A1のセルの値にB2とか入れるとそのセルに返り血って入る 弱点はセル以外の値を入れるとエラーになる。克服はできるはず、考えないけど。 Bユーザーフォーム→ ぐぐってちょ。 こんなもんで。
124 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 01:01:51 ] いただいたヒントのおかげで何とかなりそうです。 稚拙な説明にもかかわらず丁寧に答えてくださり本当にありがとうございます。
125 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 10:03:27 ] excelのvbaで松井証券へ自動ログインするプログラムを組んでいるのですが 下のプログラムの最後の objIE.document.frames("CT").document.All("kidouButton").Click で たまにエラーが出ます。エラーの原因は何かわかりますでしょうか。 下記のプログラムは、松井証券へログインし、松井証券の会員ページから ネットストックハイスピードというソフトウェアを起動するためのものです。 Declare Sub Sleep Lib "KERNEL32" (ByVal dwMilliseconds As Long) sub 時間待ち() 'ページの読込が終わるまで待機するための処理。 Do Until objIE.Busy = False Sleep (200) 'CPU負荷軽減のために0.2秒間隔でIEオブジェクトをチェック。 Loop End sub (つづく)
126 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 10:05:56 ] (続き) Sub netstock() Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "https://www.deal.matsui.co.jp/ITS/login/MemberLogin.jsp" call 時間待ち '松井証券サイトのフォームへ、ワークシートに書かれたIDやパスなどのデータを流し込む objIE.document.forms("form").clientCD.Value = Worksheets("松井証券へ自動ログイン").Range("C2").Value objIE.document.forms("form").passwd.Value = Worksheets("松井証券へ自動ログイン").Range("C3").Value objIE.document.forms("form").easyTradeFlg(0).Checked = True objIE.document.forms("form").submit call 時間待ち '松井証券ログイン後、会員ページからソフトウェアを起動するためのページへ移動 Set objFDOC = objIE.document.frames("LM").document For n = 0 To objFDOC.Links.Length - 1 If objFDOC.Links(n).outerText = "ネットストック・ハイスピード" Then objFDOC.Links(n).Click Exit For End If Next n call 時間待ち 'ボタンを押してネットストックハイスピードを起動する objIE.document.frames("CT").document.All("kidouButton").Click End Sub
127 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 14:47:31 ] セルAに入力した Taka Toshi という文字列を taka_toshi というように 小文字化と半角空白にアンダーバーを挿入して変換するようにしたいのですが どうすればいいですか?
128 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 15:21:21 ] Replaceで半角スペースを_に置換して LCaseで小文字化すればいいだけじゃん このくらいならワークシート関数でも出来るし
129 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 22:29:54 ] >>125 理由はわからなそうだけども、 なんていうエラーがでてるのかはとても知りたいのでお願いします。 でも、もしかしたらもしかしたら、 Navigateで読み込み→ 読み込みはじめるより先に Do Untilの条件へ行ってしまい Sleepしない→ 読み込まれる前にクリック かも。 ループの前にSleepを入れてみてはいかかでしょう? 適当で申し訳ない。
130 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 22:30:48 ] さらにごめん。 Navigateで読み込みじゃなくて、 クリックで画面変更だ。
131 名前:デフォルトの名無しさん [2007/02/01(木) 22:55:40 ] 今日初めてExcelでマクロを作ろうとしてみました。 引数を2つ取る関数を作りたいのですが意味不明のエラーが出て 動きませんでした。 Public Sub Test() Test2 (1, 2) End Sub Sub Test2(a As Integer, b As Integer) MsgBox (a + b) End Sub 引数を1つにすると動きます。 どこがおかしいのでしょうか?
132 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 23:27:48 ] >>131 VBAは自分で作った関数を使う際、 引数にかっこをつけてはいかんのです。 ので、 Test2 1, 2 で。
133 名前:デフォルトの名無しさん [2007/02/01(木) 23:48:14 ] call
134 名前:デフォルトの名無しさん [2007/02/01(木) 23:53:32 ] こんばんわ。 質問です。 1 ○○ 0:00 2 ○○ 1:00 3 ○○ 2:00 4 ○○ 3:00 5 ○○ 4:00 6 ○○ 5:00 ・ ・ ・ 25 ○○ 0:00 ・ ・ 49 ○○ 0:00 ・ 73 ○○ 0:00 ・ という、一時間ピッチのデーターがあります。一年分くらい。 それを、毎正時だけ欲しいのです。2〜24、26〜48の行を白紙の行に したいのですが、この説明で分かってくれるかたいますか? ご指導ください。
135 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 00:03:20 ] >>134 出力するシート名は?
136 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 00:10:24 ] > VBAは自分で作った関数を使う際、 > 引数にかっこをつけてはいかんのです。 ハズレ 自作関数の場合ではなく、基本的にSub、Functionプロシージャ(メソッド)を呼ぶ場合、 戻り値を取る場合とCallで呼ぶ場合以外は()を付けない。MsgBox関数の場合だとこんな感じで使う。 [1] MsgBox "test", vbOkOnly [2] Call MsgBox("test", vbOkOnly) [3] ret = MsgBox("test", vbOKCancel) 自作関数の場合でも戻り値を取る場合とCallで呼ぶ場合は()付けなきゃダメだし 自作関数じゃなくても、[1]のように使うときは()付けてはいかんのです。 ややこしいのは、引数一つの関数の場合。 [4] Inc hoge [5] Inc (hoge) Sub Inc(Value As Long) Value = Value + 1 End Sub [4]の方だと変数hogeが+1され、[5]の方だと変化しない。 引数一つの関数をCallを省略し引数に()を付けて呼ぶと、引数は値渡しになる。 基本的に参照渡し値渡しは呼び出される側で指定するので、[5]は殆ど使われない。 意味も知らずに間違って使ってる奴は居そうだけどな。
137 名前:デフォルトの名無しさん [2007/02/02(金) 00:13:03 ] >>135 潮位というシートで作業しています。
138 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 00:21:04 ] >>136 サンクス。職場では恥かかんよう気をつけるよー。 >>137 Option Explicit Option Base 1 Sub testTwo() Dim rng As Range Dim outRng As Range Dim data() As Variant Dim cnt As Long Dim outCnt As Long Set rng = ActiveSheet.Range("B1") cnt = 1 Do While rng.Row <= 10 If rng.Value = "0:00" Then ReDim Preserve data(cnt) data(cnt) = rng.Offset(0, -1).Value cnt = cnt + 1 End If Set rng = rng.Offset(1) Loop Set outRng = ActiveWorkbook.Worksheets("潮位").Range("D1") For outCnt = 1 To cnt - 1 outRng.Value = data(outCnt) Set outRng = outRng.Offset(1) Next End Sub とりあえずD列に出してみた。 別シートに出力の際は潮位のところをそのシート名に変更すればよし、あとそのとなりをA1にするとA列にでる。
139 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 00:25:16 ] ごめん。 Do While rng.Row <= 10 を Do While rng.Row <= 65500 あたりに変えといて。 ちなみに検索する行の最大数。 あと、なにも出力されないようなら、 if rng Value = "0:00" Then の 0:00 の部分をセルに表示されてる値ではなくて、 その右上らへんにある本当の値に変えてみて。
140 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 00:29:36 ] っていうか、 VBAの勉強中だからついVBAで答えてしまったけれども・・・。 セルB1をクリック(選択) データ→フィルタ→オートフィルタ B1に三角がでるのでクリック 0:00を選択 orz...
141 名前:デフォルトの名無しさん [2007/02/02(金) 00:37:36 ] >>140 ありがとうございます。 オートフィルにすると、行が詰まってしまうので、 行間は白紙のまま置いておきたいのですよ。 >0:00 の部分をセルに表示されてる値ではなくて、 その右上らへんにある本当の値に変えてみて。 VBAでは出力されないのですが、もう少し教えてもらえますか。
142 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 00:39:30 ] ここで無限ループ使った回答したら、素人にはブラクラ並の攻撃かもしれない と、ふと思った
143 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 00:47:28 ] こっちのほうが安全じゃない? my_Row= Range("a65536").End(xlUp).Row for i = 1 to my_row 処理 next i
144 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 00:48:48 ] そのままなら、こっちか。 my_Row= Range("a65536").End(xlUp).Row Do While rng.Row <= my_row
145 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 00:52:51 ] >>141 Option Explicit Option Base 1 Sub testTwo() '変数定義 Dim row As Long row = 1 '正午のデータだけ取得 Do While row < 65500 If row Mod 24 <> 1 Then ActiveSheet.Range(Cells(row, 1), Cells(row, 2)).ClearContents End If row = row + 1 Loop End Sub 正午以外を消して空白を残す。 24行ごとに値があること前提だけども…。 手抜きでスマソ、そろそろ寝ようかと…。
146 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 00:59:56 ] >141 追記。 一瞬止まるけども、処理が遅いだけなので。 (>>143 )方式で、 Do While row < 65500 を Dim myRow as Long myRow = Range("a65536").End(xlUp).Row Do While row < myRow にすると早くなりまする。 >>143 >>145 まったくその通りですな。 まだまだ良いやり方のテンプレみたいなのがぱっと浮かんでこないのよなぁ…。 >142 自分のテストでは無限ループしたいほうだいだけどね。 すみません放置します。 おやすみなさい。
147 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 01:03:55 ] どうもでした。ペコリ。
148 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 01:08:35 ] 成功しました。重ねてペコリ。 これで寝れそうです。
149 名前:125-126 mailto:sage [2007/02/02(金) 07:20:11 ] >>129-130 レスどうもです。 出ているエラーの件は、たまにしかエラーが出ないので エラーの内容を良く覚えてないのですが 「サポートされてない」みたいなエラーだったと思います。 do until構文を使う前にもsleepしてみて エラーが出るかどうか、しばらく様子を見てみます。
150 名前:デフォルトの名無しさん [2007/02/03(土) 01:28:07 ] ちょっと暇だったのでVisualBasicのヘルプ全部印刷してみた(両面) ヘルプ最高だな 高い金出してリファレンス買うぐらいならヘルプ印刷しといたほうが幸せだと気付いた つうか手元のリファレンス見たらヘルプ丸写しがあって萎えた
151 名前:デフォルトの名無しさん mailto:sage [2007/02/03(土) 22:06:07 ] そうか〜? 現実問題、リファレンスで一番重要なのは索引なのだけども オブジェクト名やメソッド名とかは印刷したものをアルファベット順に並べればいいとしても・・・ その他は・・・
152 名前:デフォルトの名無しさん [2007/02/03(土) 23:11:21 ] すみません。Vista/Excel2007で Application.Speech.Speak "日本語" をやると、英語なら何の設定もせずに読み上げるんですが、 日本語は読み上げません。 2003では設定すれば「ツール」→「音声」→「[読み上げ]ツールバー」ででたツールバーも 表示させる方法もわからないのですが、 どなたか、お教えいだけないでしょうか。
153 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 00:19:46 ] 新しいものにすぐ飛びつく早漏の癖に 情報的な基盤の無いものを自力で使いこなしていく スキルも無い奴ってのは一番厄介だな 初心者ならシェアが広がるまで我慢汁垂らしながら待ってろよ
154 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 00:21:56 ] >>150 両面印刷コストが20円として、100ページで2000円になる。 1000ページなら2万だし買った方が安くないか?
155 名前:デフォルトの名無しさん [2007/02/04(日) 01:22:42 ] コンピュータを用いた授業をしようと思うんですが、 VBAを用いて中学校数学の何か面白い教材を作ることできないかな??
156 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 01:31:07 ] >>155 あるセルに好きな数字を入れると別なセルに数字が自動的に表示されて その計算方法を推理させるとか。 もちろん数字を変えていくことで推理可能な計算式を考えんといかんよ。 数字じゃなくて論理式でも面白い、ある言葉を入れると別な言葉に置き換えられるとか。 あなたのVBA習熟度がどのくらいか知らないけど。
157 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 01:31:45 ] >>155 「面白い教材」を考えるのは教員の仕事。 お前が思いつけないなら、お前はその程度の教師ってことだ。 考えついた「面白い教材」の実現方法なら手助けしないこともないが 何が悲しくて教員でもないのにガキの嗜好に頭捻らにゃならんのだ?
158 名前:156 mailto:sage [2007/02/04(日) 01:34:02 ] >>157 正直スマンかった・・・
159 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 01:46:55 ] いや、そういう返答は無視でw
160 名前:156 mailto:sage [2007/02/04(日) 01:55:35 ] いや、>>157 は言い方はあれだけど正論 写真屋スレで「キャラ絵描くんだけどどんなキャラがいい?」って聞く奴はおかしいのと同じ
161 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 02:13:03 ] 言ってしまえば > 「面白い教材」の実現方法 だって教師の仕事なのに、それなら手助けしてやるって 言ってる時点で十二分に親切だな。
162 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 02:16:26 ] Excel2007ってVBAの基本的言語仕様は変わってないんでしょうか? 例えばVB6.0のIntegerが16Bitなのが VS2005のVBだとIntegerが32Bitになってるみたいな
163 名前:155 [2007/02/04(日) 02:45:37 ] 私は数学教師ですが、VBAは全くといっていいほどの初心者です。 データから平均を出したり、総合得点を出して表示させるぐらいしか できません。 実現方法よりもどういったことができるかがよくわかっていないのです。 VBAにかなり詳しい方々が集まっているようなので、ご意見を参考に させていただきたかったのですが、予習をしてから出直してきます。 すいませんでした。
164 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 03:08:23 ] >>163 藻前は本当に教師なのか? 数学の分からない厨房は数学をイメージできない 数値なんて表示させても糞の意味もない パソコンで学習させるなら、イメージを表示させてやる方がいい つまり、関数グラフとか図形を使いこなして表示させろってこった
165 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 03:12:32 ] >>164
166 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 04:52:17 ] >>163 エクセルVBAで色々できるよ。外部アプリケーション、例えばインターネットエクスプローラーの制御も出来るよ。 工夫すれば、それなりにエクセルVBAでゲームを作ることもできて エクセルVBAで作られたゲームのサンプルプログラム集とかも発売されてるよ。
167 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 04:59:10 ] つうかさ、パソコン関係って何が出来るかって聞いていたら全然先に進めんぞ 自分は何がしたいって目的が最初であって、それを実現するにはVBAを選択するとか 他のモノを選択するとかすべき
168 名前:デフォルトの名無しさん [2007/02/04(日) 11:04:19 ] パソコンクラブでも作ってマニアな中学生に教えてもらえ 学習曲線は残念だけど物好きな中学生には勝てん 先生側は「教育の技術」で中学生と勝負しろよ ExcelVBAは開発環境と実行環境の距離が近くていい材料だと思うけどね
169 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 11:47:54 ] >>163 子供が見て分かりやすいのは物理シミュレーション やはり目で見て動くと分かりやすい。 普通に教科書レベルの加速度とか落下だけでも結構面白い物が作れる ExcelでもShapeやUserFromの座標を指定できるわけで 日本のApple本社に学校の旅行で行った時に、 なんてソフトか忘れたけどBasic風の記述言語で 「初期値を設定してボール(カエルだったかも)をジャンプさせて、落ちてきたて跳ねる」 ってプログラムが課題だった ついでに速度や高さも表示する 設定値を間違えると果てまで飛んで行ったりして面白かったが。 数学なら幾何系とか確率系とかも分かりやすいかも
170 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 11:50:05 ] 計算問題を自動で作って答えあわせをするコードとか 100マス計算とかできるんじゃない? でもそういうなのはネットを探せばいくらでも出てくるような気がする。
171 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 12:30:10 ] >>170 数学を図式化して理解しやすくするのは良いが それは駄目だろ、餓鬼に頃は紙に文字を書いて計算しないと馬鹿になるぞ
172 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 12:31:00 ] >>170
173 名前:デフォルトの名無しさん [2007/02/04(日) 14:19:00 ] あるExcelファイルを日付が変わったら自動起動させるようにするには、 どんな感じで実現したらよいのでしょうか・・? 日の定型処理をしているのですが、 忘れてしまう事が多々あるので自動化したいです。
174 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 14:53:15 ] >>173 そんな曖昧な条件でどうしろと? 「あるExcelファイルを日付が変わったら自動起動」という条件だけなら OnTimeで0:00にブックを開くプロシージャを呼ぶだけだが、実際にはOnTimeが使える 状況では無いだろうし、ブックを開くのも「日付が変わったら=0:00」では困るのでは? 条件はエスパー以外の第三者にも伝わるように、日本語できちんと書こう。
175 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 15:00:57 ] 多分タスクでOK。つまり、VBA云々ではなくWindowsの使い方の問題。
176 名前:デフォルトの名無しさん [2007/02/04(日) 16:00:52 ] excel4.0専用のスレが見当たらないのでここで失礼します。 excel4.0のマクロって最近のexcelでも当時と同じように記述できるの? なくなったマクロ関数や文法の変更なんかはないのかな? たとえば『=select(シート名!R[1]C[1])』と記述して実行すると、 目的のシートのアクティブセルではなくマクロシートのselect関数が 記述してあるセルから1行下で1列右のセルを選択してしまう。 これはexcel側の仕様変更によるものじゃないよね? もし記述の間違いによるものだったら正しい書き方を教えて。
177 名前:173 mailto:sage [2007/02/04(日) 19:26:01 ] >>174 すいません。今週末から勉強を始めたので理解が足りないかもしれません。 Webクエリを用いてあるHPの表データを取得し統計処理をしています。 統計処理はそのExcelファイルを起動すれば実行できるよう実装済。 そのHPの表データは00:10頃に日々更新されているので毎日実行したいです。 そこでこの時間がきたら自動的にExcelファイルを起動する方法は、 どうやるのかなと質問してみました。 よくウイルス等で特定の時間が来たら挙動するようなものもあるし、 出来ない事はないなだろうと。 実行条件は時間以外にも色々ありますがFlagや分岐をつけたりすれば、 何とかできるだろうという事で今回は質問しませんでした。 Googleで「VBA 自動起動」等と検索しても条件が悪いらしく、 上手く引っかからないのでキーワードだけでももらえればと思いました。 これ以上は上手く説明できません。ごめんなさい。 >>175 あっありがとうございます。 VBAではなくそんな方法だったんですね。 書き込み後の検索中にAccessで似たような質問にヒットした時、 APIでスケジュラーに・・なんて記述があったので、 関係あるのかと思っちゃいました。
178 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 21:35:03 ] >>177 スタートボタンから、ヘルプとサポートをクリック、テキストボックスに at っていれてみ。 出てくるから スレ違いな話になってしまうんでこれでやめるけど。
179 名前:デフォルトの名無しさん [2007/02/04(日) 22:14:27 ] 誰か教えてください。 仕事で ある一定の条件を満たすレコードを足していくプログラムをかいたのですが、数字がおかしくなります。 例えば、足す数字が15.1 80.6 30.4となると出た数字が126.100015239みたいな数字になります。 これはなんでなんでしょうか?
180 名前:デフォルトの名無しさん [2007/02/04(日) 22:43:27 ] 小数点の演算というのは、CPUの仕組み上誤差が出るものなのだ。 仕組みや理由についてはは、「浮動小数点 誤差」とかでググるとそれっぽい解説のされてるとこがでるのでそこで確認してください。 Excelのシート上で、その見た目をどうにかしたければ、セル書式の設定で小数桁数1桁だかなんだかにすればよいです。