1 名前:デフォルトの名無しさん [2007/05/27(日) 00:06:58 ] ・まじめにExcelの機能を追及してみようと思う奇特なひと ・スキルがないのに無理やりVBAの仕事を押し付けられた普通のひと ・VBAなんていまさらやりたくないのに業務で仕方なく使っているひと ・とにかく漏れにこんな仕事まわすなと怒っているひと そんなM$大好きなひとからアンチM$なひとたちまで幅広くカバーするスレです 前スレ pc11.2ch.net/test/read.cgi/tech/1168308855/
722 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 11:50:17 ] 出来るけど、何か? 君が出来ないなら努力不足
723 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 11:54:41 ] >これをレースごとに他のシートにコピペすることはVBAで可能でしょうか? ↓ これをレースごとに他のシートにコピペすることはVBAで可能ですが、 どうやったらいいでしょうか?
724 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 12:09:18 ] マクロまでできたらそのマクロをいじれ どういじればいいかは学べ
725 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 12:20:18 ] 手でコピペは出来るんでしょ。 レースごとに分割する基準は何? それをマクロに書けばいいだけ。
726 名前:デフォルトの名無しさん [2007/08/26(日) 12:23:37 ] >レースごとに分割する基準 場所+レース番号 例) 札幌 9 または 馬番1〜大外枠 ・・・
727 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 12:45:05 ] まずシートを作って Sheets.Add ActiveSheet.Name = 場所+レース番号 例) 札幌 9 あとは判るだろ
728 名前:デフォルトの名無しさん [2007/08/26(日) 12:53:39 ] >>727 いやそれは分かるんだけどさ 競馬って毎週「札幌」があるわけじゃないのよ 10箇所以上の場所から2つ3つあるわけで・・・
729 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 13:04:45 ] 変数 ヘルプ これ以上書くことないな!
730 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 14:25:56 ] VBAマスターするコツってありますか? 反復演習・努力ですかね?
731 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 14:29:24 ] そもそも何を持ってマスターしたと言えるのか 誰もわからない(あるいは人によってマスターの基準が大きく異なる)ので、 誰もマスターしたなんて言わない。
732 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 14:53:26 ] 初心者用の1冊をマスターしても実用性はないよな
733 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 16:24:13 ] 最初は初心者用の入門書のとおりに実際に動かしてみる。 (一週間程度) 次は、簡単なオリジナルのコードを沢山作る。その際 他人に質問しないで自力で検索したりヘルプを見たりする。←最も重要 同時にVBA掲示板を閲覧し自分のレベルにあった質問で勉強する。 未だ、自分で質問はしない方が良いと思う。 (一ヶ月程度〜数年以上) そのうち、ヘルプを見れば理解できるようになる。このレベルになれば 他人に質問しても相手に失礼じゃないと思う。 スクール行ったって資格は取れるかもしれないが実力がつくとは限らない。 やる気があれば独学で十分だとおもう。
734 名前:デフォルトの名無しさん [2007/08/26(日) 16:46:44 ] 俺の頭脳じゃ100年経ってもできないっぽい 実現させるには達人に出会ってお金を出して作ってもらう他ないな・・・
735 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 18:08:50 ] >>733 それ以前に、一般機能をひと通り理解してないと無理じゃない?
736 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 18:14:25 ] 何を馬鹿なことを… 初心者用の本は斜め読み。 必要そうなとこだけを重点的に。 使いたいときだけさっと調べ(本屋、GOOOOOOOGLE) 出来そうじゃなかったらあきらめる。(どうしてもVBAでMSNメッセンジャー作りたいんです >< )
737 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 18:26:56 ] VBA本は初心者本ばかりか上級者向けとされている本ですら、 変数の命名規則が不明(どころか明示すらしない)だとか、見やすいコーディングを 考えないとか、速度に触れていないとか、後始末を省略してるとか、コレクションとか クラスの使用法が全く記載されてないとか、そんなのばっかだから、その手の本の まんまのコーディングはあんまり業務としての実用性はない Excelレガシー問題ってこういう本の氾濫が大きいと思う 結局、リファレンスだけあればいいってことになる
738 名前:デフォルトの名無しさん [2007/08/26(日) 18:35:13 ] 初心者はプログラム自体にとっつきにくさと わかりづらさから飽きがきやすいので かなり偏った内容でも、とにかく楽しく、とにかく簡単で 実際にプログラミングしてみて動かせるような本が好ましい。 サンプルのついた本は腐るほどあるけど 一生使いもしないような題材だと萎えるから そこのとこも吟味してほしい。
739 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 18:40:28 ] だからこそ>>736 なんだが。 それにね、途中で興味がなくなったらそれはそれでいいんだよ。 VBAは何かの手段であって目的じゃないはず。 C++やc#でもやればいいんだよ。
740 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 20:57:33 ] >>735 そうですね。 一般機能のIF関数やVLOOKUPを使いこなせない人は苦労しそうだね?
741 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 21:36:12 ] 自分に降りかかる/手が出せる範囲の仕事で滞りなく使えること。 VB「A」なら、↑でマスターしたって言っていいでしょ。 ということは「自分の仕事でVBA使って自動化/効率化したいこと」が 最高の教材になるんじゃないか? 職業プログラマの人は知らんけど。 もしそうなら別の言語マスターした方がよさそうだし。
742 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 21:43:30 ] VBAは簡単なのがいいね C言語に何度も挫折した俺でも使える VBにステップアップしようとしたけど.NET何たらになってて よくわからなくて結局VBAに戻ってきた
743 名前:デフォルトの名無しさん [2007/08/26(日) 22:12:14 ] With Worksheets(1).Range("a1:a500") Set c = .Find(2, lookin:=xlValues) If Not c Is Nothing Then firstAddress = c.Address Do c.Value = 5 Set d = Worksheets(2).Range("a1:a500").Find(2, lookin:=xlValues) Set c = .FindNext(c) Loop While Not c Is Nothing And c.Address <> firstAddress End If End With Loopんところでオブジェクトが無いとかって エラーになるんですけどなんでですか? 途中で違うFindするとcの方のFindが無効になっちゃうのでしょうか?
744 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 23:13:40 ] ちゃんと例外処理しろよ
745 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 23:22:45 ] Loop While Not c Is Nothing And c.Address <> firstAddress 両方評価してからアンドの評価するからアウト
746 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 06:58:40 ] きたねーコードだな
747 名前:743 [2007/08/27(月) 09:52:45 ] >743ですが、Findのヘルプに載っている 使用例に下記一行を加えただけです。 Set d = Worksheets(2).Range("a1:a500").Find(2, lookin:=xlValues) この一行が無ければ、動きます。 この一行を追記しただけでエラーになる理由が知りたいです。
748 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 12:55:18 ] なんで解らないのかが知りたいです。
749 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 14:11:31 ] >>747 むしろヘルプをコピっただけで エラーになる俺に動く方法を教えてけれ >c.Value = 5 をコメントアウトしないと >Loop While Not c Is Nothing And c.Address <> firstAddress のところで cがNothingだから c.Addrssがエラーになる Loopのなかに If c Is Nothing Then Exit Do とか入れれば問題ないけど これってヘルプが間違ってんの? それとも条件しだいでは問題ないの?
750 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 14:34:19 ] >>743 > Loopんところでオブジェクトが無いとかって > エラーになるんですけどなんでですか? エラーメッセージを正確に書き写せばいいのに。 簡単な英語もわからないと不便だね。
751 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 18:21:56 ] エラーって日本語だろ?
752 名前:デフォルトの名無しさん [2007/08/27(月) 20:16:40 ] 屁理屈ばっかごねてるヴァカ
753 名前:デフォルトの名無しさん [2007/08/28(火) 20:15:47 ] Excelのオートフィルタ機能を関数で表したいと思うのですが可能でしょうか 教えて下さい
754 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 22:05:01 ] ググレカス
755 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 22:05:53 ] >>753 > 可能でしょうか お答えします、可能です やり方は自分で調べてください
756 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 09:31:53 ] これを日本語訳に直してもらえないでしょうか? Sub TTT() Dim iR As Integer, iT As Integer, iK As Integer, iM As Integer For iR = 1 To Cells(1, "A").SpecialCells(xlLastCell).Row Select Case Cells(iR, "A") Case "高橋" iT = iT + 1 Sheets("高橋").Cells(iT, "A") = Cells(iR, "A") Sheets("高橋").Cells(iT, "B") = Cells(iR, "B") Case "亀井" iK = iK + 1 Sheets("亀井").Cells(iK, "A") = Cells(iR, "A") Sheets("亀井").Cells(iK, "B") = Cells(iR, "B") Case "道重" iM = iM + 1 Sheets("道重").Cells(iM, "A") = Cells(iR, "A") Sheets("道重").Cells(iM, "B") = Cells(iR, "B") End Select Next End Sub
757 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 09:38:03 ] 潜水艦TTT() 薄暗さ、不-、整数、それ、整数、整数としてのiK、不-、整数 セル(1、「A」).SpecialCells(xlLastCell)の.Rowの選んだケースセルへの不- =1、(不-、「A」) ケース"高橋" それ=それ、+1 シート("高橋").Cells、(それ、「A」) =セル(不-、「A」) シート("高橋").Cells、(それ、「B」) =セル、(不-、「B」) ケース"亀井" iK iK=+1 シート("亀井").Cells(iK、「A」)=セル(不-、「A」) シート("亀井").Cells(iK、「B」)=セル、(不-、「B」) ケース"道重" 不-=不-+1 シート("道重").Cells、(不-、「A」) =セル(不-、「A」) シート("道重").Cells、(不-、「B」) =セル、(不-、「B」)終わりは次の終わ りの潜水艦を選択します。
758 名前:デフォルトの名無しさん [2007/08/29(水) 10:27:52 ] 日本語になってねー
759 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 10:43:53 ] 逆に言えば元の756だって英語か何かになっていたかというと、そうではないということ。 それはVisual Basicという言語なのだから。
760 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 10:53:21 ] それ以前に756動作しないし? 俺も釣られた?
761 名前:デフォルトの名無しさん [2007/08/29(水) 12:42:40 ] >>760 元々別のシートにあるデータをコピペする動作だからね マジで>>756 どう構造か教えて欲しい TTT というのは任意のタイトルだよね Dim iR As Integer は整数型の変数の宣言だよね その後のTo Cells とか SpecialCells(xlLastCell).Row とかが分からん
762 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 12:47:13 ] 元のワークシートから名前別のワークシートにA列とB列の値を転記してるだけやん
763 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 13:54:32 ] >>756 Cells プロパティの記述が変体的?
764 名前:デフォルトの名無しさん [2007/08/29(水) 14:09:33 ] ダメだ全然ワカンネ VBAの初心者向きの本も理解できねぇ('A`)
765 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 14:33:56 ] VBAでプログラムを勉強しようとするのは無謀だな VBの知識があってマクロ記録のソースから覚えれば早い
766 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 14:34:40 ] 初心者向きなのに解かりづらい本が多いからね。 ↓ こっちのサイトが私にはわかりやすい。 ttp://www6.plala.or.jp/MilkHouse/index.html
767 名前:デフォルトの名無しさん [2007/08/29(水) 14:50:44 ] VBAって今後どうするの? フォーマットが公開されていないファイルは、 政府も使わないと言っている。2007でXMLも標準になったが、マクロが 仕込んであるのでは、公的には使えなくなるんじゃないのかな?
768 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 16:13:18 ] > 政府も使わないと言っている。 騙されてる奴が多いが「使わない」とは言ってない 国のやるポーズには、必ず逃げ道仕込んでおくものさw
769 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 18:31:56 ] 通常VBA含んだExcelを他に配ったりしないんじゃないの? 自分の仕事を効率化するために使ってる人が大部分じゃない? 私は他人の作ったロックしたマクロを使ったことないし使うつもりも無い。
770 名前:デフォルトの名無しさん [2007/08/29(水) 21:34:34 ] 恐れ入ります、質問をお願いします。 会社でエクセルのマクロを使用していますが、困っています。 現状、共用ドライブにエクセルファイルを格納し、5人で使用しています。 使用する際は、それぞれ一人一人にパソコンが支給されており、支給された個人のパソコンから共用ドライブにアクセスし、入力 しています。 こういった状況で、マクロで入力する際、人の名前(入力者の名前)を自動的に取得、エクセル表の任意の場所に貼り付けすることはできないものでしょうか? winXP エクセル2000です。
771 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 21:57:06 ] 出来るんじゃないかな?ユーザー名を取得し履歴のように日時と一緒に書き込んだり 入力したセルのコメントに日時とユーザー名を記録する事も。
772 名前:デフォルトの名無しさん [2007/08/29(水) 23:05:23 ] EXCELでVBAでDLLを使う場合、 そのDLLをxlsファイル内に埋め込む方法はありませんか?
773 名前:デフォルトの名無しさん [2007/08/29(水) 23:16:04 ] ActiveSheet.OLEObjects.Add( Filename:= "C:\Documents and Settings\Administrator\デスクトップ\xxx.dll", Link:=False, DisplayAsIcon:=False).Select これはxlsファイル内にdllを保存するということでいい? このファイルを外部に保存するにはどうしたら・・・
774 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 23:34:31 ] >>770 Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
775 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 23:37:36 ] >>772 ない。DLLはDLL。 素直にDeclare宣言して関数使いましょう。
776 名前:デフォルトの名無しさん [2007/08/29(水) 23:44:06 ] >>775 宣言など使い方は通常通りでいいんだけど 配布ファイルが複数になるのが駄目なんだ xls内にdllを保存し、 起動時にdllをカレントフォルダに保存。 dllを使った処理を行い、 終了時にdllを削除。 っていう流れがやりたい。
777 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 23:50:02 ] >>776 > xls内にdllを保存し、 これの意味が分からん。保存ってなんだ? LoadLibraryしてFreeLibraryすりゃいいんじゃね? そういう話じゃない?
778 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 23:51:09 ] ついでだ。 #If Win32 Then Private Declare Function LoadLibraryEx Lib "Kernel32" Alias "LoadLibraryExA" _ (ByVal lpLibFileName As String, _ ByVal hFile As Long, _ ByVal dwFlags As Long) As Integer Private Declare Sub FreeLibrary Lib "Kernel32" (ByVal hLibModule As Integer) #Else Private Declare Function LoadLibrary Lib "kernel" (ByVal f$) As Integer Private Declare Sub FreeLibrary Lib "Kernel" (ByVal h As Integer) #End If
779 名前:デフォルトの名無しさん [2007/08/29(水) 23:57:50 ] >>777 A.xlsはマクロでB.dllを使用しています。 A.xlsを利用するためには同(又はパスの通った)フォルダにB.dllを置く必要があります。 ですが、 A.xlsの配布時にB.dllを同時に配布すればいいんですが、それは運用的に無理です。 また、ファイルの移動(複写)をする場合には、A.xlsのみの移動(複写)でシステムが動くようにする必要があります。 なので、 A.xls内にB.dllを埋め込み、実行時それをファイルとして抽出保存し、利用する必要があります。
780 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 00:03:16 ] いや、DLLはDLLなんだからファイル自体別。 埋め込むってのがよく分からんが、 DLLの配布がNGなら DLLの関数をVBAで組めばいいって話じゃ済まないの? 要するに、DLLは無くして全部VBAで書けって話。 ダメなん?
781 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 00:07:13 ] >A.xls内にB.dllを埋め込み テキストとしてシートに書くって事か?
782 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 00:08:55 ] とりあえず目的をはっきりさせてくれんと分からん。 DLLの配布が目的なのか、マクロの動作が目的なのか、それともその他、どれだ?
783 名前:デフォルトの名無しさん [2007/08/30(木) 00:15:45 ] VBAで処理書くのは最後の手段。出来れば避けたい DLLの関数を使いたい。 メールの添付ファイルみたいにxls中にdllを入れて、 マクロでそれを、dllファイルに書き出して利用したい。 メールはbase64だっけ マクロの動作が目的
784 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 00:18:47 ] オブジェクトの挿入でファイルを添付できるんじゃね?
785 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 00:20:24 ] そういうことか。 でもExcelで出来るのかは怪しいな。
786 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 00:22:00 ] ぶ オブジェクトの挿入で出来たぞ ちょっと目鱗
787 名前:デフォルトの名無しさん [2007/08/30(木) 00:23:02 ] >>784 添付はできてるんだけど、マクロでそれをファイルに保存ができない
788 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 00:45:33 ] 実を言うと、俺も772と同じことを以前やろうとしたんだが、無理だった。 DLLを.xlsファイルに埋め込むことは出来るし、動的にDLL作成することもできるんだけど、 その中から関数を呼び出す方法が無くて。 Declare Function〜は、マクロ実行時にDLLが無いとエラーになるので使えない。 Cなら動的にLoadLibrary()→AddressOf()って方法もあるんだが、VBAの場合、 AdressOf()はコールバックのアドレスにしか使えなくて。 .xlsに埋め込んだ方法だけど、標準モジュールの中に何かの変数(配列)として入れておいた。 それで、実行時にファイルとして書き出す。dllが小さかったから出来た方法だけどね。
789 名前:デフォルトの名無しさん [2007/08/30(木) 00:52:07 ] 標準モジュールの中に何かの変数(配列)として入れておいた。 それで、実行時にファイルとして書き出す。 ここ詳しく教えて @バイナリデータとして入れておいて Aバイナリ書き出しでdll作成?? @がよく分からん
790 名前:デフォルトの名無しさん [2007/08/30(木) 00:52:55 ] 今日はもう落ちるんで、朝確認します よろしくおねがいします
791 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 02:39:36 ] hisazin-up.dyndns.org/up/src/42670.xls このエクセルファイルの中にtest()ってマクロがあるから、実行してくれ。 デスクトップにasakusa.jpgっていう画像ファイルができる。 仕組みはソース読め。
792 名前:デフォルトの名無しさん [2007/08/30(木) 07:50:46 ] >>791 落ちてるorz 長持ちするとこに再うpおねがいします
793 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 09:01:23 ] >>788 そういうときにはCallWindowProcとかEnumWindowsとかを使えばいいんだよ。
794 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 09:21:12 ] >>791 はウィルス? ファイルは存在してるがブロックされる
795 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 12:01:12 ] >>792 普通に保存できたよ
796 名前:デフォルトの名無しさん [2007/08/30(木) 17:32:03 ] VBAの変数って多次元の連想配列って無理? PHP的に書くと $hensu['mojiretsu1'][0] $hensu['mojiretsu2'][1] みたいな
797 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 17:44:55 ] collectionにcollectionを格納すれば可能 ちょっと辛いけど
798 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 17:45:13 ] PHPは知らんからVBA的に書いてくれ
799 名前:デフォルトの名無しさん [2007/08/30(木) 17:57:27 ] >>797 うええめんどくせえ DBのSELECT用の関数とかみんなどうやってんだ $serectData[フィールド名][0] みたいに使えないんでしょ? >>798 hensu("mojiretsu", 1) みたいな感じかなあ
800 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 18:41:36 ] const mojiretsu=0 as integer でいいじゃん
801 名前:デフォルトの名無しさん [2007/08/30(木) 19:31:39 ] >>791 これはとりあえず出来ました。 ただ、 340kbのDLLが.basにすると700kbくらいになって それを300kb弱のxlsに入れて保存すると1300kbになって それを他のシートの値を変更して、上書き保存すると2700kbになったorz DLLをxlsにOLEオブジェクトで追加して ActiveSheet.Shapes("Object 1").Copy ってやるとクリップボードにDLL保存出来て、 手作業でどこかのフォルダに貼り付けは出来たんだけど、 それをマクロでやる方法が見つからなかった。 どなかた教えてください。
802 名前:デフォルトの名無しさん [2007/08/30(木) 20:07:43 ] マクロで、オートフィルターの選択を、「すべて」にするようにしたいです。 Selection.AutoFilter Field:=5 でいいのでしょうか?最後の数字の意味がわかりません。
803 名前:デフォルトの名無しさん [2007/08/30(木) 20:50:50 ] >>799 WSHのDictionaryObject使うと似たようなことはできると思ったよ ただ凄く遅かったのと、Vbaからは使ったこと無いので自分で調べてみてくれ
804 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 22:05:39 ] >>802 F1でヘルプな
805 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 22:20:58 ] Dictionaryは使いにくいので書き換えを伴うときはVariant配列にしてしまう 参照用だけならCollectionで決まりなんだけどねぇ
806 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 22:50:33 ] もしご存知でしたら教えてください。 Findメソッドに関してなのですが、検索対象に"/"が文字列間に 含まれていると検出してくれません。 例:2007/8/30 など "/"単体だと検出してくれるのですが、、 これはこのメソッドの使用なのでしょうか? ぐぐってみたのですが参考になるようなものをみつけれなかったので。。
807 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 22:59:11 ] >2007/8/30 文字列じゃないだろ?検出しなくて当然!
808 名前:デフォルトの名無しさん [2007/08/30(木) 23:09:34 ] VBAでクリップボードにコピーされてるDLLをファイルに落とす方法はありませんか?
809 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 23:17:42 ] >>807 ありがとうございます。 テキストボックスに入力された日付をString型の変数に格納したのですが 文字列にはならないのでしょうか? 2007:OK /:OK 2007/:文字列型じゃない、、 一度SplitしてからFindすることにします。。
810 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 23:25:27 ] ___ ./ \ .| ^ ^ | あまり私をやらせない方がいい | .>ノ(、_, )ヽ、.| __! ! -=ニ=- ノ!___ /´ ̄ ̄ .|\`ニニ´/ `ヽ ,.、-  ̄/ | l  ̄ / | |` ┬-、 / ヽ. / ト-` 、ノ- | l l ヽ. / ∨ l |! | `> | i / |`二^> l. | | <__,| | _| |.|-< \ i / ,イ____!/ \ .| {.| ` - 、 ,.---ァ^! | | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄l __{ ___|└―ー/  ̄´ |ヽ |___ノ____________| }/ -= ヽ__ - 'ヽ -‐ ,r'゙ l | __f゙// ̄ ̄ _ -' |_____ ,. -  ̄ \____| | | -  ̄ / | _ | ̄ ̄ ̄ ̄ / \  ̄| ___`\ __ / _l - ̄ l___ / , / ヽi___.|  ̄ ̄ ̄ | _ 二 =〒  ̄ } ̄ / l | ! ̄ ̄| _______l -ヾ ̄ l/ l| |___|
811 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 23:44:08 ] >>808 またおまえか
812 名前:デフォルトの名無しさん [2007/08/31(金) 08:08:37 ] >>811 方法おしえて
813 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 08:24:16 ] >>805 Collectionでも書き換え出来るけどね
814 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 09:23:41 ] >>809 エクセルでは日付は思うように出来ないことも有る。有る意味仕様 一例を挙げると Sub Cstrのテスト() Cells(1, 1) = Date Cells(2, 1) = CStr(Cells(1, 1)) End Sub トンでもない結果が出ると思う。
815 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 14:18:52 ] >>814 (809じゃないけど面白そうなんで試してみた) Cells(1,1) → 2007/8/31 Cells(2,1) → 1931/7/8 ビックリ仕様ですね
816 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 21:55:56 ] > エクセルでは日付は思うように出来ないことも有る。有る意味仕様 ちゃんと理解してないから思うようにいかないだけ
817 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 06:59:50 ] >>814 CStrのヘルプみると引数に日付型は有効だけど Cells(2, 1)の表示形式も日付に変わってる? これは仕様というよりバグじゃ?
818 名前:デフォルトの名無しさん [2007/09/01(土) 08:32:29 ] >>814 手元にExcel無いから自信が無いが、確か "'"+CStr(Cells(1,1)) って書けば正常表示された記憶がある 頭が数値の文字列入れるとExcelって数字で判断しちゃうんだよね、バグというより仕様でもいいんじゃね >>809 も頭にアポストロフィを足してやると正常になるかもよ
819 名前:デフォルトの名無しさん [2007/09/01(土) 08:46:18 ] >>818 訂正 2007/8/31→1931/7/8 って単にアメリカ仕様の mm/dd/yy の形で変換されてるだけじゃん こりゃバグだね
820 名前:デフォルトの名無しさん [2007/09/01(土) 09:25:30 ] VBAで別ファイルにあるワークシートへの参照を そのファイルを開かずに取得するにはどうしたらよいでしょうか? ワークシート上ではたとえば「='C:\ABC\[DEF.xls]Sheet1'!$A$1」などと指定すれば 開いていないファイルのセルを参照できますが、 これと同じような方法で、たとえば Dim hoge As Worksheet Set hoge = ******** のような記述で、開いていないファイルのワークシートを参照するには どうすればいいのでしょうか? よろしくお願いします。
821 名前:デフォルトの名無しさん [2007/09/01(土) 12:32:56 ] 試せばいいじゃん
822 名前:820 [2007/09/01(土) 13:09:10 ] >>821 試す、って何をどう試すのですか?? まさか set hoge = worksheets("C:\ABC\[DEF.xls]Sheet1") とかをやれってことですか? エラーに決まってますが。