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


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

Excel VBA 質問スレ Part33



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

231 名前:デフォルトの名無しさん mailto:sage [2014/01/26(日) 00:41:39.97 ]
目的が平均と合計を出したいだけ
であればワークシート関数=average(,) =sum()

データシートの右端に加えればいいじゃない
表示用の見た目に書式を変えればいいじゃない

232 名前:222 mailto:sage [2014/01/26(日) 01:22:05.92 ]
>>229-230
ありがとうございます!無事動作いたしました!

>>231
上記のは一例で、目的が他に色々あるし……w

233 名前:デフォルトの名無しさん mailto:sage [2014/01/26(日) 05:40:30.51 ]
>>224
君にはまだ早いみたいだから無理するな

234 名前:デフォルトの名無しさん mailto:sage [2014/01/27(月) 20:41:31.77 ]
今エクセルで作業をしてて、行き詰ってしまったんで助力お願いします

フォルダ内にある.CSVファイルの行数を一つずつ取得して、それを別のブック(開いていない)のC10とC12のセルに結果を貼り付けて
そのブックを新しい名前で特定のフォルダ内に保存したいです(保存ファイル名は行数を取得したファイルの名前&_assにしたい)
それをフォルダ内にある.csvファイル全てに連続して処理をさせたいのですが、さすがに3000ファイルもあるとこれをしないと詰みそうです

途中までの作業はぐぐって何とかやってきましたが、ちょっとどんづまってます
よろしくお願いします

235 名前:デフォルトの名無しさん mailto:sage [2014/01/27(月) 21:20:37.26 ]
>>234
Excelマクロ4.0を使えばブックは開かなくても済むかもね。
あと、CSVの行数取得はここに載ってた。
www.moug.net/tech/exvba/0060083.html

236 名前:デフォルトの名無しさん mailto:sage [2014/01/27(月) 21:20:39.30 ]
Office TANAKAさんのページだけで完成させられるじゃないか
ここで質問するような形式のレスではないし、論外だと思います

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なんて無いから






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

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

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