10/03/07 20:22:08
>>485
IEオブジェクト.Document.フォーム名.テキストボックス名.value = 設定したい内容
フォーム名やコントロール名が無い場合
DocumentオブジェクトのFormsコレクションやItemコレクションを使う
IEオブジェクト.Document.Forms(n).Item(n).Value = 設定したい内容
487:デフォルトの名無しさん
10/03/07 21:56:28
A~E列を下記。A,Dを検索キーとしてBをEに移します。
test()では1が拾えず10を拾ってしまいます。(XP, Excel2000)
どう修正すればよいでしょう。
A B C D E
-- -- -- -- --
1 あ __ 1
2 い __ 2
3 う __ 3
9 け __ 9
10 こ __ 10
11 さ __ 11
14 せ __ 14
15 そ __ 1
Sub test()
Set myRngA = Range("A1:A15")
Set myRngD = Range("D1").CurrentRegion
For i = 1 To myRngD.Rows.Count
myKey = myRngD.Cells(i)
Set myCel = myRngA.Find(what:=myKey)
If Not myCel Is Nothing Then
myRngD.Cells(i, 1).Offset(0, 1) = myCel.Offset(0, 1)
End If
Next i
End Sub
488:デフォルトの名無しさん
10/03/07 22:49:54
>>487
Set myCel = myRngA.Find(what:=mykey, LookAt:=xlWhole)
489:デフォルトの名無しさん
10/03/07 22:54:31
大量の日付+株価の四本値データ(1まとまりで5列使用)があるのですが、開始日も終了日も全てバラバラ(最長の奴で8192日データ。この8192日の中に全ての期間入ってる)
綺麗に日付の行をそろえて昇順でソートしたいのですが、VBAで上手いことやるアイデアを下さい。
490:デフォルトの名無しさん
10/03/07 23:29:40
>>489
ソートするって、四本値データが日付順にならんでないというのが不思議だが
同じ日付を同じ行に持ってきたいということかな?
もしそうなら
ビンソートでデータをビンに詰め終わったところで
空きビンに対応する日付データーを入れてやればいいんでないかな
491:487
10/03/07 23:38:31
>488
ありがとう。たすかりました。
LookAt:=xlWholeがないと、一行目が無視されるわけですね?
492:デフォルトの名無しさん
10/03/08 01:24:39
>>491
全然違う。
LookAt=xlWholeは完全一致。
これを書かないと初期状態ではLookAt:=xlPartの部分一致になる。
開始セルのAfter:=***を書かないと範囲の先頭の次から検索するので
部分一致で10がヒットすることになる。
493:489
10/03/08 01:37:33
ビンソートという用語初めて知った。情報有難う。
ソート自体は簡単なんだけど、データのスタート位置設定するの難しいわ。
日付が素直に+1日づつなら多少は簡単なんだけど、休場日とかのせいで日付が飛び飛びなのがうっとうしい・・・
後学の為にVBAで処理したいけど、もう手作業でやるか?
494:デフォルトの名無しさん
10/03/08 01:57:54
SQL使えよ
495:デフォルトの名無しさん
10/03/08 12:36:05
SQLもビンソートも不明だったので。
①→一番長い日数入ってる列探して基準にする
②→各銘柄からデータ取得開始日とって、基準を参考に貼り付け開始行を取得
③→貼り付け開始行を利用して切り取り貼り付け
④→②から繰り替えす
みたいな普通の力技でなんとかしました。アドバイス貰ったのに全く生かせないでごめんなさい。
496:デフォルトの名無しさん
10/03/08 13:37:07
オートシェイプの検索アドインを業務の補助として作成中です。
一般的な実装はできましたが、よくばって検索値の前回値を使用できるようにしたい。
このような場合、前回値をどこに保存するのが一般的なのでしょうか?
excelマクロ・xlaならではの保存方法等ないでしょうか?
ないのであれば、別途保存用のシートに保存するか、またテキストファイル等に残します。
(あんまりエレガントじゃないきがして嫌です。)
ご存じの方おりましたらご享受ください。
497:デフォルトの名無しさん
10/03/08 13:58:58
>>495
ビンソートよりもバケット(バケツ)ソートという名前のほうが一般的かもしれない
内容は
日付のラベルが付いたビンに対応するデーターを放り込んで
詰め終わったら、端から順に取り出す
今回はデータがもともと順並びしてるので、
結果的にあなたがエクセル上でやったことと同じ作業ですね
498:デフォルトの名無しさん
10/03/08 14:06:04
>>496
Excelはシートに保存するのがエレガントだと思います。
499:デフォルトの名無しさん
10/03/08 15:39:54
なんらかの関数で引数となるシート名が存在するかチェックしてるんだが
シート数分Forでまわして同名シート見つけた時点でexitしてるんだけど
シート枚数が多くて使用者のPCスペックが低いためか時間が結構かかってきているんだが
なんかアドバイスない?
さしあたって事前にシート名チェックするのやめて
ダメならOn Error GoToで飛ばすようにしといたんだけど
もっといい方法あったら教えてください
500:デフォルトの名無しさん
10/03/08 15:57:25
シート名チェックってそんなに時間かかる処理だっけ?
何枚くらチェックしてるの?
501:デフォルトの名無しさん
10/03/08 16:13:38
シートの存在チェックは、何かやってみてon error gotoが一番速い
502:499
10/03/08 16:22:21
>>500
50枚くらいなんだけどモバイル用ノートで
CPUがセレロンなんだ・・・
>>501
やはりそうですよね
まず実行してみてだめだったらon error gotoで
具体的エラー内容を探すように変えていきます。
ありがとうございました。
503:デフォルトの名無しさん
10/03/08 18:02:04
>>502
ん、通じたのかな?例えばIsWorkSheetExist()みたいな関数を作って、その中で
on error goto NotExist
a = worksheet("Sheet1").range("a1").value // (*)
return true
NotExist:
return false
をやれってことで、「何かやって」は(*)の行の内容のこと。
いろんな関数にon error gotoをばらまけってことじゃないよ。
504:デフォルトの名無しさん
10/03/08 18:36:00
ADOつかってSQL使えば?
別にExcelのシートに対してもSQLで読み書きできるよ
505:デフォルトの名無しさん
10/03/08 20:14:29
こんばんは。どなたか詳しい方教えてくださいませんか。
エクセルのマクロでCSVファイルを開く→編集→保存(CSV形式)までを自動化しているのですが、
保存時の文字コードをS-JISではなくEUC-JPにして保存したいのです。
色々調べたんですが使えそうなのがなかったので・・。
506:デフォルトの名無しさん
10/03/08 21:02:08
保存した後で変換ツールに投げるとこまで自動化したらばどうよ
507:デフォルトの名無しさん
10/03/08 21:19:20
>>505
nkf.dll
508:デフォルトの名無しさん
10/03/08 21:48:31
ありがとうございます。
nkf.dll
を使ってみようと思います。
509:デフォルトの名無しさん
10/03/08 22:44:29
詳しい方に質問です。
ExcelVBAでシートに保護をかけて、変更して欲しくないセル(項目名など)
をロックしています。
ただ、シートに保護をかけてしまうと、テキストボックスや線オブジェクト、
図形オブジェクトがdisable?になってしまって使用できなくなります。
何か解決する方法はありますでしょうか?
510:デフォルトの名無しさん
10/03/09 00:33:02
保護の対象を細かく指定すりゃいいだろ
511:デフォルトの名無しさん
10/03/09 02:03:00
DrawingObjects:=False
512:デフォルトの名無しさん
10/03/09 14:40:04
XPで2003を使用しています。
VBA初心者で調べつつ作成しましたが、思った動作になりません。
どうかご教示下さい。
仕入先マスタのシートで仕入先CDを重複しないよう、入力後に
チェックをするようにしました。
(コードは次レスに貼ります)
【問題点】
If Not IsNumeric(Target.Value) Then Exit Sub
を入れると、ターゲットが複数行の場合は動作してくれません。
上記のコードを削除すると、複数行を挿入したり、連続しない複数行を
削除した時に重複したと認識されてしまいます。
(emptyかNullが重複?)
※つづきます
513:512
10/03/09 14:42:31
※つづきです
Dim maxRow As Long
Private Sub Worksheet_Change(ByVal Target As Range)
With Workbooks("仕入管理帳.xls").Worksheets("仕入先マスタ")
maxRow = .Cells(Rows.Count, 1).End(xlUp).Row
' If Not IsNumeric(Target.Value) Then Exit Sub
If Target.Column <> 1 Then Exit Sub
Set rngTarget = .Range("A2:A" & Target.Row - 1)
Set rngFind = rngTarget.Find(Target.Value, LookAt:=xlWhole)
If Not rngFind Is Nothing Then
If Target.Row <> rngFind.Row Then
Application.EnableEvents = False
MsgBox ("仕入先CDが重複しています"), vbExclamation
Target.ClearContents
Application.EnableEvents = True
End If
514:512
10/03/09 14:44:01
※最後です
Else
Set rngTarget = .Range("A" & Target.Row + 1 & ":A" & maxRow)
Set rngFind = rngTarget.Find(Target.Value, LookAt:=xlWhole)
If Not rngFind Is Nothing Then
If Target.Row <> rngFind.Row Then
Application.EnableEvents = False
MsgBox ("仕入先CDが重複しています"), vbExclamation
Target.ClearContents
Application.EnableEvents = True
End If
End If
End If
End With
End Sub
よろしくお願いします。
515:デフォルトの名無しさん
10/03/09 15:20:45
★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み
コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。
ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。
516:デフォルトの名無しさん
10/03/09 15:58:01
>>512
Targetに複数のセルが含まれるときは、こうすれば一つずつチェックできる
もちろんセルが1つでもエラーにはならない。Forの中を1回通るだけ
For Each c In Target
If Not IsNumeric(c.Value) Then Exit Sub
Next c
517:512
10/03/09 16:25:12
>>516
出来ました!ありがとうございます!
1週間もあれこれ悩んでいたので、とても助かりました!!
518:デフォルトの名無しさん
10/03/09 20:57:12
Excelに
Craete AAA_TBL
~
一行改行されて
Craete BBB_TBL
~
一つのシートにこういうデータがあった場合、
crateAAA_TBL.sqlファイルを作成して
その中には
Craete AAA_TBL
~
crateBBB_TBL.sqlファイルを作成して
その中には
Craete BBB_TBL
~
と分割したいのですが
分かりますでしょうか?
519:デフォルトの名無しさん
10/03/09 21:01:46
わけわからん、なにが起きてるんだ
r=3
c=10
debug.print r , c
if r=3 and c=2 then
........
elseif r=3 and c=4 then
........
elseif r=3 and c=3 then
........
elseif r=3 and c=2 then
.......
elseif r=3 and c=10 then
debug.print r , c
debug.print "ここまで来た"
end if
実行結果
3 10
520:デフォルトの名無しさん
10/03/09 22:00:52
Sub test()
r = 3
c = 10
If r = 3 And c = 10 Then
Debug.Print r, c
Debug.Print "こないわけないだろ"
End If
End Sub
521:デフォルトの名無しさん
10/03/09 22:15:58
でも来ねえだもん、くまった
522:デフォルトの名無しさん
10/03/09 22:18:37
省略せずに丸ごとソースを貼るかエクスポートしてどこかにアップしろ
523:デフォルトの名無しさん
10/03/09 22:20:24
if r=3 and c=2 then
まったく同じ条件のIfが2つある。どうせほかにもタイプミスとかしてるに決まってる
524:デフォルトの名無しさん
10/03/09 22:44:29
デバッガでブレークポイント仕掛けてステップ実行しろよ
525:デフォルトの名無しさん
10/03/09 22:45:45
スマソ、自己解決した
頭のほうの if に不等号が入ってた
思い込みがあると目が見てても脳が見てないようだ
526:デフォルトの名無しさん
10/03/10 00:17:38
無能には良くあること
527:デフォルトの名無しさん
10/03/10 00:37:20
本当に>>523が正解だったとは
528:デフォルトの名無しさん
10/03/10 06:46:48
不等号が入ってたのは正解なので
タイプミスではありません
見のがしです
すいません、正確に言っておきたいもので(まげられないおんな風)
529:デフォルトの名無しさん
10/03/10 07:34:21
ソフトのこと全く知りません。
そんな僕でもがんばればVBAは習得できるでしょうか?
530:デフォルトの名無しさん
10/03/10 10:13:26
はじめから知ってるやつはいねえからそこは心配ない
あとはセンスしだい
531:デフォルトの名無しさん
10/03/10 11:19:08
>>530 ありがとうございます。
超入門の本を読んでいるのですが、読み終わったらもう少し専門書を購入し読みながら、
他の人の書いたプログラムを解読しつつ勉強しようと思うのですが、
このやり方でいいのでしょうか?
532:デフォルトの名無しさん
10/03/10 11:49:53
人が言葉を覚えるとき最初はオウム返しから始まるでしょ
プログラム言語もそれと似たようなもんですよ
書籍のサンプル等をガシガシ打ち込んでけば、身についていきます
コピペではあんまり身につきません、コピペが早くなるだけです
手打ちでがんばってください
人の書いたプログラムの解析は自分で作るよりも大変ですから、
そこから入るのは無理があるように思います
533:デフォルトの名無しさん
10/03/10 18:49:45
>>531
そういうやり方&他人のコード解読法で一回挫折したので、その後検定取りの為の勉強したな。(VBAエキスパートスタンダード)
アレは基本的に誰でも受かるように出来てるし、体系だって勉強出来るシステムになってるので基本は身に付くよ。
534:デフォルトの名無しさん
10/03/12 05:27:46
Excel VBAで、コピーしたセル範囲をペーストする時に列幅を変えずに貼り付ける事は
可能でしょうか。
コピーする内容にセル結合や罫線が含まれています。
どうかご教授下さい。
535:デフォルトの名無しさん
10/03/12 07:59:09
列をコピー&ペースト
536:デフォルトの名無しさん
10/03/12 12:00:19
>>534
まず普通にコピペしたあと、同じ場所にもう一度形式を選択して貼り付け→列幅
537:デフォルトの名無しさん
10/03/12 20:03:47
B3セルに"私は花子ですわ"、B4セルに"私は太郎ですよ"
があるとき、C3、C4セルにA列の2つの文字列を比較して違う部分を赤色にしたい。文字列の長さは同じとする。
で、次のように作ったんだけど、最後しか赤くならない。なんで?
Sub 文字列比較()
' 文字列比較 Macro
' マクロ記録日 : 2010/3/12 ユーザー名 : xp
Dim str1 As String
Dim str2 As String
Dim buf1 As String
Dim buf2 As String
str1 = Range("B3")
str2 = Range("B4")
For i = 1 To Len(str1)
buf1 = Mid(str1, i, 1)
buf2 = Mid(str2, i, 1)
If StrComp(buf1, buf2, vbTextCompare) = 0 Then
Range("c3").Value = Range("c3").Value & buf1
Range("c4").Value = Range("c4").Value & buf2
Else
Range("c3").Value = Range("c3").Value & buf1
Range("c4").Value = Range("c4").Value & buf2
Range("c3").Characters(i, 1).Font.ColorIndex = 3
Range("c4").Characters(i, 1).Font.ColorIndex = 3
End If
Next
End Sub
538:デフォルトの名無しさん
10/03/12 20:32:35
初歩的な質問ですがお願いします。
For
If xxx then
①の処理
Else
②の処理
End If
③の処理
Next
xxxの場合、①の処理をした場合には、③の処理をせずに
次のfor文へ行きたいのですが、elseの中になにを書けばいいでしょうか?
539:デフォルトの名無しさん
10/03/12 20:42:58
>>537
マクロの記録でやってそうだからわかりそうなもんだけど、
Range("c3").Characters(3, 1).Font.ColorIndex = 3 '花
Range("c3").Characters(4 1).Font.ColorIndex = 3 '子
Range("c3").Characters(7, 1).Font.ColorIndex = 3 'わ
は続けてやらないとダメだと思う。
j = 0
For i = 1 To Len(str1)
If StrComp(Mid(str1, i, 1), Mid(str2, i, 1)) <> 0 Then
j = j + 1
ReDim Preserve s(1 To j)
s(j) = i
End If
Next
こんな感じで位置を先に取得してみては?
540:デフォルトの名無しさん
10/03/12 20:46:19
連レスすまん。
>>538
②の処理の次に③を書いちゃダメなの?
For
If xxx then
①の処理
Else
②の処理
③の処理
End If
Next
それか、エスパーぎみに答えるとSelect caseを使うとか??
541:デフォルトの名無しさん
10/03/12 20:54:58
>>537
これの意味を勘違いしているような
Range("c3").Value = Range("c3").Value & buf1
セルc3の文字列を取出してbuf1の内容と文字列結合 → セルc3に上書き
この処理をすると これ以前にあった色指定が無効となる
つー事で
>>537を修正すると
Sub 文字列比較()
Dim str1 As String
Dim str2 As String
Dim buf1 As String
Dim buf2 As String
str1 = Range("B3")
str2 = Range("B4")
Range("c3").Value = str1
Range("c4").Value = str2
For i = 1 To Len(str1)
buf1 = Mid(str1, i, 1)
buf2 = Mid(str2, i, 1)
If StrComp(buf1, buf2, vbTextCompare) <> 0 Then
Range("c3").Characters(i, 1).Font.ColorIndex = 3
Range("c4").Characters(i, 1).Font.ColorIndex = 3
End If
Next
End Sub
542:538
10/03/12 21:03:38
>>540
ありがとうございます。
顔洗って出直してきます。
543:デフォルトの名無しさん
10/03/12 21:25:28
For
If xxx then
①の処理
Else
②の処理
③の処理
End If
Next
544:デフォルトの名無しさん
10/03/13 05:44:13
>>538
for x=1 to 100
if xxx _
then
①の処理
else
②の処理
end if
③の処理
Next
次のfor分の処理
こう書くと ③の処理をコメントアウトすればいいんじゃねということがわかるけど
②の処理のあと”だけ”に③の処理をしたい、と言うこと?それとも
真ならば他の人のいうとおりだけど
③の処理は②の処理の前にしたいのか、後にしたいのかが不明確ですよ
③の処理が②の処理と独立ならば順不同だけど
545:デフォルトの名無しさん
10/03/13 06:06:19
VBAと関係ないね
546:デフォルトの名無しさん
10/03/13 11:50:59
Webクエリでデータを読み込んで加工するVBAを作成しています
データの込みこみを待ってから次の工程へ行くようにするにはどうすればよいですか?
547:デフォルトの名無しさん
10/03/13 15:10:25
>>546
Do While IEobject.Busy = True And IEobject.ReadyState <> 4
548:デフォルトの名無しさん
10/03/13 17:47:47
こみこみ ← なんかカワイイ
549:546
10/03/13 18:59:55
ありがとうございます
WebクエリとIEObjectの関係が分からないので、
もう少し調べます
550:デフォルトの名無しさん
10/03/13 20:40:49
Cells.Replace What:="1", Replacement:="1", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
0から9までの全角数字を半角数字に変換したいのですが
上記を10回書くよりも
これをfor文で回したいのですが
全角でというのか実現できません
教えてください
551:デフォルトの名無しさん
10/03/13 21:28:58
>>550
StrConv
552:デフォルトの名無しさん
10/03/13 22:07:45
すみません質問です
以下のような数字の置き換えをしたいのですがどのようにすればいいでしょうか?
<a name="1"> → <a href="hoge">
<a name="2"> → <a href="hoge">
<a name="3"> → <a href="hoge">
~
<a name="9999"> → <a href="hoge">
553:デフォルトの名無しさん
10/03/13 22:21:59
>>550
全角文字をループで扱うのはけっこう難しい。
文字コードを数値として扱う手もあるが、可読性が悪くなる。
プログラムの見栄えをすっきりさせたいなら、
配列に入れるか、置換のための関数を作るという手がある。
aryWhat = Array("0", "1", "2", ……
554:デフォルトの名無しさん
10/03/13 22:30:04
>>552
そういう場合は正規表現を使います。桁数の決まっていない数字は[0-9]+と書きます。
<a name=""[0-9]+"">
とすれば、これ1行で1から9999までのすべてが検索の対象になるので、これをhogeに置換します。
555:デフォルトの名無しさん
10/03/13 22:33:35
>>550
ヒント
Sub d()
For i = 0 To 9
Debug.Print i, StrConv(i, vbWide)
Next
End Sub
556:デフォルトの名無しさん
10/03/13 23:34:43
>>554
ありがとうございます
すごく助かりました
557:デフォルトの名無しさん
10/03/14 11:41:57
別のエクセルファイルの標準モジュールに書いてある定数を読み込むには、
どうしたらいいでしょうか?
558:557
10/03/14 12:23:52
自己解決しました
559:デフォルトの名無しさん
10/03/14 16:11:54
NO 品名 価格 数量 金額
1 りんご 100 3 300
・・・
という連続したデータを
NO 1 ・・・
品名 りんご
産地
数量 3 ・・・・
というふうに転記させる方法を教えてください。
転記先のフィールドは、元のフィールド名のものがない場合もあり、
逆に元のフィールドに無いものが転記先にあったりします。
また、転記元や転記先のフィールドの順番は、入れ替わる場合があります。
うまいやり方がありましたら教えてください。
560:デフォルトの名無しさん
10/03/14 17:34:39
>>559
どうかな。
1行目に作業用の空白行を追加する。
転記元の左端から1セルずつ値を読み、右に移動するループ(セルが空白になるまで)
転記先の上端から1セルずつ値を読み、下に移動するループ
if転記元の値と転記先の値が同じならば
作業用の行に転記先のセル位置を記入
(ここまでで転記先のセル位置を取得)
A1 A2 A4
NO 品名 価格 数量 金額
1 りんご 100 3 300
あとは転記元のデータを1行ずつ処理。
561:デフォルトの名無しさん
10/03/14 17:39:05
>>559
新しいほうのデータの1レコード分の配列を用意する
古いほうのデーターから該当する配列の位置に読み込む
新しいデータへ配列から書き出す
以後レコード分繰り返し
562:デフォルトの名無しさん
10/03/14 18:22:14
別のシートにセルを一個ずつコピーしていけばいいのでは
563:デフォルトの名無しさん
10/03/14 18:48:01
おれだったらVLOOKUPでぱぱっと片付ける
564:480
10/03/14 22:45:10
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
565:デフォルトの名無しさん
10/03/15 14:15:40
Excel2007
Workbooks.Add
で新規にワークブックを作成する際に
オプション→数式で自動になるように作成することってできませんか?
今の状態は手動になっています。
566:565
10/03/15 18:09:02
自己解決?
元のプログラムが入っているブックのオプションが手動になっていたので自動に変えたら
新しくできたブックも自動になってました。
なんか、自分自身をコピーして作ってるみたいな?(よく判りませんが w
567:デフォルトの名無しさん
10/03/16 11:39:35
WinXP Excel2003
Sub Input_Date(ByVal iDay As String)
ActiveCell.Value = CStr(iYear) _
& "/" & CStr(SpinButton1.Value) & "/" + iDay
ActiveCell.NumberFormatLocal = ComboBox1.Value
End Sub
いまのままだと何処のセルにも入力するようになっています。
指定したセルにのみ入力するよう変更したいのですが、どこを直せば良いでしょうか?
568:デフォルトの名無しさん
10/03/16 12:59:16
>>567
ActiveCell
569:デフォルトの名無しさん
10/03/16 16:40:50
VBAで、「どこぞのプロシージャ内で」、「別のプロシージャやイベントを設定・修正」するって出来る?
例えばBook/Formのロード時のイベントプロシージャで、
btn_test_1
btn_test_2
…
btn_test_10
…って感じのボタン10個について、forで回してそれぞれのClickイベントに同一の処理を上書きさせる、とか。
それともクラスモジュール作って~な やり方しか無いのだろうか?
わかり辛い書き方でごめん。
570:デフォルトの名無しさん
10/03/16 17:54:28
2003、XPです。
株のシストレの計算をやらせるのに、ブック2枚を頻繁に行ったり来たりさせるようなモジュールはやはり相当遅くなるのでしょうか?
A:計算する元の四本値データだけ入ったブック。(シートが35枚あって、それだけで既に80MBのサイズ)
B:Aから計算結果だけを出力させるブック。
一枚に詰め込むべきか、複数枚に分けて管理すべきか・・・
571:デフォルトの名無しさん
10/03/16 18:11:19
>>570
単にデータを読み書きするだけなら大して遅くはならない。
いちいちSelectとかActivateとかやっちゃうと遅くなるんで、そうしないように注意してプログラムを作ればいい。
あとは、オブジェクト型変数とかWith句をできるだけ活用すること。
計算中は余分なイベントを止めるのもそこそこ効果がある。
572:デフォルトの名無しさん
10/03/16 18:14:14
>>569
質問の1行目だけ見ると答えはNO。
だけどたぶん、別の方法でできることをわかってないだけの気がする。
573:デフォルトの名無しさん
10/03/16 18:38:49
VBAでFX自動売買ソフトを作る事って可能でしょうか?
やりたい事
・業者orヤフー等からのレート取得
・発注機能
こんな感じです
574:デフォルトの名無しさん
10/03/16 18:42:34
可能です
575:デフォルトの名無しさん
10/03/16 18:46:01
是非作ってみたい
もしくはどなたかに作成していただきたいです
MT4だと業者に対応していないので・・
576:デフォルトの名無しさん
10/03/16 19:00:54
プログラムもわからんのにそんな事言っててもどうしようもないと思うが
んで、誰がただでやるわけww?
577:デフォルトの名無しさん
10/03/16 20:13:48
>>570
株価データの保存はDBに任せて、Excelは計算に専念させた方がスッキリすると思うけどね
578:デフォルトの名無しさん
10/03/16 20:17:59
Cells(1, 2) = Cells(1, 1)
というマクロを作ったのですが、Cells(1,1)の文字数が多すぎると
#VALUE!
というエラーが出てしまいます。
Cells(1, 1)の値を他のセルにコピーするにはどうすればいいのでしょうか。
579:デフォルトの名無しさん
10/03/16 20:27:13
まずは仕様書を書いてね
そしたら見積もり出すから
580:デフォルトの名無しさん
10/03/16 20:28:36
>>578
そのエラーは文字列の長さとは直接は関係ありません。
まずB列の幅を広げて、セルB1の書式を確認してください。
581:デフォルトの名無しさん
10/03/16 20:58:02
>>578
当方の環境下では
Cells(1, 2) = Cells(1, 1)
だと 半角256文字以上で#VALUE! になるね
Cells(1, 2).Value = Cells(1, 1).Value
だと大丈夫みたい なぜかしらんけど
つか.Valueを付けるのが本来の使い方なんだけどね
582:デフォルトの名無しさん
10/03/16 21:29:59
>>570
ADOつかてSQL書けよ
583:デフォルトの名無しさん
10/03/16 22:30:23
>>581
XP、2003だけど下記コードでエラー出ない。
なんでだろ?
Sub test()
Cells(1, 1) = String(257, "あ")
Cells(1, 2) = Cells(1, 1)
End Sub
↑どっかおかしい?
584:デフォルトの名無しさん
10/03/17 01:39:38
>>583
これでやったら912文字のところでエラーになった
Sub test()
For r = 1 To 1000
Cells(r, 1) = String(r, "あ")
Cells(r, 2) = Cells(r, 1)
Next
End Sub
585:デフォルトの名無しさん
10/03/17 01:51:17
>>575
50万くらい出す気あるなら話聞いても良いよ。
586:デフォルトの名無しさん
10/03/17 02:10:47
>>584
Sub celltest()
Cells(1, 1) = String(910, "あ")
Cells(1, 2) = Cells(1, 1)
End Sub
910文字まではOKってことだな。
>>578と>>581はどういう現象なんだろ?バージョンの問題かな?
587:デフォルトの名無しさん
10/03/17 03:01:12
いや、911文字までOK。
ていうか、みんなOSとExcelのバージョンぐらい書こうよ。
うちはXPと2003。
ちなみにVBAを使わずにセルに直接入力した場合は1セル32767文字まで入る。
URLリンク(office.microsoft.com)
588:デフォルトの名無しさん
10/03/17 03:15:21
>>587
ん?
>>584だと911行目でエラーが発生してるから
911文字はエラー、910文字まではOKってことじゃないの?
OSとバージョンが同じだから、やっぱりバージョンの問題なんだろうな。
589:デフォルトの名無しさん
10/03/17 03:22:49
doudemoii
590:デフォルトの名無しさん
10/03/17 12:25:45
どうでもよくない。
>>578と>>581の状況が再現できないと回答もできないし、
自分が同じトラブルに遭う可能性だってあるわけだから解決できないと気持ちが悪い。
591:デフォルトの名無しさん
10/03/17 12:47:26
>>589
だんだん話しについていけなくなっちゃったんだろうなw
592:デフォルトの名無しさん
10/03/17 14:51:07
気持ち悪いから>>578早く戻って来い!
593:デフォルトの名無しさん
10/03/17 16:29:57
>>581で再現できてんじゃん
594:デフォルトの名無しさん
10/03/17 17:26:31
で、解決方法は?
595:デフォルトの名無しさん
10/03/17 17:31:37
再現できないとか言ってるから、再現できてると言ったまで。
>>581によれば、Value付ければいいんじゃないの?
596:デフォルトの名無しさん
10/03/17 17:47:44
>>594
Cells(1, 2) = Cells(1, 1).Valueにすればいい。
Cells(1, 2) = Cells(1, 1)と何が違うのかは知らん。
597:デフォルトの名無しさん
10/03/17 17:53:15
解決できないから気持ちが悪いんじゃなくて、解決できてるけど仕組みがわからなくて
気持ちが悪いんじゃないの?
598:デフォルトの名無しさん
10/03/17 18:11:26
初歩的な質問ですんません
セルに直接入力せずに三角形みたいなのをクリック(セルをクリックすると現れる三角形)すると
あらかじめ設定してた項目を取り出せるあの機能はなんて名前でしったけ?
またその設定はどこでやればいいですか?
お願いします。vista使いです
599:デフォルトの名無しさん
10/03/17 18:16:36
>>598
ひょっとして、これのことか?
Excel講座 > セルをコンボボックスにする
URLリンク(www.serpress.co.jp)
600:デフォルトの名無しさん
10/03/17 18:35:25
うちだと910文字超えないとエラーにならないのに、
どうして>>581は256文字でエラーになるの?
もうちょっと再現の条件とか手順をkwsk
601:デフォルトの名無しさん
10/03/17 18:45:27
>>599
そうそうそれそれ
どうもすんません
602:デフォルトの名無しさん
10/03/17 19:41:37
>>598
セルにコンボボックスを仕込むより入力フォームを作って
ボタンぼんでシートに値がコピーされるように作った方がいいと思うが。
603:デフォルトの名無しさん
10/03/17 20:40:45
テスト
604:デフォルトの名無しさん
10/03/17 22:04:36
Excel2007
ブックを新たに作成するときにシートの枚数を3枚とか指定することは出来ないのでしょうか?
605:デフォルトの名無しさん
10/03/17 22:19:57
テンプレートで
606:デフォルトの名無しさん
10/03/17 22:20:48
>>604
Application.SheetsInNewWorkbook = 3
こういうこと?
607:デフォルトの名無しさん
10/03/17 22:23:33
あ?テンプレの話?
2003だと
ツール→オプション→全般→新しいブックのシート数
で設定できる。2007はわからん。
608:デフォルトの名無しさん
10/03/17 22:28:37
>>606
それです。ありがとう
テンプレートは?状態ですけどw
609:デフォルトの名無しさん
10/03/17 22:30:49
>>608
とりあえずググれよ。(もう見てないだろうが・・・)
610:デフォルトの名無しさん
10/03/18 06:32:14
>>600
どうしてExcelのバージョンすら明記しないのか不思議。馬鹿?
611:デフォルトの名無しさん
10/03/18 13:18:25
>>610
話の流れからすると910文字までいけるのは、XPで2003だって二人が書いてるぞ。
バージョン明記してないのは質問者と>>581の解答者だ。
それはそうと、これだと10000行までいけるなw
Sub test()
For r = 1 To 10000
Cells(r, 1).Value = String(r, "あ")
Cells(r, 2).Value = Cells(r, 1).Value
Next
End Sub
612:611
10/03/18 13:44:40
おっと、>>611はXPで2003だ。
ちなみに、Win7の2007でも検証してみた。
・Valueあり→10000行までいけた
・Valueなし→8203行目でエラー
という結果。2007だとValueなしでもこんなにいけるんだなw
ってことは、質問者のバージョンは2002以前とエスパーしてみる。
それにしても、2007のVBEどっから起動するのかわからなくてビビったw
613:デフォルトの名無しさん
10/03/18 15:21:35
>>611-612
>>600の「うち」の環境を書けと言ってるんだ、馬鹿。
じゃなければ、第三者が全体を把握できないだろ。
614:デフォルトの名無しさん
10/03/18 15:41:08
>>611-612
Value付ければいいって結論が出てるのに、いつまで何やってんの?
615:デフォルトの名無しさん
10/03/18 16:06:15
>>613
>>600は、910文字超えないとエラーにならないって書いてあるから
流れから2003だってわかると思うが?
流れを読まなくてもわかるように、レス内に明記するのがネチケット(笑)ということなら、
まぁ、そういうことなんだろうw
>>614
Valueは単純に“省略可能なもの”と認識してたんだが、
今回のケースで言うと、場合によっては省略してはいけないってことか?
すまん、素人にもわかるように説明してくれ。
616:デフォルトの名無しさん
10/03/18 16:13:20
>>615
とことんアホだな。
仮にExcel 2003が911文字目からエラーになるということだとしても、
911文字からエラーになるからといってそれがExcel 2003とは限らないだろ。
高卒文系なのか?
何かを明らかにしたくてその話題に参加し、なおかつ相手に再現の手順を求めるのなら、
まず自分の情報を出せっつーこった。
> すまん、素人にもわかるように説明してくれ。
知るかアホ。
このスレは素人の好奇心を満足させるスレじゃねーよ。
617:デフォルトの名無しさん
10/03/18 16:19:38
>>611
ド素人はこれだから困る。
セルに設定出来る最大文字数はヘルプにちゃんと書かれてる。
ヘルプ見ろ。
618:デフォルトの名無しさん
10/03/18 16:24:40
エクセルVBAに詳しい人教えてください!
スレリンク(morningcoffee板)
619:デフォルトの名無しさん
10/03/18 16:32:09
いつまでやってんだよ……
620:デフォルトの名無しさん
10/03/18 16:32:10
>>616-617
論点がずれてますよ。
人のことを馬鹿とかアホとか高卒文系とかド素人とか言ってるけど、
話の内容を理解できていないのは、あなたの方ですね。
何かを明らかにしたくないなら、あなたはこの話題に参加しなくてもいいと思います。
621:デフォルトの名無しさん
10/03/18 16:37:10
ずらしてんのはお前の方だ馬鹿。
これになんかコメントしてみろ、アホ。
> 仮にExcel 2003が911文字目からエラーになるということだとしても、
> 911文字からエラーになるからといってそれがExcel 2003とは限らないだろ。
> 高卒文系なのか?
622:デフォルトの名無しさん
10/03/18 16:38:03
>>618
ソース見てボタンの名前調べればいいんじゃないの?
そんな単純なことじゃなくて?
623:デフォルトの名無しさん
10/03/18 16:38:50
・Valueを付ければ問題ない
・Excelの仕様上、何文字まで設定出来るかはヘルプに書かれている
これ以上、何を知りたいの?
624:デフォルトの名無しさん
10/03/18 16:41:05
話の流れからするとw、>>600=>>611じゃねーの?
馬鹿と言われて悔しかったのかな?
625:デフォルトの名無しさん
10/03/18 16:41:30
>>621
スレリンク(mental板)l50
とりあえず筋トレでもしてみたら?
626:デフォルトの名無しさん
10/03/18 16:45:40
おまいらいつまでやってんだwwwwwwwwwwww
627:デフォルトの名無しさん
10/03/18 16:50:36
>>625
反論不能か、高卒文系のド素人が。
もう黙っとけ。
628:デフォルトの名無しさん
10/03/18 16:57:30
VBAからGroovyのプログラムを呼びたいんですが、何か方法はありますか?
Groovyに限らず、VBAから他の言語のプログラムを呼んで、返り値を使用する
ことってできるんですかね?
629:デフォルトの名無しさん
10/03/18 16:58:28
一つのセルには200文字も必要ねーな。
50文字でも十分じゃね?
数式厨には足りないかも知らんけどw
超長ーい数式を得意としてるやつもいるからな。
630:デフォルトの名無しさん
10/03/18 17:05:02
>>621
必死ですね。コメントを求められているのでレスしますね。
その事象が起きるからといって、Excel2003だという証明は私には出来ません。
学歴も聞かれてますね。おっしゃる通り文系ですが大卒です。
これでよろしいでしょうか?
631:デフォルトの名無しさん
10/03/18 17:06:40
だよな。表計算ソフトなんだから50文字でも多いぐらいだ。
632:デフォルトの名無しさん
10/03/18 17:09:01
超長~い数式は勘弁してほしいw
633:デフォルトの名無しさん
10/03/18 17:18:44
超長ーい数式とか配列数式とかSUMPRODUCTのフィルコピーが大好きなやつはほとんどアホばかり。
VBAで言えば変数使わないで何度も同じ値を取得してるようなもんだ罠。
数式でやるならVBAの変数に相当する作業セルを使えってこった。
634:デフォルトの名無しさん
10/03/18 17:22:44
>>623
もういい加減アホとか言うのやめれ。
635:デフォルトの名無しさん
10/03/18 17:25:04
ん?俺のことかな
すまん、今度からヴァカと書くことにするわ。
636:デフォルトの名無しさん
10/03/18 17:27:44
>>630
証明できるかどうかなんて聞いてないんだよ。
>>615
> 流れから2003だってわかると思うが?
わかると思ってるなら、それは馬鹿ゆえだってことだ。
横からノイズ増やしといて、俺の知りたいことだけお前ら教えろとかいう奴はいらないんだよ。
わかった?
637:デフォルトの名無しさん
10/03/18 17:31:39
ふぁいと!
俺は50文字でも十分すぐるから興味ナス
638:デフォルトの名無しさん
10/03/18 17:32:35
>>630
お前も必死だよwww
639:デフォルトの名無しさん
10/03/18 17:34:53
大卒文系って、裏・逆・対偶レベルの論理学も理解できないの?
今はやりのゆとりって奴?
640:デフォルトの名無しさん
10/03/18 17:36:20
まぁ餅つけ
50文字でも十分ということで糸冬了
641:デフォルトの名無しさん
10/03/18 17:39:24
まぁ、セルに表示できないような文字数を設定するというのは、基本的な使い方では
ないわけだから、自分がそのような処理を実装しなければならなくなったときに、
ターゲットとなるExcelの仕様上の制限を調べ、テストを十分にやれば良い。
642:デフォルトの名無しさん
10/03/18 17:41:21
必要条件と十分条件を良くわかってない馬鹿SEのことを思い出した。
643:デフォルトの名無しさん
10/03/18 17:43:09
CellsのデフォルトプロパティがValueじゃないってことじゃないかと思うけど、
調べるつもり無し。
644:デフォルトの名無しさん
10/03/18 17:51:55
Cells(2, 1) = Cells(1, 1)
でエラーが発生するとき、
Range("B1") = Range("A1")
でもエラーが発生するね。
何故なのかはそれほど知りたくないけど、RangeのデフォルトプロパティはValueだって
思ってたので、ちょっとキモチワルイ。
やっぱり
Range("B1") = Range("A1").Value
と書くと動く。
まぁ、デフォルトプロパティは使うなってことかな。
645:デフォルトの名無しさん
10/03/18 17:52:57
スレが伸びてると思ったら一人で暴れてるようだな。
文体でバレバレだw
646:デフォルトの名無しさん
10/03/18 17:57:50
>>644
セルの文字数についてはバージョンによる違いだってわかるけど、
Valueの省略については色々調べてもわからなくて、昨日からずっと気持ち悪い。
納得できる答えをくれる神は降臨しないかと待ってるんだけど
スレ覗く度に荒れる一方で(ry
647:デフォルトの名無しさん
10/03/18 18:22:47
>>646
納得できる答えが見つかっても、安全側に倒してデフォルトプロパティに頼らない
コードを書くしかないという状況は変わらないよ。
648:デフォルトの名無しさん
10/03/18 18:24:50
>>645
バレバレw
649:デフォルトの名無しさん
10/03/18 18:29:42
まぁどっちもひといが、この板的にはこれが一番ひどい。
>>611
>それはそうと、これだと10000行までいけるなw
650:デフォルトの名無しさん
10/03/18 18:38:10
例えば
Sub test()
MsgBox TypeName(Range("A1").Value)
MsgBox TypeName(Range("A1"))
End Sub
とやると
Empty
Range
となる
651:デフォルトの名無しさん
10/03/18 19:46:05
>>650
だから?
652:デフォルトの名無しさん
10/03/18 19:54:40
>>611にガン擁護された>>600は、どのような登場の仕方をするのであろうか。
653:デフォルトの名無しさん
10/03/18 20:44:22
>>623
256文字でエラーになるExcelのバージョン
654:デフォルトの名無しさん
10/03/18 23:07:40
>>653
え!?それかよっ!!www
655:デフォルトの名無しさん
10/03/18 23:27:05
>>653
うち Excel2003(XP) と Excel97(Win98)あるんだけど
Excel97(Win98) だと256文字でエラーになる
656:デフォルトの名無しさん
10/03/18 23:48:24
哲也君がVBAマクロを2昼夜かけて作ったんですよ。
これが本当の「マクロ 2夜連続」なんつって。
657:デフォルトの名無しさん
10/03/19 02:04:41
>>653
だったら、初めから自分の環境の結果を書いとこうね。
俺は何もしないけど、お前ら俺の知りたいことを教えろパターンですな。
ちなみに俺は、これまで出ていないExcel 2000を持っていて実験もし結果もわかったが教えない。
658:デフォルトの名無しさん
10/03/19 06:32:11
俺はウチとまったく同じ環境の結果がガイシュツだから書かなかっただけなんだけど、
同じことを何度も書かなきゃいけないの?
役所に出す書類だな、まるで。
659:デフォルトの名無しさん
10/03/19 06:38:42
それが知りたいんだったら、既出の情報をまとめるなりなんなりしろよ。
餓鬼かよ。
660:デフォルトの名無しさん
10/03/19 07:31:23
私女だけど、たった1行の実験結果を書かずに言い訳を何行も書く男の人って
661:デフォルトの名無しさん
10/03/19 08:40:37
まとめなきゃ把握できないほどの情報量か?
数えてないけど3例ぐらいしか出てなかっただろ。
662:デフォルトの名無しさん
10/03/19 08:55:26
XP 2003です
ググっても中々みつからないんだけど、
手動で選択したセル範囲の数字を一気に計算(仮に10倍)とかするのってVBAで出来るの?
あとついでに、セル範囲の一番右下の座標も取りたいんだけどやり方教えてください。
663:デフォルトの名無しさん
10/03/19 09:11:53
>>661
いつまでやってんだ
664:デフォルトの名無しさん
10/03/19 09:13:07
>>662
前半:できる。rangeを関数の引数に取りfor each
後半:一発でできるかどうかは知らん
665:デフォルトの名無しさん
10/03/19 09:15:03
>>682
VBAでもちろん出来るが手操作でも出来る。
どっかのセルに10と書いて、コピー、形式を選択して貼り付け、乗算
一個の選択した矩形範囲の右下隅のセルを操作したければ
Selection(Selection.Count).****
Excel2003はこれで大丈夫だが、Excel2007は全セルを選択したとき
CountプロパティがLong型なので入りきれなくてエラーになる。
そこまで考慮するなら
With Selection
.Item(.Rows.Count*.Columns.Count).****
End With
座標って行番号とか列番号とかアドレスが必要なケースは滅多にないだろう。
全くないというわけではないが。
666:デフォルトの名無しさん
10/03/19 09:15:04
>>661
ほら、お前もスレを確認しないと状況がわからないだろ。
>>653の知りたかったことなんて誰も知らないんだから、状況をまとめて
あとこのバージョンの動作を教えてくれってやるのが筋。
667:デフォルトの名無しさん
10/03/19 09:59:47
>>653
Excel 2000では256文字目でエラーになる。
これで全部揃った?揃ったならまとめくらいしてもバチはあたらないよ。
668:デフォルトの名無しさん
10/03/19 10:08:55
Excel95がまだ出てなーなw
669:デフォルトの名無しさん
10/03/19 10:26:54
だれか知ってる人がいたら教えてくれ。
A1の表示形式がG/標準のとき
Debug.Print Format(Range("a1"), Range("a1").NumberFormat)
とやると"M32032ral"が返るんだが、これって何?
670:デフォルトの名無しさん
10/03/19 10:28:49
いかん、Valueつけるの忘れたわ
671:デフォルトの名無しさん
10/03/19 10:31:38
A1の値を書くのも忘れたわ
1の場合ね
672:デフォルトの名無しさん
10/03/19 10:38:56
>>669
知ってるのか知らないのかわからないが、それ、Formatの第二引数の指定方法が間違ってる。
673:デフォルトの名無しさん
10/03/19 11:18:49
競艇のネット自動投票プログラム作っています。自動ログインは完成しましたけど、
次の画面の投票する競艇場選択のボタンを押す方法が分かりません。
押したいボタンのHTMLソースは以下
<input value="福 岡" onclick="jyocd(22)" tabindex="2" type="BUTTON">
ボタンの名前(name)が無いから通常のやり方ではできません。
また、
SendKeys "{TAB 5}"
SendKeys "{ENTER}"
で5番目の競艇場をクリックではできましたが、最終レースが終わると
その競艇場選択ボタンが消えますので、必ずしも××競艇場が5番目とは限らないのです。
検索等で昨日1日中調べてみましたが解決しません。。。助けてください。
674:デフォルトの名無しさん
10/03/19 12:08:09
データについているハイパーリンクの中の数字を取り出して(~info.php?chr=25121とあったら568311)、もしAという数字だったら、その列の情報を全て、シートAにコピー
という仕組みを作りたいと思っております。
ハイパーリンクの中の数字を参照するには、どうしたらよろしいのでしょうか?助けていただけると助かります。
675:デフォルトの名無しさん
10/03/19 12:57:29
>>672
どこが?
まさかNumberFormatLocalってんじゃないだろうね。
もしそう思ってるならそっちが間違ってる。
そんなことはないとは思うけど。
676:デフォルトの名無しさん
10/03/19 12:58:20
まとめました。扱える文字数はバージョンの違いってわかるんですけど、
何故Valueを省略するとエラーが出るのか、どなたか教えて頂けませんか?
【バージョン不明】
256文字以上でエラー
>>578(質問者)、>>581、>>596
911文字以上でエラー
>>600
【バージョン記述あり】
Win98&97(256文字以上でエラー)
>>655
OS不明&2000(256文字以上でエラー)
>>655
XP&2003(911文字以上でエラー)
>>583(>>588?)、>>584(>>587?)、>>586
Win7&2007(8203文字以上でエラー)
>>612
677:676
10/03/19 13:01:21
訂正ですorz
OS不明&2000(256文字以上でエラー)は>>667でした。
678:デフォルトの名無しさん
10/03/19 13:14:44
あぁ分ったわ。
NumberFormatは"General"だから
Gは元号のGで明治だからM
eは和暦の年
nは分
eは和暦の年
ralはGeneralの右3文字だな。
結局Formatじゃ駄目でWorksheetFunction.Textってことか。
俺の間違いだったわ。
679:デフォルトの名無しさん
10/03/19 14:42:54
>>678
いやいや、ヘルプ見ろよ
680:デフォルトの名無しさん
10/03/19 14:46:07
>>676
それ多分OS関係ない。
> 何故Valueを省略するとエラーが出るのか、どなたか教えて頂けませんか?
多分、今ここにいる奴は答えられないから、これまでに回答がないんだよ。
モーグにでも行けば?
681:デフォルトの名無しさん
10/03/19 17:50:13
>>674
> chr=25121とあったら568311
の法則がよくわからない。
Aは数字じゃない。
16進?でもなそさうだし。
682:デフォルトの名無しさん
10/03/19 17:53:43
>>679
FormatもWorksheetFunction.Textも似たようなもんだろうと思ってた俺が
馬鹿だったが、Formatのヘルプの表示書式指定文字なんて一部しか載ってないね。
とりあえず"s","h","n","g","aaa"などが抜けてる。
"General"はWorksheetFunction.TextにはあるがFormatにはないということだな。
683:デフォルトの名無しさん
10/03/19 18:01:50
範囲指定していっぺんに10倍はVBAでもできる。
「形式を選択して貼り付け、乗算」をマクロの記録してみ。
684:デフォルトの名無しさん
10/03/19 18:12:10
Formatのヘルプの最後にある表示書式指定文字だが、あれは一覧じゃなかったか。
685:デフォルトの名無しさん
10/03/19 18:14:19
>>682
ホントだ。ローカルのヘルプは抜けてるのがある。
オンラインヘルプなら全部出るみたいだけど。
686:デフォルトの名無しさん
10/03/19 18:26:38
>>682
あと"p"とか"ccc"とか"ooo"とか"ww"とかもあるみたいね。
Format(1,"ww")が53、Format(1,"www")が531になるがなんのこっちゃ。
687:デフォルトの名無しさん
10/03/19 18:47:18
"p"じゃなくて"q"だったわ。
"ccc"も"c"ね。
Format$(シリアル値,"yyyy/mm/dd")とするところを
Format$(シリアル値,"c")としても同じみたい。
>>685
オンラインのヘルプどこ?
さっきから探してるんだが見つからん。
MSDNかな?
688:デフォルトの名無しさん
10/03/19 18:54:35
cはcountryのcだと予想して地域オプションをいじくってみたら、案の定
Format$(シリアル値,"c")は必ずしもFormat$(シリアル値,"yyyy/mm/dd")と
同じじゃなかったわ。
689:662
10/03/19 19:51:07
>>664-665
回答ありがとうです。本当にたすかりました。
面倒なんで「(どっかのセルに10と書いて)コピー、形式を選択して貼り付け、乗算」をマクロ記録させてそれでやり過ごしました。
690:デフォルトの名無しさん
10/03/19 20:03:49
Formatの奴うざいよ?
Valueの奴と同じちゃうんかと思われるレベル。
691:デフォルトの名無しさん
10/03/19 20:15:38
うざくてすまんね。
Value関連は考えすぎだな。
629と633と637は俺だけどな。
692:デフォルトの名無しさん
10/03/19 20:21:00
というわけど、今後は>>690のハイレベルな回答を期待しましょうねw
693:デフォルトの名無しさん
10/03/19 20:38:21
ヘルプ見ろでFAだろ。
質問者はまだ見れてないようだが。
694:デフォルトの名無しさん
10/03/19 20:42:05
めんどくさいけど探してやった。
ほれ。
URLリンク(msdn.microsoft.com)(VS.80).aspx
695:デフォルトの名無しさん
10/03/19 20:47:20
それVBAも一緒なの?
696:デフォルトの名無しさん
10/03/19 20:51:40
ブイバのことは俺に任せろ!
697:デフォルトの名無しさん
10/03/19 21:04:53
>>693
クソ生意気な奴だなぁ。
ヘルプくらいは真っ先に見てるさ。
俺の見れるヘルプにはcやwwwは見れないんだよ。
お前がそういうなら探せばどっかにあるんだろうけどね。
Formatで検索して出てくる下には書いてない。
Format 関数
ヘルプ > 関数 > D-G
Format 関数の使用例
数値表示書式指定文字 (Format 関数)
文字列表示書式指定文字 (Format 関数)
数値を表すその他の書式 (Format 関数)
もうどうでもいいけどな。
698:デフォルトの名無しさん
10/03/19 21:09:18
>>694
お、ありがとう。
そこにあったか。
どうでもいいと書いたがこれから見るわ。
699:デフォルトの名無しさん
10/03/19 21:14:54
>>693=694の俺なんですが・・・
700:デフォルトの名無しさん
10/03/19 21:18:56
なんというツンデレ!!
おまいら何やってんだよwww
701:デフォルトの名無しさん
10/03/19 21:25:30
>>699
ふーん?
結局お前もまともにヘルプ見てなかったと言うことかw
>>694もリンク先見たけど、cやwwwは載ってないわ。
ExcelヘルプでFormatで検索しても出てこなかったが、表示書式指定文字で検索したら出てきたよ。
702:デフォルトの名無しさん
10/03/19 22:21:05
>>701
日付の書式のヘルプ初めて見たよ。
cとかooooとかwwとか今まで知らんかった。
703:デフォルトの名無しさん
10/03/19 22:35:11
>>702
同じく。
しかしヘルプでFormatじゃなくFormat関数と最後まで打てば日付関連の書式は出てきたな。
手抜きはいかんな。
またうざいとか言われるからこのへんにしとくよ。
704:デフォルトの名無しさん
10/03/19 22:53:23
>>703
「Format 日付」でも出てくるよ。
間にスペース入れればAnd検索だな。
705:デフォルトの名無しさん
10/03/19 23:16:10
>>704
トンクス
Formatだけでも2ページめにあったね。
ヘルプはカーソル当ててF1しか普段使わないから、オンラインヘルプの使い方知らなかった。
706:デフォルトの名無しさん
10/03/20 02:51:23
いつからこのスレは自分が発見したことのメモ帳になったんだ
707:デフォルトの名無しさん
10/03/20 02:53:16
>>701
で、結局そのヘルプのありかをこのスレにフィードバックするつもりは無いのか。
やっぱValueの奴とレベル一緒だわお前。
708:デフォルトの名無しさん
10/03/20 03:37:26
>>672でちゃんと使い方が間違ってると教えてもらってるのに、何なのこいつ。
709:デフォルトの名無しさん
10/03/20 07:56:45
>>672
>>669だが、夜会合ですぐレス書かなくてすまんな。
ヘルプは>>671や>>704のおかげで読めたよ。
俺も実は探せてなかったもんでね。
ヘルプ読めと言いながらVBAのヘルプじゃないものを教えた人もいたみたいだが。
710:デフォルトの名無しさん
10/03/20 08:02:40
まちがった
>>701や>>704のおかげな
711:デフォルトの名無しさん
10/03/20 08:09:44
>>707
ヘルプのありかは>>701はフィードバックしてるんじゃね?
表示書式指定文字で検索って書いてあるし。
Excelヘルプをオンラインヘルプに読み替えればいいんじゃね?
712:デフォルトの名無しさん
10/03/20 10:14:12
ヘルプ見ろで切れまくる奴はいるは、ヘルプ見つけられない奴続出だわ、レベル低すぎ。
お前ら一体今までどうやってプログラミングしてたんだよ?
何でもググってコピペしてたんじゃねーの?
713:デフォルトの名無しさん
10/03/20 10:14:17
エクセルVBAであるサイトのラジオボタンを自動で選択するマクロを作っているんだけど
その方法が検索で調べた方法じゃできなくて困っています。
HTMLのラジオボタンの部分のソースは
<input name="kumiban1" value="1" onclick="check1(this)" tabindex="3" type="RADIO">
となっています。
"kumiban1"のvalue="1" をクリックしたいのです。
714:デフォルトの名無しさん
10/03/20 10:37:36
>>713
同じページ内に同じ名前の name="kumiban1" が複数あった場合は objIE.document.all("kumiban1") だとエラーになる。
そういう時は objIE.document.all("kumiban1")(0) 、objIE.document.all("kumiban1")(1) のように番号を付ける。
自分のチェックしたいボタンが何番目かは自分で調べてね。
715:デフォルトの名無しさん
10/03/20 10:50:18
>>712
まぁまぁ、レベルの高いと思われる>>694でさえ見つけられなったんだから。
俺もF1キーで大体事足りてるしね。
ところで2010では有名なFindメソッドの使用例の間違い、直ってるか誰か知らない?
俺未だにISDNだからベータ落とせない。
前トライしたら途中で切れてばっか。
716:デフォルトの名無しさん
10/03/20 10:53:30
>>712
コピペでマクロ作って社内で高評価
↓
自分で考えなければできないようなことをさせられる
↓
コピペ技術だけじゃどうにもなんねぇ・・・でもまともに組んだことねぇ
↓
そうだ!聞いて教えてもらう←いまここ
↓
結局できない
↓
評価右肩下がり
717:デフォルトの名無しさん
10/03/20 10:54:51
>ISDN
マジか!!
まだいるんだなぁ…
テレホ思い出したわ
つうか、ネカフェとか行ってDLしてくりゃいいんじゃねぇの?
718:デフォルトの名無しさん
10/03/20 11:10:16
かわりにダウンロードしてくれる友達とかいないの?
719:デフォルトの名無しさん
10/03/20 11:12:59
>>717
そんなものあったらすでに行ってるよ。
こちとらド田舎離島だからね。
今度弟にDLしてもらって郵送してもらうかな?
来年は光が開通するんだが。
720:デフォルトの名無しさん
10/03/20 11:14:44
>>718
リロードしなかった。
>>719のとおり。
721:デフォルトの名無しさん
10/03/20 11:24:21
>>714
>番号を付ける
の記述はどうやるんですか?
722:デフォルトの名無しさん
10/03/20 11:33:19
>>721
えっ
回答にちゃんと番号付いてるやん
723:デフォルトの名無しさん
10/03/20 11:34:30
>>715
なんで>>694がレベル高いことになってるんだかさっぱりわからんが、F1で事足りないときの
対処法を言ってるんだが。馬鹿(694)が一人でもいると、自分がマニュアル見ないエクスキューズになるのか?
724:デフォルトの名無しさん
10/03/20 11:36:25
>>722
いや構文の記述法がよく分からないのです
725:デフォルトの名無しさん
10/03/20 11:40:09
プログラマー
RTFMは
遠くになりにけり
726:デフォルトの名無しさん
10/03/20 11:44:44
>>723
レベルが高いをまじにとったか。
昨日Value関連でさんざん罵倒してたのが彼だと思ったからちょい嫌味で書いただけ。
人違いだったらごめんな。
727:デフォルトの名無しさん
10/03/20 11:49:06
>>724
ブラウザをコントロールする方法はいくつかあるから、
まずは自分のやりたい方法というか、試してだめだったプログラムをここにアップして。
そしたら修正点を書くから。
728:デフォルトの名無しさん
10/03/20 11:53:56
ってかここカルシムム不足がいるよね。
あーいえばこういうし困ったもんだ。
729:デフォルトの名無しさん
10/03/20 11:59:21
牛乳飲もう
730:デフォルトの名無しさん
10/03/20 12:05:08
>>727
いくつか試したんですが例えば↓こんな感じです。
Dim objIE As Object
Dim objITEM As Object
Dim nNO As Integer
Dim strRADIO(0 To 5) As String
strRADIO(0) = "1"
strRADIO(1) = "2"
strRADIO(2) = "3"
strRADIO(3) = "4"
strRADIO(4) = "5"
strRADIO(5) = "6"
nNO1 = 1
On Error Resume Next
For Each objITEM In objIE.Document.all
If objITEM.TAGName = "INPUT" Then
If objITEM.Name = "kumiban1" And objITEM.Value = strRADIO(nNO) Then
objITEM.Checked = True
End If
End If
Next
731:デフォルトの名無しさん
10/03/20 12:26:28
>>728-729
まったく関係ないけど、それ俗説だから。
732:デフォルトの名無しさん
10/03/20 12:39:24
アホがアホって言われることが気に入らない奴が居るみたいね。
733:デフォルトの名無しさん
10/03/20 12:40:04
>>731
そうかカルシウムじゃ駄目なのか。
もう駄目かも知らんね。
もともとプログラマーは廃人が多いんだが。
734:デフォルトの名無しさん
10/03/20 15:17:17
すみません、A列目の値が x で、1行目の値が y となるようなセルを探すのは
VBAでできますか?Excelの機能だけでもできますか?
どんな関数を使えばいいかヒントをください。検索します。
735:デフォルトの名無しさん
10/03/20 15:25:25
>A列目の値が x で、1行目の値が y となるようなセル
??????????????
736:734
10/03/20 15:34:52
すみません、A列の値と1行目の値をキーとして交差するセルを検索したいのです。
737:デフォルトの名無しさん
10/03/20 15:38:47
ctrl + Fで検索すればいいんじゃないの?
つか、ここはVBAの質問スレだぞ。
738:デフォルトの名無しさん
10/03/20 15:47:57
すみません、そのセルの値をプログラム的に参照したいということです。
739:デフォルトの名無しさん
10/03/20 15:54:08
A列の値と1行目の値をキーってのがわからない
例をしめしてちょ
740:デフォルトの名無しさん
10/03/20 16:07:06
>>734
どうかな?
Do While セルの値が空白になるまで
if セルの値が"x"の場合
セルの位置を取得してLoop終了
end if
一つ次のセルへ移動
Loop
741:740
10/03/20 16:28:45
考え方は以下の手順でよろしいかと。
A列を検索し、"x"の入っているセルの行番号を取得
1行を検索し、"y"の入っているセルの列番号を取得
Cells(行, 列).Value で目的のセルの値を取得
742:デフォルトの名無しさん
10/03/20 16:40:39
worksheetfunctionでlookupとかじゃだめなの?
質問者のレベル的にそこまで難しいことをしてなさそう。
743:デフォルトの名無しさん
10/03/20 16:52:32
でも、質問があると速攻答えてくれるお前らは何だかんだで根はいい奴等だと俺は思ってるんだからね///
744:デフォルトの名無しさん
10/03/20 16:59:13
>>713,730
コピペミスだと思うけど
<input name="kumiban1" value="1" onclick="check1(this)" tabindex="3" type="RADIO">
を対象なら
>>730 は
誤 nNO1 = 1
正 nNO = 0
ではないかな
これでチェックが入るはず
その上でonclick="check1(this)"を作動させたいのであれば
objITEM.Checked = True
を
objITEM.Click
に変更してみては?
745:デフォルトの名無しさん
10/03/20 18:44:50
下手な言葉で説明されるよりも具体例を出して何をしたいのかを言った方が遥かに早いと思うぞ >>734
746:デフォルトの名無しさん
10/03/20 18:57:12
質問です。
決まったセルの位置をVBAで扱う場合、
私は下記のように定数定義して使っています。
Public const 合計金額欄 As String = "D8"
この方法は、
Range(合計金額欄) には良いのですが、
Cells(r, c) で使いにくい欠点があります。
みなさんはどんな風に位置を定義していますか?
747:デフォルトの名無しさん
10/03/20 19:30:22
>>746
極力マジックナンバーや文字列リテラルをコードの中に入れないと言う
方向性はいいけど、度が過ぎるとくどいコードになるから嫌われるよ。
セルくらいはコードの中でオブジェクト変数に
Set c = Range("A8")
と書いてcを使い回せばいいじゃん。
多くのプロシージャで定数の合計金額欄を使いたければ
各プロシージャの 中でオブジェクト変数に
Set c = Range(合計金額欄)
などとセットしてcを使い回せばいい。
CellsやRangeを頻繁に使うコードはあまりきれいじゃないから。
748:デフォルトの名無しさん
10/03/20 21:01:14
プロシージャの先頭で
Set c = Range(合計金額欄)
みたいにして、実際の処理にはcを使うようにすればいい。
749:デフォルトの名無しさん
10/03/20 21:04:11
「名前」を挿入しろよ
750:デフォルトの名無しさん
10/03/20 21:19:53
>>725
2010のFindメソッドのヘルプは相変わらず間違ったまま。
直す気はさらさらないんでしょうね。
2002のころから報告は山ほどいってるはずなのに。
あと静かになったところを混ぜ返すのもなんだけど
>>669,>>672
別にFormatの第二引数の記述が間違ってるわけではないでしょう。
ご本人が>>678で書かれてるように第二引数の書式にそって出力
されてるだけだから。
Format(Range("a1"), Range("a1").NumberFormat)
すなわち
Format(1, "General")
すなわち"Genaral"の左4文字は書式指定文字で
Format(1, "Gene"""ral""")と同じ。
シリアル値の1は1899/12/31(明治32年12月31日)だから
書式にそって"M32032ral"が出力された。
別に記述が間違ってるわけではないですね。
"M32032ral"に意味があるかと言われれば何もないけど
Format(値,Range(***).NumberFormat)って書き方は日付の値検索で
使うこともあるね。
長文失礼
751:デフォルトの名無しさん
10/03/20 21:25:00
わかった。
お前が一番のいらない子だ。
752:デフォルトの名無しさん
10/03/20 21:27:08
つか、暴言は気まくりの奴をなんで「ご本人」とか言ってるんだか
753:746
10/03/20 21:35:04
>>747
>Set c = Range(合計金額欄)
なるべく上記のようにして変数で取り扱うようにしたり、
Withで記述を省略したりしています。
>度が過ぎるとくどいコードになるから嫌われるよ。
入力フォームと定数定義を作りながら、
だんだん動作と実装のイメージを固めてコーディングに取り掛かる、
という作り方をしてるorz。
754:デフォルトの名無しさん
10/03/20 21:38:09
>>750
何を言いたいのか良く解らないけど、それマニュアル読めば解決することだよね?
マニュアル読めという回答はするなという主張なのかな。
755:デフォルトの名無しさん
10/03/20 21:48:26
ほとんどの質問はぐぐれば解決することだよね?
以下略
756:デフォルトの名無しさん
10/03/20 21:49:12
暴言ねぇ、
そんなのどうでもいい。
仮に丁寧でも内容が間違ってれば駄目だから。
ヘルプ読めはべつにいいんじゃないの?
ただ間違った指摘があったから書いただけ。
757:デフォルトの名無しさん
10/03/20 21:51:25
>>746
本当に決まり切った位置なら、セルに名前を付ける。
URLリンク(home.att.ne.jp)
そうじゃないなら、Rangeを返す関数を作ったり、そのRangeの値を返す関数を作ったりする。
function SumPriceRange() as range
set sumpricerange = range("d8")
end function
function GetSumPrice() as long
getsumprice = range("d8").value
end function
とか。
758:デフォルトの名無しさん
10/03/20 21:58:44
>>750
君って、printf("%d", some_pointer)で変な値が出力されるんですけど、とか聞かれたら、
どのような仕組みでその変な値になるか説明しそうだな。
759:746
10/03/20 22:09:56
>>757
セル範囲を管理するモジュールを1つ用意して、
その中にセル範囲を返す関数を並べ、
各プロシージャはそれを参照するという感じでしょうか?
760:デフォルトの名無しさん
10/03/20 22:12:32
>>750
669だけど、WorksheetFunction.Text(値,書式)のように返り値1を期待してのものだったので俺の間違いでいいです。
これ以上相手すると疲れるから。
降参です。
761:デフォルトの名無しさん
10/03/20 22:17:28
自分で事を荒立てといて、なんていいぐさw
762:デフォルトの名無しさん
10/03/20 22:23:59
最初のレスでG+e+n+e+ralで表示された結果って書いとけば良かったんだよ。
マニュアル読めとか出し惜しみすんなよ。
763:デフォルトの名無しさん
10/03/20 22:37:59
なんか再燃してるねぇ。
2chはこうじゃなくっちゃw
>>752
暴言がどれをさすか知らんけど、クソ生意気と書いたのは俺で質問者じゃねーから。
>>762
出し惜しみする頭なんてあるわけないと思うw
Formatの使い方よく知らないからヘルプヘルプとわめいてたんじゃね?
764:デフォルトの名無しさん
10/03/20 22:41:43
ヤレヤレ ┐(´ー`)┌ マイッタネ
765: [―{}@{}@{}-] デフォルトの名無しさん
10/03/20 23:49:45
>>750
どうもです
MSも相変わらずですか。
766:デフォルトの名無しさん
10/03/21 10:49:19
>>744でもダメですた。
競艇の自動投票を作っているんですけど競艇のサイトが特殊なのかな・・・
ラジオボタンのチェックが入りません。
767:デフォルトの名無しさん
10/03/21 10:58:32
>>750
何がどう間違っているのか書けよ屑
768:デフォルトの名無しさん
10/03/21 11:30:42
>>766
投票ページにアクセスするには会員登録が必要だろうから、
そのページのソースをどっかにアップしてくんない?
769:デフォルトの名無しさん
10/03/21 12:06:08
>>750
お前の存在が間違いじゃないの?
そもそも荒れた原因はお前が最初にFormatのやつうざいと言ったからだろ?
Valueから暴れてるよな?
もういいから消えろ。
素人の好奇心云々や文系高卒やらさんざん暴言吐いてたのはお前だと思うが
素人はお前だ。
玄人と思ってるかも知らんけど、それは勘違いというものだ。
わかった?トウシロのぼくちゃんw
770:デフォルトの名無しさん
10/03/21 12:07:29
テンプレに、「まずOption Explicitをつけろ」も追加が必要だな
771:デフォルトの名無しさん
10/03/21 12:09:54
おーすまん>>750
上はもちろんトウシローの>>767あてね
772:デフォルトの名無しさん
10/03/21 12:11:17
>>750
> 別にFormatの第二引数の記述が間違ってるわけではないでしょう。
これってへりくつって言うんですよ。
それに既に>>678で説明済みのものを、自分の言葉で長々とかかずにはいられない
ほど自己顕示欲をもてあましてるんでしょうか。
773:デフォルトの名無しさん
10/03/21 12:13:46
>>769
そんなに基本的な論理学もわかってなかったことを指摘されたのか痛かったのかな。
知らないことを教えてもらったという意味で、感謝されてもいいくらいだ。
774:デフォルトの名無しさん
10/03/21 12:13:54
「間違いを訂正するときには、
名前欄に自分のレス番号を記入すること」も追加かな。
775:デフォルトの名無しさん
10/03/21 12:20:31
はっきり言って、>>2にもあるように、Excelのバージョンくらい書くのがこのスレの礼儀だし、
まずヘルプを確認するのが常識なんだけど、それを指摘してる奴が痛すぎて、相対的に
バージョンも書かない、ヘルプも読まない奴の方が正義っぽくなってる。
776:デフォルトの名無しさん
10/03/21 12:22:47
そいつの相手してる奴がこれまた痛いw
777:デフォルトの名無しさん
10/03/21 12:23:19
>>767
"M32032ral"って何かって質問だから>>762を読めば?
何で出し惜しみしたの?
778:デフォルトの名無しさん
10/03/21 12:28:44
いろんな厨がいるが、ヘルプ厨ってのもいるんだなw
779:744
10/03/21 12:39:04
>>766
これ以上は自分の手に負えそうに無い感じだけど
最後に1点だけ
If objITEM.Name = "kumiban1" And objITEM.Value = strRADIO(nNO) Then
Debug.Print "ここに北"
objITEM.Checked = True
End If
とかやってみ
イミディエイトウインドに何も表示されないなら
対象タグを見つけられてない
フレーム分割されているとかそんな感じじゃないのかな
780:デフォルトの名無しさん
10/03/21 12:42:42
>>777
俺は頭悪いからそんなこと分らないんだよ
とにかくヘルプだヘルプ!
VB.NETのヘルプじゃなくてVBAのヘルプな
781:デフォルトの名無しさん
10/03/21 12:49:17
わからなかったら素直にそういえばいいのに。
自分の無知を認めることも大事だ。
782:デフォルトの名無しさん
10/03/21 13:20:02
printf("%d", some_pointer)で変なマイナスの値が表示されることに
一生懸命説明する奴大杉。
783:デフォルトの名無しさん
10/03/21 13:32:05
自作自演もほどほどにしようぜ
784:デフォルトの名無しさん
10/03/21 13:33:34
必死だなw
しかしまぁ流れを読んで見ると>>678に対する>>679が一番アホだな。
こういう馬鹿ヘルプ厨がいるからおかしくなるんだよ。
785:679
10/03/21 13:38:32
今顔真っ赤です。
こうですか?わかりません(><)
786:デフォルトの名無しさん
10/03/21 13:47:38
>>785
お前は暴れてるやつの一人だと思ったが、ただ無知だっただけの善意の第三者か?
787:デフォルトの名無しさん
10/03/21 14:02:22
レスが集中してるから暴れてるのは一人か二人だと思う。
暴言吐いてる人が構ってチャンじゃないかな。
788:デフォルトの名無しさん
10/03/21 14:46:51
OAuthをExcelVBAで書きたいんだけれど
サンプルどこかに転がってるでしょうか?
789:デフォルトの名無しさん
10/03/21 15:52:47
withevents を使用するために参照設定があれば教えてください
また、使用方法の勉強に適したURLあればお願いします。
790:766
10/03/21 16:34:22
>>768
ソースアップしました。
URLリンク(firestorage.jp)
791:デフォルトの名無しさん
10/03/21 17:15:55
WithEventに参照設定要ったっけ?入れなくてもThisWorkBookモジュールに入れたら動いたけど
あと、その競艇投票ソースとExcelとの関係は?
792:デフォルトの名無しさん
10/03/21 17:17:38
あ、それから説明サイトは、、、、
mougの即行テクニックで witheventsで検索すればちょろちょろと解説がある
793:デフォルトの名無しさん
10/03/22 01:55:13
VBAで練習用にマインスイーパ作った
他なんか勉強になって作って楽しいもんないかね
794:デフォルトの名無しさん
10/03/22 02:17:08
>>793
ゲーム作って勉強したいならこんなんあるみたいよ。
URLリンク(www.amazon.co.jp)
795:デフォルトの名無しさん
10/03/22 03:01:05
>>794
なんだかオモチャ臭がぷんぷんするけど
どうなんだろうね
796:デフォルトの名無しさん
10/03/22 03:08:47
>>795
どうなんだろねー?
動画見たら、こんなんVBAで出来るの!?って興味持ったけど
値段高いからねぇ。
図書館で検索したけどなかったわw
797:デフォルトの名無しさん
10/03/22 08:28:03
VBA、というよりはWin32APIを使いまくってるけどね
URLリンク(gyouzausa.hp.infoseek.co.jp)
798:デフォルトの名無しさん
10/03/22 08:45:10
初歩的な質問ですけど、教えてください
'対象行をdataシートへコピーする
Sub ColumCopy(ByVal cnt As Integer)
Dim k As Integer
Worksheets("data").Activate
k = 0
Do
k = k + 1
Loop Until Cells(k, 1) = ""
Worksheets("Page1").Range(Cells(cnt, 1), Cells(cnt, 8)).Copy _
Destination:=Worksheets("data").Range(Cells(k, 1), Cells(k, 8))
Worksheets("Page1").Activate
End Sub
というのを作ったんです(cntには51という値が、kには1という値が入っています)が、
実行時エラー
アプリケーション定義またはオブジェクト定義のエラーです
でWorksheets("Page1").~の部分で終了してしまってます
どの様に直せばよろしいのでせうか?
799:デフォルトの名無しさん
10/03/22 09:38:03
すまん、俺のせいですげー荒れたみたいだな。
> 結局Formatじゃ駄目でWorksheetFunction.Textってことか。
> 俺の間違いだったわ。
ヘルプ見れば(もちろん679をレスした時点で俺はヘルプを見てる)、自分のやりたいことを
Formatで実現するには"General Number"を指定しないといけないということに気づくんじゃ
ないかと思ってヘルプ見ろって言ったんだよね。
次からは、ヘルプ見ろってつい言いたくなっても自重するよ。
800:デフォルトの名無しさん
10/03/22 09:42:47
もう一個言い訳しとくと、>>672で
> 知ってるのか知らないのかわからないが
とつけたのは、1にならない理由がわからないのか、わざと定義されてない引数を指定したら
変な文字列になったけど、その変な文字列に変換されるロジックをしりたいのかわからなかった
から。
多分前者だろうと判断して、こう書いた。
> Formatの第二引数の指定方法が間違ってる。
801:デフォルトの名無しさん
10/03/22 09:50:36
あと、>>675でちょっとカチンときてしまった。ヘルプも見ない奴に言われたくないって。
愚痴ばかりですまん。しばらくこのスレの書き込み自重する。
802:デフォルトの名無しさん
10/03/22 11:52:04
>>798 CellsにもSheetを指定しなきゃダメ
Worksheets("Page1").Range(Worksheets("Page1").Cells(cnt, 1), Worksheets("Page1").Cells(cnt, 8)).Copy _
Destination:=Worksheets("data").Range(Worksheets("data").Cells(k, 1), Worksheets("data").Cells(k, 8))
With Worksheets("Page1")
.Range(.Cells(cnt, 1), .Cells(cnt, 8)).Copy _
Destination:=Worksheets("data").Range(Worksheets("data").Cells(k, 1), Worksheets("data").Cells(k, 8))
End With
Dim Ws1 As Worksheet, Ws2 As Worksheet
Set Ws1 = Worksheets("Page1")
Set Ws2 = Worksheets("date")
Ws1.Range(Ws1.Cells(cnt, 1), Ws1.Cells(cnt, 8)).Copy _
Destination:=Ws2.Range(Ws2.Cells(k, 1), Ws2.Cells(k, 8))
好きな書き方でどうぞ
803:デフォルトの名無しさん
10/03/22 13:51:29
>ヘルプ見ろって言ったんだよね。
皆ヘルプ見て分からなかったから質問スレに書き込むんじゃないかな。
キーワードがヒットしなかったか、重要な情報を見落としたかはともかく。
804:798
10/03/22 14:10:23
>>802
Cellにも指定しないといけなかったんですか。
気が付きませんでした。
ありがとうです
805:デフォルトの名無しさん
10/03/22 17:23:03
Cell表記でいつも思うんだが
Worksheets("data").Range(Worksheets("data").Cells(k, 1), Worksheets("data").Cells(k, 8))
より
Worksheets("data").Cells(k, 1).Resize(1, 8)
のほうがコード読み書きしやすくない?
806:デフォルトの名無しさん
10/03/22 17:32:39
ついでに言えばコピー先は左上だけ指定すればいい
Destination:=Worksheets("data").Cells(k, 1).Resize(1, 8)
↓
Destination:=Worksheets("data").Cells(k, 1)
807:デフォルトの名無しさん
10/03/22 17:47:27
workSheets(\\\"data\\\").select
したほうが短くならない?
808:デフォルトの名無しさん
10/03/22 18:22:09
VBAを学ぼうと本を買ってきたのですが、いざ読んでみたものの、
この次何をしたらいいかよくわかりません。
何をしたらいい?
809:デフォルトの名無しさん
10/03/22 18:36:00
PCを窓から捨てる
810:デフォルトの名無しさん
10/03/22 18:42:57
>>809 (´・д・`)窓からPC捨てたら、VBAが学べるの?
811:デフォルトの名無しさん
10/03/22 20:21:37
>>805-806
同感
しかしクソIME(Microsoft Office IME 2007)は上の「どうかん」が変換できないよ。
他にも辞書登録しないと駄目なのがいっぱいあるが中国人に作らせたんじゃないだろうな。
812:デフォルトの名無しさん
10/03/22 20:42:03
2chとかに書き込む時はgoogleのが便利なのに(´・ω・`)
最近はちょっと軽くなったし
813:デフォルトの名無しさん
10/03/22 20:42:20
中国人だよ。
814:デフォルトの名無しさん
10/03/22 21:32:01
テスト同感
>>812
Googleの日本語入力があるなんて知らなかったよ。
今ダウンロードして使ってる。
いいこと聞いたよ。
>>813
アチャー、中国神社無理もないな。
うーん、Googleも完璧じゃないな。
815:デフォルトの名無しさん
10/03/22 23:55:19
>>808
手段と目的が逆転した時は、まず目的を探せ
816:デフォルトの名無しさん
10/03/23 00:36:44
「入門書はクリアしたので次のステップは何がよいでしょうか」
という問いかけかもしれん
817:デフォルトの名無しさん
10/03/23 02:13:17
>>816
じゃあやっぱり目的を探せであってるんじゃないか?
818:デフォルトの名無しさん
10/03/23 07:08:47
じゃあ次は中級の本を読めばいいんじゃね?
819:デフォルトの名無しさん
10/03/23 13:54:18
Cells(3,5*i-2)からCells(k,5*i+1)まで
というように行位置と列位置で指定した範囲をコピペしたい場合
何かいい方法ありますか?
行位置と列位置からセル番地を求めて
Range("○○:××")って形で指定くらいしか思いつかないんですが
820:デフォルトの名無しさん
10/03/23 13:57:09
>>819
CellsはRangeの範囲指定にそのまま使える。
Range(Cells(3, 5 * i - 2), Cells(k, 5 * i + 1)) と書けばいい
821:デフォルトの名無しさん
10/03/23 14:15:50
>>820
ありがとうございます!
822:デフォルトの名無しさん
10/03/24 03:18:22
教えてください。
office 2000、Win XP SP3です。
このようなことはできるでしょうか?
・マウスでセルをクリックすると、そのセルに、色が付くとか、あるいは●の文字が出る。
・もう一度そのセルを押すと、色が無くなる(白になる)とか、あるいは文字が消える。
セルを、まるでチェックボックスに見立てたような動作です。
通常のチェックボックスをシート上に置けばよいのでしょうが、
行単位で、それぞれにチェックを付けたいのです。
そうすれば、行の挿入や削除したとき、チェックボックスも一緒に増減するからです。
このようなことがVBAでできるでしょうか?
宜しくお願いします。
823:デフォルトの名無しさん
10/03/24 04:05:05
>>822
無理。
Worksheet_SelectionChange、Worksheet_BeforeRightClick、Worksheet_BeforeDoubleClickなどで
代用する手はあるけど希望通りの動作にならなかったり副作用が出たりする。
824:デフォルトの名無しさん
10/03/24 04:13:30
セルのクリックってWin32APIでできそうなんだけどなあ。
需要もあると思うんだけど、検索しても見つけられないんだよな。
825:デフォルトの名無しさん
10/03/24 08:07:38
2003 XPです
Sub デイデータ制御()
Worksheets("水産").Cells(5, 2).Select
End Sub
これを同じブック・違うシート上でやると実行時エラー1004が出ます。
あと、activate とselect って何が違うんですか?
826:デフォルトの名無しさん
10/03/24 09:37:56
>>825
activeは範囲選択したときのtabの動作
selectは左クリックで操作したときの動作
selectの方が早くて不具合も少なかったと思う
後マクロはシート1に
Sub Macro1()
Call デイデータ制御
End Sub
標準モジュールに
Sub デイデータ制御()
Worksheets("水産").Select
Range("a1").Select
End Sub
と記述する。別シートを洗濯できないのはスコープの問題。
とりあえず簡単に、別シートのマクロは記述できないと覚えて置けば良い
それでもWorksheets("水産").Cells(5, 2).Selectと一度に記述ができないのは何でだったかな
忘れた。
827:デフォルトの名無しさん
10/03/24 14:34:19
>>826
回答ありがとうございます。
一度に記載出来ないのは仕様だったのね・・・
828:デフォルトの名無しさん
10/03/24 16:56:07
自動整形をやめる方法ってありますか?
*はスペース
hoge*=*1
hogehoge*=*1
でなくて
hoge*****=*1
hogehoge*=*1
って揃えたいんですが
829:デフォルトの名無しさん
10/03/24 18:17:14
FUNCTIONで関数を作っったら、ユーザー関数として使えるのでしょうか?
本では使えるようなことが書いてあるのですが、
関数の挿入のWINDOWでユーザー関数の項目が出てこないので選べません。
エクセルは2003で、超超・・(略)・・超初心者です。
830:デフォルトの名無しさん
10/03/24 21:55:11
とりあえず、>>1-7見ような
831:デフォルトの名無しさん
10/03/25 00:48:52
>>828
無理
832:デフォルトの名無しさん
10/03/25 00:50:37
特定の文字列が含まれているシートの特定のセルを参照して、それをフォームに一覧表示したいです。
すべてのシートから参照する方法は分かったのですが、特定の文字列を含むシートのみを抽出する方法が
分かりません。
なにとぞお願いします
833:デフォルトの名無しさん
10/03/25 00:51:13
>>829
使える
出てこないのはたぶんFunctionを書く場所が間違ってる
834:デフォルトの名無しさん
10/03/25 00:52:09
>>832
Find
835:832
10/03/25 01:31:19
すいません、具体性が足りませんでした。申し訳ないです。
例えば、○○○、□□□、○○○1、○○○2というシートがある時、
○○○が含まれる3つのシートのC1の値を参照し、一覧にしてフォームに表示させたいのです。
私としては、foreachを使っていけば良いんじゃないかと思って考えてはいるのですが、具体的な形に
ならないものではまって動けないという感じです。
知恵をお貸し下さい。お願いします。
836:デフォルトの名無しさん
10/03/25 01:51:53
URLリンク(officetanaka.net)
837:832
10/03/25 02:06:29
ヒントありがとうございます。また頑張ってみます。
838:デフォルトの名無しさん
10/03/25 16:41:54
ボタンをクリックして表示させるフォームに引数って渡せないでしょうか。
クリックしたボタンによって違う処理をしたいんですが、引数を渡せないと大量の同じようなフォームをできてしまうのでそれを避けたいのですが…
839:デフォルトの名無しさん
10/03/25 18:07:16
継承が使えればformを継承し新しいクラスを作る
もしくはshow関数をオーバーロード
もしくはグローバル関数を使う
もしくはテキトーなtextboxに値でもいれておき、それを参照するようにする
下に行くほど簡単。どれでも好きなものを
840:デフォルトの名無しさん
10/03/25 18:16:40
excel2007で質問させてください。
各シートから条件に一致したデータを抽出して印刷しようとしています。
印刷ひな形となるシートのコピーを作成して
そのコピーしたシートにデータを書き込んで印刷→シート削除という流れなのですが
worksheets(hoge).copyを使用すると
Application.ScreenUpdating = falseにしていても
画面遷移が起こってしまいます。
画面遷移なしで処理したいのですが何か他に方法はありますか?
ひな形シートの全セル選択で貼り付けると印刷設定が移動できませんし
印刷設定のプロパティも全部コピーしていくしか無いのでしょうか
841:デフォルトの名無しさん
10/03/26 02:13:27
ちょっとVBAに慣れると調子に乗って
ExcelベースのGUIで便利なアプリにしてやろうなんて
夢想しがちだが、肝心な機能の呼び出しが非公開だったり
することが多くて失敗しやすいね
842:デフォルトの名無しさん
10/03/26 05:24:58
>>840
印刷設定のコピー方法はプリンターの機種ごとに違ってて、そう簡単にはコピーできなかったと思う
843:デフォルトの名無しさん
10/03/26 09:41:04
←→
┌───┐┌───┐
└───┘└───┘
上のような感じで複数のセルの中から値の入力されてるセルの上端に双方向矢印を入力させるというマクロを作りたいのですが
可能でしょうか?双方向矢印を引くだけならマクロの記録を使ってできるのですが値のあるセルだけにという条件をくわえるにはどうしたらいいでしょうか?
どなたか教えてください。
844:デフォルトの名無しさん
10/03/26 13:18:35
>>843
こんな漢字?
Sub a()
Set d = UsedRange
For Each s In d
If s.Value <> "" Then
s.Offset(-1, 0).Value = "←→"
End If
Next
End Sub
845:デフォルトの名無しさん
10/03/26 13:58:50
>>844
うまく説明できてなくてすみません。。
例えばA1からD9までの範囲があったとしてそこの中のセルに値があるものだけを検索して
図形の双方向矢印をセルの上端の線に合わせて入れたいんですが可能でしょうか?
846:デフォルトの名無しさん
10/03/26 17:26:23
>>839
グローバル関数でいけました。ありがとうございました
847:デフォルトの名無しさん
10/03/26 21:14:29
>>843
やりたいのはこんな感じ カナ?カナ?
Dim Sh As Worksheet
Dim r As Range
Dim X1 As Integer
Dim X2 As Integer
Dim Y1 As Integer
Dim Y2 As Integer
Set Sh = ActiveSheet
For Each r In Sh.Range("A1:D9")
If r.Value <> "" Then
With r
X1 = .Left
Y1 = .Top
X2 = X1 + .Width
Y2 = Y1
End With
With Sh.Shapes.AddLine(X1, Y1, X2, Y2).Line
.BeginArrowheadStyle = msoArrowheadTriangle
.EndArrowheadStyle = msoArrowheadTriangle
End With
End If
Next
848:デフォルトの名無しさん
10/03/26 22:49:43
>>847
ありがとうございます!!まさにそのとおりです。
ちなみに矢印を上端の中心に持ってきて左右の長さを縮めたいのですが・・・
←→ .←──→
┌───┐┌───┐
└───┘└───┘
今のままでは右のようになるので左の図のようにしたいと考えてまして
そういった方法の指定も可能ですか?
849:847
10/03/26 23:18:03
>>848
可能
Rangeオブジェクトのプロパティ
Left Top Width Height
後はヘルプを見るなりして がんばってみてね
850:デフォルトの名無しさん
10/03/26 23:27:15
色んなことをやりたい人がいるんだな
851:デフォルトの名無しさん
10/03/26 23:35:17
このスレはVBAとPerl14
のスレなのになぜPerlネタが一切でてこないんだ?
852:デフォルトの名無しさん
10/03/26 23:49:26
次の質問どうぞ
853:847
10/03/27 19:33:47
>>843
もう見てないかもしれないけれど
>>847のコードは
型宣言を 勘違いしてたみたい
変数 X1 X2 Y1 Y2 は Single型もしくはLong型で宣言するべきだった
Integer型だと少数点以下がカットされるので線が少しずれてる
さっきヘルプを見ていて気づいた
ゴメンね
854:デフォルトの名無しさん
10/03/28 03:21:33
シェイプ関連の位置指定は、ポイント単位だからなあ。
て、Longも駄目だろw
855:847
10/03/28 10:55:03
>>854
がーーーん
またまたすみません
たっ たしかにそうでした
回答者に向いてないかも俺
さすがに落ち込みました
856:デフォルトの名無しさん
10/03/28 11:02:37
ドンマイ。よくあることだw
857:デフォルトの名無しさん
10/03/28 21:05:10
質問です。
CSVファイルをエクセルブック内のワークシートに貼り付けするとき、
Workbooks.Open Filename:=csvfile
Workbooks(csvfile).Worksheets.Copy after:=Workbooks(mybook).Worksheets("ファイル一覧")
Workbooks(csvfile).Close
こんな感じで簡単に貼り付けています。
csvファイルが5MBとかサイズが大きくても上のようなやり方で問題ないでしょうか。
csvファイルの先頭から1レコードずつ取得して貼り付けるという方法もネットから探し出せたんですが
どっちがいいのか判断しにくいです。
858:デフォルトの名無しさん
10/03/28 21:07:57
ExcelVBA開発がメインの人っているの?
趣味とか、基本的にはVBとか、やけにできる事務員とか、そんな感じですか?
859:デフォルトの名無しさん
10/03/28 21:21:12
自称やけにできる事務員ですw
860:デフォルトの名無しさん
10/03/28 21:35:38
英単語が並べられている列があり、隣の列に意味を書き出す、というのを作っています。
使用する英語の辞書のURLはURLリンク(www.alc.co.jp)です。
「apple」という単語を検索するとURLは
URLリンク(eow.alc.co.jp)
となります。
ここで、英単語を検索した結果表示されたページから該当箇所を抜き出すというやり方が分かりません。
上記の「apple」の場合、「・apple」から「分節ap・ple」まで抜き出したいのです。
やり方がわかる方教えてください。
861:デフォルトの名無しさん
10/03/28 22:09:20
>>860
* データの転載は禁じられています。
class="midashi"
862:デフォルトの名無しさん
10/03/28 22:25:22
>>857
5MBのCSVなんて動作遅くならないか?
速さをなんとかしたいならsqlでやる。
863:デフォルトの名無しさん
10/03/29 00:28:17
>>860
VBA上から Webページのデータを取得するのは
そのWebページのソースを見て理解できないと無理
(そしてそれをどうVBA上からコントロールするかも)
ソースをみたけど
<DIV class=mr_10 id=resultList ondblclick=seow()>
ってのがあるから
id=resultList ←これを利用すれば
「・apple」から「《コ》アップル・メニュー」
までは抜き出せるね
あとはタグを辿っていくしかないかな
864:デフォルトの名無しさん
10/03/29 13:57:45
>>858
やけにできる事務員だった
データの正規化やコピーする際に絶対にミスしないのが魅力的
速度自体は大して変わらん
865:デフォルトの名無しさん
10/03/30 10:59:35
1ブック内に複数あるシート全てを選択した状態で、且つ一シート目にのみ開始ページ番号が振られている状態で
印刷したときに割り振られるページ数を、印刷せずにマクロで調べたいのですがどのような方法があるでしょうか?
このシートのこのセルは何ページ目に該当する、ということを調べて行きたいです。
プレビューで見ていけば可能ですがページ数が膨大なのでマクロで処理したいと思っています。