1 名前:デフォルトの名無しさん mailto:sage [2013/10/17(木) 22:04:40.64 ] ExcelのVBAに関する質問スレです ___ ___ /____ヽ ____ /____\ | |´・ω・`| | /___ヽ .l |´・ω・`| ニX二 . ̄ ̄ ̄ 二X二 |´・ω・`| l 俺たちに任せろ !、 ̄ ̄ ̄ ヽ | | /  ̄ ̄ ̄/ ヽ_/ヽ、 ヽ__) \__/\_/. /_/ ノヽ_/  ̄  ̄ ̄ 前スレ Excel VBA 質問スレ Part32 toro.2ch.net/test/read.cgi/tech/1381151717/ このスレはコード書き込みOKです。 作成依頼もOKですが、作成依頼限定ではありません。 コードが嫌な人はこちらのスレへ toro.2ch.net/test/read.cgi/tech/1381151995/l50
237 名前:デフォルトの名無しさん mailto:sage [2014/01/27(月) 22:17:46.82 ] i = 1 kannsuu1 = Worksheets("Sheet1").Cells(i, 1) kannsuu2 = Worksheets("Sheet1").Cells(i + 1, 1) Do Until kannsuu1 <> kannsuu2 i = i + 1 kannsuu1 = Worksheets("Sheet1").Cells(i, 1) kannsuu2 = Worksheets("Sheet1").Cells(i + 1, 1) Loop 上記のようであれば完走するのですが i = i + 1 の下2行を削除すると動かなくなってしまいます マクロの動きとしては Do Until でkannsuu1,2を呼び出すだけではダメで、必要であるごとにkannsuu1 = などと一度呼びだしてiの値を反映させなければいけないのでしょうか? 多分ものすごく馬鹿なことを聞いてるのだと思いますが、さしつかえなければヒントだけでもご教示ください
238 名前:デフォルトの名無しさん mailto:sage [2014/01/27(月) 23:07:45.25 ] >>237 そのプログラムが正しいとすると、kannsuu1もkannsuu2も関数じゃなくて変数 名前をkannsuuにしても関数にはならない
239 名前:デフォルトの名無しさん mailto:sage [2014/01/28(火) 01:37:20.21 ] >>237 >>238 の言うとおり、kannsuu1やkannsuu2はセルの値を入れる「変数」。 変数っていうのはプログラマの意図に反して勝手に中身の値が変わられると困る (そもそもある値を一時的に保持しておく目的で変数というものが存在する)ので、 プログラム的に指示がない限り、勝手に中身が書き換わることは普通はない。 なのでそのコードは、A列のi行目と(i+1)行目のセルの値が一致する箇所を発見するまで A列を上から下へ走査するという目的のコードであるなら、 間違いではない(最善ではないかも知れない)。 むしろ6、7行目を消そうとする理由が知りたい。
240 名前:デフォルトの名無しさん mailto:sage [2014/01/28(火) 01:54:30.04 ] >>237 i = 1 k1 = 0 k2 = 0 while k1 = k2 ..k1 = cells(i+0,1) ..k2 = cells(i+1,1) ..i + 1 loop または i = 1 while cells(i+0,1) = cells(i+1,1) ..i + 1 loop debug.print cells(i+0,1), cells(i+1,1)
241 名前:デフォルトの名無しさん mailto:sage [2014/02/04(火) 21:02:33.55 ] win 7 excel 2013なんですけど、 配列の数を取得するにはどうすればいいんでしょうか UBoundって入力しても補完で出てこないし、 オブジェクトブラウザーで調べてみても存在していないんですが
242 名前:デフォルトの名無しさん [2014/02/04(火) 21:53:17.23 ] >>241 HELP参照するか、ググルと沢山有る
243 名前:デフォルトの名無しさん mailto:sage [2014/02/04(火) 22:49:10.29 ] 教えてくれんのですか ググり力を鍛えなければなぁ
244 名前:デフォルトの名無しさん mailto:sage [2014/02/05(水) 01:40:01.47 ] office2013のリファレンスみたけどUBoundはあった でも、やっぱ俺の環境にはUBoundねーぞ UCaseはあんのにどういうこっちゃ
245 名前:デフォルトの名無しさん mailto:sage [2014/02/05(水) 03:55:50.64 ] うちの2007でもUBound,LBoundは補完されないな オブジェクトブラウザにもみつからない でも普通に使えるしヘルプはF1で参照できる WordやACCESSでも同じだったから、VBEの問題かもね
246 名前:デフォルトの名無しさん mailto:sage [2014/02/05(水) 05:28:39.22 ] 2010でもUbound補完されない けど気にせず入力しちゃえば普通に使える
247 名前:デフォルトの名無しさん mailto:sage [2014/02/05(水) 20:25:50.87 ] 使えました! 補完出ないとかありえなくないですかw?
248 名前:デフォルトの名無しさん mailto:sage [2014/02/05(水) 20:37:29.17 ] ところで、VBA初めてなんですが、 Javaでいうリスナーを動的に設定するには何かいい方法ありますか? text_ChangeAfter みたいなところに記述するのは、 数が増えると大変なので エクセルテーブルにコンポーネントとそれに対する処理方法を記載しておいて、 例えば、郵便番号textには郵便番号処理(4桁目に-を挿入)をやらせるとかしたいです
249 名前:デフォルトの名無しさん [2014/02/05(水) 20:37:50.41 ] 他にも補完が効かないものもあるからなぁ datediffとか まだ他にもあるんかな
250 名前:デフォルトの名無しさん mailto:sage [2014/02/05(水) 20:57:01.65 ] >>246 UBoundは「関数」でなく「構文」だ。文字の色を見ろ。 >>248 Excelでコードを半自動生成すると捗る。 Private Sub TextBox5_Change(): Call 処理8(TextBox5): End Sub Private Sub TextBox6_Change(): Call 処理3(TextBox6): End Sub
251 名前:デフォルトの名無しさん mailto:sage [2014/02/05(水) 21:16:07.29 ] >>250 大変興味深いです でも、それはやっぱり TextBox5_Changeメソッドに記述するという方法になってしまいますか?
252 名前:デフォルトの名無しさん mailto:sage [2014/02/05(水) 22:30:17.57 ] テキストボックスに入力した文字列をシート内から検索できるようなVBAをWEBで見つけました。 (テキスト入力→ボタンを押す→検索される) Sub ボタン1_Click() On Error GoTo エラー処理 '検索文字が見つからなかったときはエラー処理へジャンプ Cells.Find(What:=TextBox1.Value, LookAt:=xlPart).Activate'シート全体を対象に検索 TextBox1.Value = "" 'テキストボックスの入力文字を消去 Exit Sub '検索文字が発見できた場合はここで終了 エラー処理: MsgBox "見つかりませんでした" TextBox1.Value = "" End Sub この場合、同じ文字列が複数有る場合、2つめ以降が検索できません。 2つめ以降を検索できるようにするにはどうすれば良いでしょうか?
253 名前:デフォルトの名無しさん mailto:sage [2014/02/05(水) 22:38:15.96 ] あまりオススメしないけど、 「WithEventsを使用してコントロールのイベントを受け取って、 別オブジェクトのActionPerformedメソッド?を呼び出す」 クラスを作りまくる方法もある
254 名前:デフォルトの名無しさん mailto:sage [2014/02/05(水) 23:04:34.06 ] >>253 ありがとうございます まさにそれらしい記事を発見いたしました ateitexe.com/excelvba-control-change-event/ 家にexcelがないのですが、会社で試してみたいと思います それと、textboxのプロパティで郵便番号ならIMEを半角数字限定 住所なら全角ひらがなとか設定できたと思いますが それをテンプレートとして保存するような機能はありますでしょうか? プロパティのこことここを直して〜だと設定ミスが出るので、 テンプレから反映できたらなぁと これもテーブルに定義してもいいのですが
255 名前:デフォルトの名無しさん mailto:sage [2014/02/06(木) 00:21:03.25 ] >>252 >Cells.Find(What:=TextBox1.Value, LookAt:=xlPart).Activate どの位置から検索するかを引数に与えることができたはずだから、 変数を用意して位置情報を扱うように改造すれば、連続して検索出来るよ その際、検索処理をWhile Loop内にするのが一般的だと思う
256 名前:デフォルトの名無しさん mailto:sage [2014/02/06(木) 00:23:20.25 ] >>254 VBAスレだから、その、作ればいいと思うよ
257 名前:デフォルトの名無しさん mailto:sage [2014/02/06(木) 01:01:49.69 ] >>250 すくなくとも、ヘルプにはUBound「関数」とかいてあるわけですが 入力補完はしないくせに、uboundと書くとちゃんとUBoundにしてくれるんだな
258 名前:デフォルトの名無しさん mailto:sage [2014/02/06(木) 01:30:45.07 ] >>250 msdnにもUBound Functionて書いてあるよ msdn.microsoft.com/en-us/library/gg278658 (v=office.14).aspx
259 名前:デフォルトの名無しさん mailto:sage [2014/02/06(木) 01:31:48.95 ] リンク失敗 msdn.microsoft.com/en-us/library/gg278658%28v=office.14%29.aspx
260 名前:デフォルトの名無しさん mailto:sage [2014/02/08(土) 01:24:05.94 ] Javaやってたから継承とかできないとかクソとか思ってたけど、 variantとかめっちゃ便利やった
261 名前:デフォルトの名無しさん mailto:sage [2014/02/08(土) 01:36:34.71 ] VBとかVBAはオブジェクト指向言語ではないが オブジェクト指向言語のいいとこ取りはしてるってこと
262 名前:デフォルトの名無しさん mailto:sage [2014/02/09(日) 02:17:26.39 ] 継承とかできないとかクソとか言ってる奴は、まだまだ「言語に使われてる」レベル 継承出にないよりは出来た方が良いって話なら当然のことだけど 出来ないなら出来ないなりに使いこなせる奴が、「言語を使ってる」奴だ
263 名前:デフォルトの名無しさん mailto:sage [2014/02/09(日) 05:10:14.13 ] とは言えやっぱり使えるにこしたことはないよ。 昔のアセンブラなんかは掛算や割算も自前でロジックを組まなければならない時も あったけど、今そんなの嫌でしょ? 例えば配列の中の値をソートしたいとして、それが出来るメソッドが最初から有ったとき、 わざわざ自前で作る必要はないよね? そのロジックの仕組みを知ってて使うのと、知らないで使うのも違うけど、 そのロジックの仕組みを知ってても、そう言った便利機能を使えるのと使えないのではやっぱり違うよ。
264 名前:デフォルトの名無しさん mailto:sage [2014/02/09(日) 10:56:14.31 ] >>262 > 継承とかできないとかクソとか言ってる奴 と > 出来ないなら出来ないなりに使いこなせる奴 は、別に排他じゃないだろ。 バカなの?
265 名前:デフォルトの名無しさん mailto:sage [2014/02/09(日) 10:58:13.72 ] ソートも凝った条件付けようとしたら、結局自作になるから 組込機能頼りってのも、良いことばかりではないけどね 例えば 数値の1〜3と、英大文字のA〜Cと、英小文字のa〜cをソートした場合、Excelの並べ替えだと 「1,2,3,a,A,b,B,c,C」だが、 「1,2,3,A,B,C,a,b,c」にしたい場合や 「A,B,C,a,b,c,1,2,3」にしたい場合や 「1,2,3,a,b,c,A,B,C」にしたい場合とかもある また数値だと 「7,8,9,40,50,60,100,200,300」だが、文字列数字だと 「100,200,300,40,50,60,7,8,9」になるので、文字列でも数値への変換無しに、 数値と同じ並べ替えをしたい場合や、逆に数値を文字列数字の順にしたい場合もある 便利なモノほど利用者をバカにすると言われてるわけで、 もちろん便利じゃないものを使いこなせる能力を持った上で、 便利なものを有効活用して工数を減らすのは良いが 便利なものに頼りきりになってしまうのも、問題と言えば問題だな
266 名前:デフォルトの名無しさん mailto:sage [2014/02/09(日) 13:59:41.61 ] >>265 大体は同意だけど、 >便利なモノほど利用者をバカにすると言われてるわけで、 これは少し違うと思う。 便利なものが有った場合、今度はそれをいかに有効活用するかということと、 自分で考えて作った方がいいかの選択肢が出てくる。 上のような例の場合、本来の項目を変えずに別項目を作って、 そこに前0で埋めたり、大文字変換した値を用意してソートすれば事足りる。 それもダメだというならそう言うLinqとラムダ式で組めばいい。 視点が変わるのと、出来ることが増えることによって夢がひろがりんぐになるわけだ。
267 名前:デフォルトの名無しさん mailto:sage [2014/02/09(日) 14:13:43.52 ] 解ってないのか
268 名前:デフォルトの名無しさん mailto:sage [2014/02/09(日) 19:53:17.21 ] 解らなくてもいい 理解しろ
269 名前:デフォルトの名無しさん mailto:sage [2014/02/10(月) 00:39:22.03 ] >>265 そう思うんなら中間言語使って頭鍛えなよ。 そんなのの成り立ち一々全部理解しなきゃいけないなら VBAでだってまともに組めないよ。
270 名前:デフォルトの名無しさん mailto:sage [2014/02/10(月) 10:47:10.65 ] >>265 便利なものが人をバカにするんじゃなくて 便利なものに頼りきる人はもともとバカだっただけ
271 名前:デフォルトの名無しさん mailto:sage [2014/02/10(月) 15:31:20.21 ] >>265 それはExcelのソートのインターフェースが糞なだけ。 まともな言語ならラムダ式とかで比較を書ける。 クイックソートとかをいちいち真面目に実装するのは面倒だろ。
272 名前:デフォルトの名無しさん mailto:sage [2014/02/10(月) 17:52:51.32 ] 20年前に仕様が固まったBasic言語に文句言う奴
273 名前:デフォルトの名無しさん mailto:sage [2014/02/10(月) 21:17:25.11 ] >>271 Javaってラムダ式あったっけ?
274 名前:デフォルトの名無しさん mailto:sage [2014/02/10(月) 22:12:34.15 ] >>273 Java8で導入とか何とか。
275 名前:デフォルトの名無しさん mailto:sage [2014/02/10(月) 22:59:24.35 ] >>272 Basicと言う観点から見れば仕様が固まるなんてことはないよ。 時代に合わせてる常に仕様は変わる。 VBAがたまたまVB6.0辺りの仕様で停滞してるだけ。 もっと前のN-Basic辺りは Console 0,25,0,1とかおまじないのようにみんな付けてたけど、 VBAから入った人にしてみれば何のこっちゃってことになる。
276 名前:デフォルトの名無しさん mailto:sage [2014/02/11(火) 08:44:06.43 ] 便利なことって言うより新しいことに頭がついていけないじじいなんだろ
277 名前:デフォルトの名無しさん mailto:sage [2014/02/11(火) 10:11:19.84 ] Excelでもバージョンアップのたびに関数がどんどん追加されてるけど 古いシステムでも修正なしで動くように新しい機能をわざと使わないことならある
278 名前:デフォルトの名無しさん mailto:sage [2014/02/11(火) 11:13:16.08 ] windows xpとoffice2003廃止に伴い、 もうバージョン違いに悩まないで良くなるのかなあ。
279 名前:デフォルトの名無しさん mailto:sage [2014/02/11(火) 12:02:07.37 ] 古いのがなくなるのとバージョンアップは無関係だろ これからもどんどん新機能が追加されてくに決まってる
280 名前:デフォルトの名無しさん mailto:sage [2014/02/11(火) 14:29:28.14 ] 未だにOffice2000使ってますが、特に問題ないです。
281 名前:デフォルトの名無しさん [2014/02/11(火) 23:00:10.06 ] 特定のセルに入力がないと空欄になるようにif関数が入力してあるんですが、 空欄のセルだけ非表示にできるようにはどうマクロを組めばよいのでしょうか。 数式が入っていなければ非表示にできるようには組めるのですが、 見た目上は空欄でもセルには数式が入力されているため上手くできません…。 どうかご教授ください。
282 名前:デフォルトの名無しさん mailto:sage [2014/02/11(火) 23:05:27.59 ] >>281 セルの非表示ってどうやってやってるの?
283 名前:デフォルトの名無しさん [2014/02/11(火) 23:41:26.34 ] >>282 セルではなく行の非表示でした。 例えばa1からa10に入力がない場合ですが、 If [Counta(a1:a10)] < 11 Then Range("a1:a10").SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True End If で処理をしています。 ですがこれだと関数で空欄になっていてもセルには数式が入っているので、 非表示にはならないので困っています。
284 名前:デフォルトの名無しさん mailto:sage [2014/02/12(水) 07:33:54.19 ] >>283 ちょっと思い出せないけどxlCellTypeBlanks以外に何かなかったっけ? ないなら判定を自分で作ればいいかと
285 名前:デフォルトの名無しさん mailto:sage [2014/02/12(水) 10:47:06.24 ] 普通にValueとかTextプロパティを見ればいいだけでは
286 名前:デフォルトの名無しさん mailto:sage [2014/02/12(水) 12:30:57.75 ] >>283 For Each c In Range("a1:a10") If c.Text = "" Then Rows(c.Row).Hidden = True Next
287 名前:デフォルトの名無しさん mailto:sage [2014/02/12(水) 14:37:20.00 ] CountBlankでいいんじゃないか
288 名前:デフォルトの名無しさん mailto:sage [2014/02/12(水) 14:40:01.25 ] >>286 それだと1個でも空白セルがあったら非表示になるんじゃ
289 名前:デフォルトの名無しさん mailto:sage [2014/02/12(水) 16:22:45.01 ] >>288 For Each でA1:A10内の各セルを一個ずつ選んで そのセルのテキストが""だったらセルの行全部を削除する これは>>283 の要求どおりの動作だと思う
290 名前:289 mailto:sage [2014/02/12(水) 16:25:01.52 ] ごめん、書き間違えた 削除じゃなく非表示だった
291 名前:デフォルトの名無しさん mailto:sage [2014/02/12(水) 17:49:50.09 ] >>289 ああ、行単位でコントロールするのか If [Counta(a1:a10)] < 11 Then しか見てなかったわ
292 名前:デフォルトの名無しさん mailto:sage [2014/02/12(水) 19:19:18.29 ] そもそも最初のIfって必要か? 1行も消さない場合のがよっぽど多くないと、このロジックだとむしろナノ秒単位で遅くなるだろ
293 名前:283 mailto:sage [2014/02/12(水) 19:43:37.89 ] >>286 このマクロで思った通りの処理をしてくれました、ありがとうございます。 ですが思ったよりも処理に時間がかかってしまうようです...。 レスを下さった方々ありがとうございます!
294 名前:デフォルトの名無しさん mailto:sage [2014/02/12(水) 19:47:46.74 ] >>293 まとめて処理すればいいよ もらったコードに手を加えちゃダメってわけじゃないんでしょ?
295 名前:デフォルトの名無しさん mailto:sage [2014/02/12(水) 19:56:10.39 ] >>293 えっ調べるのはA列だけでいいの?だとしたら>>283 のコードはなんだったのか… 遅いと感じるならScreenUpdatingを入れればたぶん一瞬で終わるよ
296 名前:283 mailto:sage [2014/02/12(水) 20:26:25.50 ] マクロを断片的に覚えているので質問や発言がチグハグになってしまい申し訳ありません…。 レスくださった方のものを参考にさせていただいて自分で再度考えてみます。 ご迷惑おかけしました、ROMに戻ります。
297 名前:デフォルトの名無しさん mailto:sage [2014/02/14(金) 03:55:36.59 ] エクセルは2000、VBAは6.0です。 ウェブの某サイトに自動ログインするマクロを作っています。 IDとパスワードはうまく入力させることができたのですが、 ログインができません。 ログインボタンが次のようなソースコードのサイトに ログインするにはどうしたら良いでしょうか? <input type="hidden" name="SsLoginPage" value="/members/" id="hidden1"> <input type="hidden" value=" ログイン " id="submit1" name="submit1"> <input type="image" src="../../ssl_img/login/btn_login.gif" alt="ログイン" tabindex="300" id=image1 name=image1>
298 名前:デフォルトの名無しさん mailto:sage [2014/02/14(金) 19:01:26.24 ] >>297 スレ違い
299 名前:デフォルトの名無しさん mailto:sage [2014/02/14(金) 21:24:22.54 ] >>297 できてるところまでソース貼って
300 名前:デフォルトの名無しさん mailto:sage [2014/02/14(金) 22:46:45.67 ] >>299 サイトは伏せさせてもらっていいでしょうか? ネットで調べて無理矢理作ったので洗練されてません。 Sub 自動ログイン() Dim obj As Object Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate "https://《ログインしたいサイト》" Do Until objIE.Busy = False Do Until objIE.ReadyState = 4 Do Until objIE.Busy = False DoEvents Loop Loop Loop CreateObject("WScript.Shell").AppActivate "《ログインしたいサイトのタイトル》" Set objU = objIE.document.getElementsByName("SsLogonUser") If objU.Length = 0 Then MsgBox "ログインページが変わった?" WScript.Quit End If objU(0).Value = "《ID番号はここ》" Set objU = Nothing objIE.document.getElementsByName("SsLogonPassword").Item(0).Value = "《パスワードはここ》" Set objU = Nothing 'このあと、ログインできるようにしたいのですが… End Sub
301 名前:デフォルトの名無しさん mailto:sage [2014/02/15(土) 11:58:56.47 ] 質問です ExcelシートにユーザフォームでDTPickerを貼り付けて、日付をこのカレンダーで 選択すると、フォームがある位置の陰になっているセルにこっそり日付格納して マクロでその日付を使うように作成しました。 ところがこのカレンダーが動く人と動かない人がいて困っています。 (クリックしてもユーザフォームが固定された状態でカレンダーが表示されない) 環境はExcel2010で作成および表示 拡張子は会社の方針で互換重視のxls(関連会社とのファイル共有などのため) どうもExcel2000でファイルを開くと動くというのも確認されていて、意味不明です。 インスコされている環境も社内標準環境なので、ランタイムが異なるなど無いはず なんですが… 解決策の心当たりがあればよろしくお願いします。
302 名前:デフォルトの名無しさん mailto:sage [2014/02/15(土) 13:34:19.94 ] >>301 ここにアクセスがインストールされてないとどうたらとか アクセスが無くてもVBランタイムが入ってれば動くけど それをエクセルで使うのはライセンス違反がどうたらとか色々書いてある www.h3.dion.ne.jp/~sakatsu/Excel_Tips06.htm
303 名前:デフォルトの名無しさん mailto:sage [2014/02/15(土) NY:AN:NY.AN ] >>302 kojikoji75.hatenablog.com/entry/2013/08/17/175328 の Date and Time Picker Control を使っているのでライセンス等は大丈夫なはずです よく見るとAxtiveXコントロールとあるので www.ilovex.co.jp/blog/system/cat820/excelactivex.html と同じ罠に引っかかってるかもです(症状が良く似ている印象) とりあえず月曜会社で試してみますが、これで解決しなかったら本格的に分からないw
304 名前:302 mailto:sage [2014/02/15(土) 14:44:20.37 ] >>303 その Date and Time Picker Control てのは2007から実装されたんでしょ? それだと>>301 で言ってた「2000で動く」ってのはおかしくない?
305 名前:301 mailto:sage [2014/02/15(土) 15:10:33.32 ] >>302 言われてみると確かにおかしいですね でも2kで「動いた」って目の前で見せられたので… 昨日発覚したばかりなので、月曜改めて周囲の状況も含め確認してきます。
306 名前:デフォルトの名無しさん mailto:sage [2014/02/15(土) 17:36:08.31 ] 2000と2007って同時にインストールできるんじゃまいか
307 名前:デフォルトの名無しさん [2014/02/17(月) 21:49:42.74 ] 質問です。長いので二つに分けて質問させてください Sub 総計計算_送料() Dim 行番号 As Currency Dim 工場直送送料 As Currency Dim 受注生産送料 As Currency Dim 送料合計 As Currency 行番号 = 14 送料合計 = 0 工場直送送料 = 500 受注生産送料 = 800 Do Until Cells(行番号, 4) = "" If Cells(行番号, 6) = "工場直送" Then 送料合計 = 送料合計 + 工場直送送料 ElseIf Cells(行番号, 6) = "受注生産" Then 送料合計 = 送料合計 + 受注生産送料
308 名前:デフォルトの名無しさん mailto:sage [2014/02/17(月) 21:54:21.14 ] 上記のような構文の場合、 例えば 送料合計 = 送料合計 + 工場直送送料は 0 = 0 + 500 と、工場直送送料は「500」として計算されると思うのですが Do Until Cells(行番号, 4) や If Cells(行番号, 6)といった式の場合 なぜいきなり(14 , 4)セルや(14 , 6)セルといったセルに飛ばずに、 ちゃんと一行目のセルから計算されるのかわかりません。 本当に初心者でアホな質問だと思うのですが、答えて欲しいです。
309 名前:デフォルトの名無しさん mailto:sage [2014/02/17(月) 22:18:32.41 ] >>307 のプログラムが途中で切れてるから推測だけど単純な入力ミスしてる
310 名前:デフォルトの名無しさん mailto:sage [2014/02/17(月) 22:26:13.83 ] >>308 ステップ実行で1行ごとに各変数の値を確認してみたら?
311 名前:デフォルトの名無しさん mailto:sage [2014/02/18(火) 03:36:11.85 ] むしろ1行目から計算されているというのが勘違いじゃないのか
312 名前:デフォルトの名無しさん mailto:sage [2014/02/18(火) 07:28:15.08 ] 行番号にCurrencyを使うな気持ち悪い
313 名前:デフォルトの名無しさん mailto:sage [2014/02/18(火) 11:22:50.43 ] タシカニ
314 名前:デフォルトの名無しさん mailto:sage [2014/02/18(火) 14:32:12.07 ] だな。 IntegerじゃないぞLong使えよ
315 名前:297 mailto:sage [2014/02/19(水) 01:25:10.63 ] >>300 誰か分からないでしょうか…?
316 名前:デフォルトの名無しさん mailto:sage [2014/02/19(水) 12:30:10.58 ] >>315 残念ながらわかりません ごめんなさい
317 名前:デフォルトの名無しさん mailto:sage [2014/02/19(水) 13:51:27.51 ] >>315 ログインボタンのクリックは objIE.document.all.btn01.Click みたいに書く ページ内にクリックできる場所が複数ある時はボタン番号を適切に変える 「戻る」「入力内容をクリア」「IDをクッキーに保存」とか色々と並んでる場合があるからね ていうか検索ぐらいしろよ 「VBA IE操作 クリック」みたいなキーワードでサンプルがいくらでも出てくるぞ
318 名前:デフォルトの名無しさん mailto:sage [2014/02/19(水) 21:09:16.21 ] =IFERROR(HYPERLINK(VLOOKUP(Cells(n1,5),$Q$2:$R$10,2,TRUE)),"") 上記を代入したいんですがうまくいきません。 n1は任意の変数です。Vlookupのところではねられます。 Worksheets("データシート").Cells(n1, 6).Formula = "=IfError(Hyperlink(VLookup(Cells(" & n1 & ", 5), $Q$:$R$10, 2, True)), "")" 考えてやってみましたがこれではダメっぽいです。 ご教授いただけると助かります。
319 名前:デフォルトの名無しさん mailto:sage [2014/02/19(水) 21:49:24.13 ] >>318 Worksheets("データシート").Cells(n1, 6).Formula = "=IfError(Hyperlink(VLookup(Cells(" & n1 & ", 5), $Q$:$R$10, 2, True)), """")" とりあえずこんな感じ?
320 名前:319 mailto:sage [2014/02/19(水) 21:52:23.42 ] >>318 ダブルクォーテーションをダブルクォーテーションで囲んだ中で使うときは "" と2個続けるっていうルールになってるよ
321 名前:デフォルトの名無しさん mailto:sage [2014/02/19(水) 21:58:31.80 ] >>318 Worksheets("データシート").Cells(n1, 6).Formula = "=IfError(Hyperlink(VLookup(Cells(" & n1 & ", 5), $Q$2:$R$10, 2, True)), """")"
322 名前:デフォルトの名無しさん mailto:sage [2014/02/20(木) 00:46:24.24 ] >>317 それで番号をひと通り押してみたんですけど どれもダメでした >>297 のソースコードでもボタン形式でいいのでしょうか? >>316 丁寧にありがとうございます
323 名前:デフォルトの名無しさん mailto:sage [2014/02/20(木) 01:24:13.28 ] >>322 よくわからんけどinputタグにname=image1って書いてあるからクリックするのもimage1と違う?
324 名前:デフォルトの名無しさん mailto:sage [2014/02/20(木) 01:55:37.89 ] >>317 >>323 すげえええええええ objIE.document.all.image1.Click であっさり通りました ありがとうございます
325 名前:デフォルトの名無しさん mailto:sage [2014/02/20(木) 07:29:20.69 ] >>324 解決してよかったね でもスレチなんだから今後は余所に行ってやってね
326 名前:デフォルトの名無しさん mailto:sage [2014/02/20(木) 09:03:39.96 ] >>325 このスレでは問題ない そういうことが気になるなら君が他所へ行きたまえ
327 名前:デフォルトの名無しさん [2014/02/20(木) 10:28:54.40 ] >>326 ですよね
328 名前:デフォルトの名無しさん mailto:sage [2014/02/20(木) 19:00:31.77 ] EXCELファイルを読み込んで、セルのデータを加工するプログラムを作って いるのですが、文字列、数値、計算式などが入っている普通のファイルなら 期待通り動くのですが、EXCELは多機能ですので、普段全く使ったことが無い ような機能とか設定がシートやセルなどに追加されていると、自作プログラム が予期しない動きをするのではないかと思っています。 そのテストの為には、自分でEXCELファイルにいろんな加工を行えば良いわけですが、 自分でも知らないような機能は使うことができません。例えばデータベースとか テーブルとか、グラフ、フィルターなどなど、まだまだ沢山あります。 そこで質問なのですが、そういうEXCELの機能がてんこ盛りみたいにいろいろ 組み込まれているような何か良いテスト用のファイルって、どこかにありませんか?
329 名前:デフォルトの名無しさん mailto:sage [2014/02/20(木) 19:21:36.25 ] >>319 ,320,321 ""が余計にいるとは知りませんでした。 おかげさまで解決・・・となればよかったんですが なぜかVookupのあとがCellsだとうまく読み出ししてくれません。 ちゃんと =IFERROR(HYPERLINK(VLOOKUP(Cells(20, 5), $Q$2:$R$10, 2, TRUE)), "")とセルには入っています。 手動でCells(20,5)をE20にすると思った通りの動きになるんですが、なんででしょう?
330 名前:デフォルトの名無しさん [2014/02/20(木) 21:17:27.35 ] >>329 ワークシートでは Cellsが使えないからエラーになるんじゃないか?
331 名前:デフォルトの名無しさん mailto:sage [2014/02/20(木) 21:20:43.09 ] >>329 そもそもワークシート関数にCellsなんて無いから
332 名前:デフォルトの名無しさん mailto:sage [2014/02/21(金) 04:14:19.51 ] >>329 ワークシート上の数式にCellsは使えないけど、 VBAでは使えるからコード中でCells(20,5)を指定させる事なら出来た。 ただし、絶対参照になっちゃったけど。 Worksheets("データシート").Cells(n1, 6).Formula = "=IfError(Hyperlink(VLookup(" & Cells(20, 5).Address & ", $Q$2:$R$10, 2, True)), """")" 相対参照で書きたければFormulaではなくFormulaR1C1を使えば良いと思う。
333 名前:デフォルトの名無しさん mailto:sage [2014/02/21(金) 07:35:53.62 ] >>328 あなたにプログラムを依頼した人にもらえばよいと思います
334 名前:デフォルトの名無しさん mailto:sage [2014/02/22(土) 01:34:21.73 ] 数式の中で参照のあるツールいじるのこえー シートAのA1に名前A1とつけたとき $A$1 = 名前A1なのかな? =A1の相対参照で行列の挿入して参照がずれる アンチパターンの整理ができてないわ
335 名前:デフォルトの名無しさん mailto:sage [2014/02/23(日) 15:56:19.01 ] ループ処理について質問ですが Do Until 親 = 20 '20回ループ Do Until 子 = 10 '10回ループ '子くり返し処理内容 子 = 子 + 1 Loop '親くり返し処理内容 親 = 親 + 1 Loop このようにネストさせる事は可能なのでしょうか? とりあえず作ってみたら動きませんでしたが出来ると説明されている解説サイトもあるようで 一体どうやって書けば良いのでしょうか?
336 名前:デフォルトの名無しさん mailto:sage [2014/02/23(日) 16:27:41.93 ] >>335 親の二回目のループで 子 の内容どうなってる?
337 名前:デフォルトの名無しさん mailto:sage [2014/02/23(日) 16:31:18.92 ] 親も子もゼロに初期化しないといけないんじゃね?