0691デフォルトの名無しさん (オッペケ Srd9-31he)2017/08/06(日) 12:22:25.32ID:hXGNAkd3r また教えたがりの無能が暴れとるのかw 0692デフォルトの名無しさん (アウアウカー Sac9-6G5k)2017/08/06(日) 16:09:44.69ID:wM27hiyIa 暴れているのはただの煽り 0693デフォルトの名無しさん (オイコラミネオ MM4b-4x8g)2017/08/07(月) 16:41:33.18ID:/LwpuoG3M>>678 dim a as date dim b as date dim test as date
Sub foo2() Dim a As Time Dim b As Time Dim test As Date
a = Time b = Time test_long = (a * 1) / (b * 1) 'ok test = a / (b * 1) 'ok test = 1 / b 'error test = (a * 1) / b 'error test = a / b 'error End Sub
Sub foo() Dim a As Variant Dim b As Variant Dim test As Date
a = Time b = Time test = a / b 'ok End Sub 0697デフォルトの名無しさん (ワッチョイ ad91-3aaz)2017/08/07(月) 20:36:42.78ID:5JtEoMJq0 Cdbl()で分母をDoubleにキャストすればいいだけじゃね? 0698デフォルトの名無しさん (ワッチョイ 3b6d-VAa7)2017/08/07(月) 20:39:22.17ID:PGc1T+jA0>>697 まぁ解決法としてはそれでも何でもいいし、そもそもdateで除算って事をやらないんだけど 根本的な原因が分からないと、変なとこで悪影響受けそう 0699デフォルトの名無しさん (ワッチョイ ad91-3aaz)2017/08/07(月) 20:54:07.86ID:5JtEoMJq0 Time って DateTime.Time プロパティのことだよな Property Time As Variant だからもともとVariant型
dim a As Time がエラーになるんだが 0700デフォルトの名無しさん (ワッチョイ ad91-3aaz)2017/08/07(月) 21:05:47.61ID:5JtEoMJq0 Date型はVBAのデータ型で"21:02:32"みたいな文字列なんじゃね? だから計算するとエラーになる 分子にDate型を持ってきたときはDoubleに自動的にキャストされてると予想 0701デフォルトの名無しさん (ワッチョイ 3b6d-9fgs)2017/08/07(月) 21:13:12.34ID:PGc1T+jA0>>699 ごめんなさい訂正前の送ってしまいました 定義部分は以下に変えてください
Sub foo2() Dim a As date Dim b As date 0702デフォルトの名無しさん (ワッチョイ cf11-4x8g)2017/08/07(月) 23:25:10.55ID:kmFs6vPH0>>695 2007じゃエラーでないよ 0703デフォルトの名無しさん (ワッチョイ 03aa-dE0h)2017/08/07(月) 23:33:20.74ID:elxVZ6u90 データベースのDATETIME型の値がそのままVBAのDate型変数にマップできれば楽なのに、 1900年以前だとうまくいかないのが残念だ。 0704デフォルトの名無しさん (ワッチョイ ad91-Mpnj)2017/08/07(月) 23:39:54.26ID:5JtEoMJq0>>702 2010とかだとエラーになる
ADOでレコードセットを操作していると、ときたま現れるエラー。 クエリ結果にレコードが1件もない場合とかに出たりする。 0745デフォルトの名無しさん (ワッチョイ 0e4b-K+Tw)2017/08/11(金) 11:24:22.86ID:dnJD889I0 初心者ですがご教授下さい クラス内にTRが9ありそのうちの1〜4を取得したいと思っています。 現在は1しか取得できません。どう書き換えればいいでしょうか? Sub shisaku() Dim objIE As InternetExplorer Set objIE = CreateObject("Internetexplorer.Application") ' objIE.Visible = True ' objIE.navigate "http://www.aaa/aaa" Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE DoEvents Loop Dim htmlDoc As HTMLDocument Set htmlDoc = objIE.document Dim colTR, colTH, colTD, colImg As IHTMLElementCollection Set colTR = htmlDoc.getElementsByClassName("first") Dim el As IHTMLElement For Each el In colTR Set colTH = el.getElementsByTagName("th") Set colTD = el.getElementsByTagName("td") Debug.Print colTR(0).innerText Next el End Sub 0746デフォルトの名無しさん (アウアウエー Sa52-nTDo)2017/08/11(金) 11:47:54.41ID:H2cGDcz1a>>745 なんでcolTRをclassnameで取得してんの? 0747デフォルトの名無しさん (アウアウエー Sa52-nTDo)2017/08/11(金) 11:50:59.38ID:H2cGDcz1a あと並べて書いた場合でも変数一つずつ型指定してかないとvariantになるよ、vbaの場合 0748デフォルトの名無しさん (ワッチョイ a379-AZXx)2017/08/11(金) 13:07:34.65ID:11Y29+uU0 吉岡美穂のカキタレ 0749デフォルトの名無しさん (ワッチョイ 0e4b-J8zh)2017/08/11(金) 13:38:42.84ID:dnJD889I0>>747 vbaでieを操作を読んでもググってもあり理解出来なくてとりあえず作りながら覚えようと コピペしたものを一部変えました tr、tdは特定出来ずclassが特定出来るのですがどのように書き換えればよろしいのでしょうか? 0750デフォルトの名無しさん (ワッチョイ 0391-8lAF)2017/08/11(金) 13:56:55.44ID:kj6/PAcR0>>749 処理対象によってどうすればいいか変わるから 対象が判らないとなんとも言えないのではないと思う
Sub foo() For i = 1 To 100 行 = Int(i / 2) If i Mod 2 = 1 Then Cells(行 + 1, 2) = Cells(i, 1) Else Cells(行, 3) = Cells(i, 1) End If Next End Sub 0755デフォルトの名無しさん (ワッチョイ 0e6d-1q0p)2017/08/11(金) 15:01:16.16ID:hvV/hgBn0>>754 ありがとうございます。 でもすみません、2連続で文字のパターンもあります 正確には下のような感じです
○ q r
○ d
○ c
↓ ○ qr(セル内改行) ○ b ○ c 0756デフォルトの名無しさん (ワッチョイ 0391-8lAF)2017/08/11(金) 15:12:27.50ID:kj6/PAcR0>>755 まず数字か文字列か判別すればいいんじゃね? if a like "[0-9]*" then って感じでできる様なきがする 0757デフォルトの名無しさん (ワッチョイ 0e6d-1q0p)2017/08/11(金) 15:23:36.72ID:hvV/hgBn0>>756 今考えてるのは以下の感じです VBAもプログラミングも初心者のため全然コードがわかってなくてすみません
loop (i) if instr(cell(i,1),"○")<>0 sw=1
if sw=1
sw =1の時それより下のセルの情報を切り取り
loop(n) n=i+1 if instr(cell(n,1),"○")<>0 sw=0
else n=n+1 loop end
else i=i+1 loop end 0758デフォルトの名無しさん (ワッチョイ b66d-YQfT)2017/08/11(金) 15:32:45.42ID:fD8DkUIg0>>755 こう Sub foo() 行 = 1 '一行目は数字 Cells(行, 2) = Cells(1, 1) tmp = Cells(1, 1) For i = 2 To 100 If IsNumeric(Cells(i, 1)) Then '数字 Cells(行, 2) = tmp Cells(行, 3) = 文字 行 = 行 + 1 tmp = Cells(i, 1) 文字 = "" Else '文字 文字 = 文字 & vbCrLf & Cells(i, 1) End If Next End Sub 0759デフォルトの名無しさん (ワッチョイ b66d-YQfT)2017/08/11(金) 15:33:16.05ID:fD8DkUIg0>>756 なんでlikeなんだよ isnumericでいいだろw 0760デフォルトの名無しさん (ワッチョイ 0391-8lAF)2017/08/11(金) 15:48:56.25ID:kj6/PAcR0>>759 数字を含む文字列をどっちに判別するかによるんじゃね 0761デフォルトの名無しさん (アウアウエー Sa52-nTDo)2017/08/11(金) 16:02:01.36ID:yOhrxWpUa>>749 追記でおせっかいついでに、ie操作覚えたいなら軽くhtml勉強したほうがいいよ エクセルのオブジェクト理解せずにvbaで扱うなんて無理なのと一緒 0762デフォルトの名無しさん (ワッチョイ 4eaa-Kd4M)2017/08/11(金) 16:32:57.50ID:FWZL6nYt0 Ruby で書いた https://paiza.io/projects/HhNVuMxF20bU1t4-GMp0VQ
ary = [] File.open("File1") do |file| # 1行ずつ処理する file.each_line do |line| # 0〜9 if /^\d+$/ =~ line.chomp! ary << line + ' ' else ary[-1] = ary[-1] + line end end end