1 名前:デフォルトの名無しさん mailto:sage [2007/01/09(火) 11:14:15 ] ・まじめにExcelの機能を追及してみようと思う奇特なひと ・スキルがないのに無理やりVBAの仕事を押し付けられた普通のひと ・VBAなんていまさらやりたくないのに業務で仕方なく使っているひと ・とにかく漏れにこんな仕事まわすなと怒っているひと そんなM$大好きなひとからアンチM$なひとたちまで幅広くカバーするスレです OOoのCalcの質問もOKです 前スレ pc10.2ch.net/test/read.cgi/tech/1054356121/
2 名前:デフォルトの名無しさん mailto:sage [2007/01/09(火) 11:16:39 ] 前スレの pc10.2ch.net/test/read.cgi/tech/1054356121/942 >942 :デフォルトの名無しさん :2007/01/05(金) 11:14:02 >単発質問スレなのに、何故か質問スレと勘違いした奴等が迷い込んできてるだけ >もうすぐ1000だし、単発質問駄スレの次スレを意気揚々と立てちゃうバカも居ないだろうから >もうちょっとで消えるさ に触発されたので勃てた。 今は反省している。
3 名前:デフォルトの名無しさん mailto:sage [2007/01/09(火) 12:32:18 ] ヽ / /⌒\ /ヽヽ|/⌒\ii|\ / /ヾゞ///\\| |/ |;;;;;;|/ハ \| |;;;;//⌒ヽ |;/( ^ω^) >>1 おっおっおっ乙枯ー . |{ ∪ ∪ |;;ヾ.,____,ノ |;;; | |;;;;;| |;;;;;|
4 名前:どうかご慈悲を [2007/01/09(火) 17:29:47 ] dσv/dx +4(kσvtanφ+Cw)/D=γω^2*(Ro+x) 変数はxとσvでこれらをExcelVBAによって倍精度ルンゲクッタ法で解くプログラムはどのようにしたらいいですか?以下の修正部分を教えてください。お願いします。物性値の依存性は無視してプログラムとしてどう修正すればよいか教えてください。 Sub 円筒部() 'Diff. Eq: F(X,Y)= ω^2*(Ro+X)*649.96*Y^0.0959-0.1*(1.1*(1-SIN(38.727*Y^(-0.0204)))*Y *TAN(28.638* Y ^(-0.04))+0.239* Y ^0.5389) 'READ INITAIAL CONDITIONS X = Cells(4, 1).Value: Y = Cells(4, 2).Value H = Cells(4, 3).Value: N = Cells(4, 4).Value L = Cells(4, 5).Value: ω = Cells(4, 6).Value Ro = Cells(4, 7).Value ' For I = 0 To N Cells(I + 7, 2).Value = X Cells(I + 7, 3).Value = Y K1 = H * (ω ^ 2 * (Ro + X) * 649.96 * Y ^ 0.0959 - 0.1 * (1.1 * (1 - Sin(38.727 * Y ^ (-0.0204))) * Y * Tan(28.638 * Y ^ (-0.04)) + 0.239 * Y ^ 0.5389)) K2 = H * (ω ^ 2 * (Ro + X) * 649.96 * (Y + K1 / 2) ^ 0.0959 - 0.1 * (1.1 * (1 - Sin(38.727 * (Y + K1 / 2) ^ (-0.0204))) * (Y + K1 / 2) * Tan(28.638 * (Y + K1 / 2) ^ (-0.04)) + 0.239 * (Y + K1 / 2) ^ 0.5389)) K3 = H * (ω ^ 2 * (Ro + X) * 649.96 * (Y + K2 / 2) ^ 0.0959 - 0.1 * (1.1 * (1 - Sin(38.727 * (Y + K2 / 2) ^ (-0.0204))) * (Y + K2 / 2) * Tan(28.638 * (Y + K2 / 2) ^ (-0.04)) + 0.239 * (Y + K2 / 2) ^ 0.5389)) K4 = H * (ω ^ 2 * (Ro + X) * 649.96 * (Y + K3) ^ 0.0959 - 0.1 * (1.1 * (1 - Sin(38.727 * (Y + K3) ^ (-0.0204))) * (Y + K3) * Tan(28.638 * (Y + K3) ^ (-0.04)) + 0.239 * (Y + K3) ^ 0.5389)) X = X + H Y = Y + (K1 + 2 * (K2 + K3) + K4) / 6 Next I End Sub
5 名前:どうかご慈悲を [2007/01/09(火) 17:31:35 ] dσv/d(x−L) +2(Kσvtanα+2Cw)/{D-2(x−L)tanα}=γω^2*(Ro+x) 同様にこちらでは上に準じてどうすればよいでしょうか?
6 名前:デフォルトの名無しさん mailto:sage [2007/01/09(火) 20:27:08 ] WordVBAに関する質問です(WordにはVBAスレが無いようなので) ExcelとWordの両方でファイルを開く・新規作成時に ある処理hogeを行うようにしたいと考えています。 Excelではアドインファイル(xls)として保存し、XLStartフォルダに置いとけばOKでした。 WORDではテンプレートファイル(dot)を作成し、Startupにおいて試行錯誤してみましたが 起動・ドキュメントを開く・新規作成するのイベントが拾えませんでした。 作成手順等のご指導お願いします。 以下は、Excelのコードです。 Private WithEvents m_App As Application Private Sub Workbook_Open() Set m_App = Application End Sub Private Sub m_App_NewWorkbook(ByVal Wb As Workbook) call hoge() End Sub Private Sub m_App_WorkbookOpen(ByVal Wb As Workbook) call hoge() End Sub
7 名前:デフォルトの名無しさん [2007/01/10(水) 00:13:05 ] 関数全部載ってる本ない? よくあるだろ、「よく使う関数だけしか載ってない」のが。 そうじゃないんだよ、俺がほしいのは辞書のごとき参考書なの!! 勝手に取捨選択するな、使える関数や命令全部見せろっつの!! ショー・ミーダ・関数 だっつうの!!!!!!
8 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 04:10:45 ] っ MSDN
9 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 14:42:25 ] >>7 付属ヘルプに全部載ってるよ。
10 名前:名無し [2007/01/10(水) 15:56:07 ] すみません、excelのVBAでマクロを作っているのですが まず、数値の入った表があります その表の行を組み替えてできる表をみつけるマクロを作っているのですがまったくできる気配がありません 申し訳ないのですが助けていただけませんか?? 例 1 0 0 1 の場合で2行2列の表を見つける 1 0 1 0 0 1 0 1 1 0 0 1 1 0 0 1 の4つできます この例では1行目は10、2行目は01で出来ているのでこれの組み替えでできるのは4つになります
11 名前:名無し [2007/01/10(水) 15:57:34 ] 先ほどの例 1 0 0 1 の場合で3行2列の表を見つける 1 0 1 0 1 0 0 1 1 0 0 1 0 1 0 1 1 0 1 0 0 1 1 0 0 1 1 0 0 1 0 1 1 0 0 1 1 0 1 0 0 1 0 1 1 0 0 1 のようになります わかりにくい説明なのですがよろしくお願いします
12 名前:デフォルトの名無しさん [2007/01/11(木) 07:25:18 ] silver-mealをvbaで書きたいのですが プログラムができません。 どなたか教えてください!!!! よろしくお願いします。 Compute Calclulate THC(k) which is the actual comulative inventory-holding cost for the first k period if d(k) is ordered at the beginning of the first period. Compute TC(k)=THC(k)+C0. Find k*=min{k:TH(k)/k ≦ TC(k+1)/(k+1)}. Renumber the period numbers and repeat from 1 until all N periods are covered. Total Cost =$1260 week 1 2 3 4 5 6 7 8 demand 20 20 30 40 140 360 500 540 order 70 0 0 180 0 360 500 540 ending inbentory 50 30 0 40 0 0 0 0
13 名前:デフォルトの名無しさん [2007/01/11(木) 12:34:40 ] シート開いた瞬間に文字入力ボックスを自動で発生させたいときはどうすればいいのですか 普通にやると、どこかのセルをダボークリッキンとかすることがトリガーになるじゃないですか そういうことを何もせずとも出したい。
14 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 18:04:39 ] Excel VBAに関する質問はここで↓ Excel総合相談所 52 pc10.2ch.net/test/read.cgi/bsoft/1167923180/ VBAとして実行するとしても、Excelの操作に関係ない場合はここで↓ VBプログラマ質問スレ(6.0以前) Part50 pc10.2ch.net/test/read.cgi/tech/1161517193/ 回答が要らないネタの場合はここで↓ ●EXCEL・VBAの教えてスレ Part2● pc10.2ch.net/test/read.cgi/tech/1168308855/
15 名前:どうかご慈悲を [2007/01/11(木) 18:27:01 ] dσv/dx +4(kσvtanφ+Cw)/D=γω^2*(Ro+x) dσv/d(x−L) +2(Kσvtanα+2Cw)/{D-2(x−L)tanα}=γω^2*(Ro+x) 解析的には解けないのでルンゲクッタ法で解きます。 初期条件は(1)がx=0、σv=σ₀、γ=γ₀ (2)のσv、γはx=Lにおける(1)の解 これのEXCEL VBAプログラムをお願いします。 正直時間がないのでどうか今週中にお願いできませんでしょうか。自分ではにっちもさっちも行きません。 この先に進めないと本当に危ないんです。
16 名前:デフォルトの名無しさん [2007/01/11(木) 19:59:28 ] >>15 学校の宿題?
17 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 22:17:56 ] おまえがそんな問題も解けずにそのまま先に進んでしまう方が危ないと思う
18 名前:デフォルトの名無しさん [2007/01/11(木) 22:24:07 ] Excelの命令集 -> ヘルプで完璧 OpenOffice Calcの命令集 は?
19 名前:デフォルトの名無しさん mailto:sage [2007/01/12(金) 05:38:03 ] >>18 OpenOffice Calcの命令集 -> ソース見れば細かい仕様まで確認できて超完璧
20 名前:デフォルトの名無しさん mailto:sage [2007/01/13(土) 03:25:55 ] C#出来たらVBいらん気がする VBAもC#のどっちか選択で書ければいいのに・・・・
21 名前:デフォルトの名無しさん mailto:sage [2007/01/13(土) 22:49:19 ] ヤフーのサイトを使って セルに名入力された名称から株や証券のコードを検索、取得したい データ取得のwebクエリ使うとなぜか関係ないコードを取得してしまう vbaを使ってhtmlをexcelで開いてそこからコードを引っ張ろうと思う shift-jis→url文字列(euc)の変換は上手くいってるのだが Workbooks.Open FileName:=f_name の形式で開くと文字化けしてしまう(urlに渡している文字列が) 楽天はOKだったけどミツウロコはミツウ・然ってなっちまう f_nameの文字列をコピーして ブラウザのアドレスバーに入力すると 正常に検索結果画面が得られる 助けて〜
22 名前:21 [2007/01/13(土) 23:35:12 ] age ttp://quote.yahoo.co.jp/l?s=名称 でその名称を含んだコードが取得できる webクエリの方法かopenする方法 ご存知の方、教えてください
23 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 00:53:01 ] excel VBAでシート上のテキストボックスを全部取得したいのですけど、 worksheets.shapes(i).textboxes で i で ループさせるとどうしてもあるインデックスだけ エラーになってしまいます。 何が考えられますか?
24 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 02:25:28 ] HasTextFrameプロパティ?
25 名前:デフォルトの名無しさん [2007/01/14(日) 12:56:30 ] こんにちわ。 for文なんですが、たとえば for i = 2 to 3 and 5 for j = 1 to 3 strAns(j)= cells(1,i).value next next で、2,3,5がA,B,Cだとして、strAnsにA+B+Cを表示させたいのですが出来ないんです 2,3,5が数値なら出来るのですが、どなたか助けてください。
26 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 14:01:32 ] cells(1,1) range("A1") range(cells(1,1)) は同じセルを指す
27 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 14:37:04 ] >25 文字列を連結するときには”+”じゃなく”&”を使うって事は理解できてるのかな。
28 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 17:29:22 ] >>25 はい。+1は。 表示させたいのは”ABC"なんです。
29 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 17:31:44 ] >>25 書き込みまちがえました &を理解してませんでした。
30 名前:デフォルトの名無しさん [2007/01/14(日) 17:49:15 ] &を使ったら表示できた ↓ 安堵する ↓ by 安藤 ↓ と思ったらアンドゥしてしまいました ↓ ヌあんだと
31 名前:デフォルトの名無しさん mailto:sage [2007/01/15(月) 01:22:31 ] >24 ありがとう。そんなのがあったんですね。 チェックせずに回してた。
32 名前:デフォルトの名無しさん mailto:sage [2007/01/15(月) 20:31:23 ] >>31 excelにはない罠
33 名前:デフォルトの名無しさん [2007/01/16(火) 00:50:35 ] 0から10までの偶数の合計を表示させるには どうしたらいいかわかる人いますか? Sub 合計() Dim intcount As Integer Dim inttotal As Integer For intcount = 0 To 10 Step 2 MsgBox intcount Next End Sub これだと0から10までの偶数が並べられるだけで足されません。
34 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 04:25:46 ] Sub 合計() Dim lngCount As Long Dim lngTotal As Long For lngCount = 0 To 10 If (lngCount Mod 2) = 0 Then lngTotal = lngTotal + lngCount End If Next lngCount MsgBox lngTotal End Sub
35 名前:デフォルトの名無しさん [2007/01/16(火) 10:05:07 ] こんにちは。質問させてぐださい。 アンマネージのC++で作成したDLLを呼び出したいのですが、 VBAでプロトタイプ 宣言する時に、DLLのパスを指定しますよね。 普通、絶対パスか環境変数でPATHの通っているところにDLLを置きますが、 このパスをエクセルファイルを基準に相対パスで指定したいのですがなかなか上手くいきません…。 そもそもこれって可能なのでしょうか? あともう一つ、VBAの参照設定に参照したいDLLを登録しても、結局絶対パスにしなければいけないのは変わらないですよね…。 やりたいことを要すると、 エクセルファイルと同じディレクトリにDLLを置いていれば、 どこにそれらを置いても動作してくれるようにしたいのです。 VBAを動作させる環境はEXCEL2000です。 変なこと言ってるかもしれませんがよろしくお願いします…。
36 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 10:20:35 ] ブックのパスを取得する方法も知らないの?
37 名前:35 [2007/01/16(火) 10:35:20 ] >>36 回答ありがとうございマッスル VBAのコードを実行させたときにブックのパスを取得する方法はわかるんですが、 プロトタイプ宣言時にブックのパスって取得できるんでしょうか?
38 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 10:54:07 ] うん まぁがんばれ
39 名前:35 [2007/01/16(火) 11:34:41 ] Private Declare Function TestSub(ByVal InputPath As String) Lib "Test.dll" As Integer で、TestSubを呼び出す前に ChDrive ActiveWorkbook.Path ChDir ActiveWorkbook.Path をして TestSub("test") で行けました。 ありがとうございました。
40 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 19:17:49 ] For i to 〜〜 Next で、1つの行のセルの値をひとつずつ取得して変数に代入したいのですが、 Forで使っている i をセルの位置を指定する数字として使用するにはどうすればいいのでしょうか? (変数)=Range("A"i).Value や (変数)=Cells(i , 2).Value と試してみたのですがダメでした。
41 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 19:29:40 ] > (変数)=Range("A"i).Value は文法的に間違ってるから当然ダメだが、 > (変数)=Cells(i , 2).Value はB列のi行を取得できるはずだが。 ダメならちゃんとブック、シートも指定してみろ。 それらを表略した場合の動作は、コードを書いたモジュールによって異なるからな。
42 名前:40 mailto:sage [2007/01/16(火) 19:45:06 ] >>41 レスありがとうございます。 やはり Cells(i,2).Value でもエラーが出ました。一応プログラムを載せてみます。 Sub count256() Dim i As Integer Dim a As Integer Dim b As Integer Dim c As Integer c = 0 For i = 2 To 1883 a = Cells(i, 3).Value b = Cells(i, 4).Value If a >= 256 Then If b >= 256 Then c = c + 1 End If End If Next i Cells(7, 1).Fomula = c End Sub ブックとシートの指定はどこでやればいいのでしょうか?
43 名前:40 mailto:sage [2007/01/16(火) 20:07:03 ] すいません、ただたんに変数宣言でInteger と Double を間違えているだけのようです。 エラーがセル指定のところだったので勘違いしていました・・・
44 名前:デフォルトの名無しさん [2007/01/16(火) 22:15:17 ] VBEをVBAから弄るためにはどうすればいいですか?
45 名前:45 [2007/01/17(水) 16:33:10 ] EXCEL-VBAのマクロでソルバーを起動、計算させるコードを書こうと思っています。 (Microsoft Excel 2000) 「参照設定」で「solver.xls」を読み込んだ後、プロジェクトウィンドウ欄に「solver.xla」 が出てきたのでダブルクリックしたのですが、「パスワードを入力してください」というメッセージが 出てきてコードを表示できません。 もともとここをいじらずにVBAプロジェクト上でソルバー起動のコードを書くのでしょうか? 教えてください。
46 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 16:47:52 ] 標準で付いてくるソルバーはワークシート上で使うものであって VBAで使うものじゃないからな。当然コードは非公開。
47 名前:45 [2007/01/17(水) 19:05:33 ] >>45 なるほど プロジェクト上でフツーにコード書いたらソルバー動かせました。 ありがとうございました。
48 名前:デフォルトの名無しさん [2007/01/19(金) 15:50:11 ] どなたかバブルソートのプログラムを教えて頂けないでしょうか? (例えば5つの数字を小さい順に並べ替えるというもの)
49 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 16:06:29 ] >>48 Web上にサンプルコードが転がってるだろ
50 名前:デフォルトの名無しさん [2007/01/19(金) 16:18:56 ] Visual Basicで出力結果をExcelで表示させるプログラムを教えて下さい。
51 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 16:21:57 ] >>50 VBプログラマ質問スレ(6.0以前) Part50 pc10.2ch.net/test/read.cgi/tech/1161517193/
52 名前:デフォルトの名無しさん mailto:sage [2007/01/20(土) 12:32:43 ] どっかの宿題スレで見たぞ マルチじゃないのか?
53 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 23:18:46 ] コンボボックスに複数のセル範囲の値をリスト表示させるには どうしたらいいの? ListFillRangeプロパティに指定しても受け付けてくれない。
54 名前:デフォルトの名無しさん mailto:sage [2007/01/21(日) 23:37:48 ] >>53 AddItemで入れてきゃいいじゃん。 コンボボックスってのは元々コードでアイテムを設定するものだから。
55 名前:エクセル楽しい♪ [2007/01/22(月) 01:22:42 ] ExcelVBAでWindowsMediaPlayer9を制御したいのですが、命令がわかりません。 おわかりになる方はお教えいただければ幸いです。 ◆やりたいこと ユーザーフォームのテキストボックスにテキストを入力して、 「画像表示」ボタンを押すと、テキストに対応する動画像が表示される ようにしたい。 ◆困っていること ユーザーフォーム上でテキストを入力して、「画像表示」ボタンを押した後、 さらに、同じくユーザーフォーム上のWindowsMediaPlayerの画面の「再生」 ボタンを押さないと再生できない。 「画像表示」ボタンを押せば再生できるようにしたい。 ◆状態 ユーザーフォーム上に、「ツール」→「その他のコントロール」で WindowsMediaPlayerを埋め込んでいます。 そして、フォームのコードを下記のように書いています。 Private Sub cbGazouhyouji_Click() 〜中略〜 With main.WindowsMediaPlayer .URL = "C:\XXXXXX\" & XXXX & ".MOV" ←ここまでは正常に動く '.status = "再生中" ←ここが違っているようです End With 中略 End Sub ◆条件 ExcelVBAだけでできることが希望です。他にツールや高度な技術が必要な 場合は、できないということで結構です。
56 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 03:39:32 ] 無限ループになったらどうすればいいですか? タスクマネージャで終了させたらコードが全部
57 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 03:45:55 ] 無限ループさせなきゃいいだべさ 保存してから実行すればいいだべさ
58 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 04:25:20 ] Escキー押してみるといいだよ
59 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 04:49:47 ] Ctrl+Break
60 名前:デフォルトの名無しさん [2007/01/22(月) 16:33:48 ] ボンボボックスってなんですか。
61 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 17:07:51 ] >>55 スレ違い
62 名前:デフォルトの名無しさん [2007/01/23(火) 08:53:19 ] すいません画像の色情報に関して質問なんですが 今はApplication.CommandBars("Picture").Controls.Item(12).Executeを出して 手動で透明にしてから 色情報 = Selection.ShapeRange.PictureFormat.TransparencyColor を出しています。 これを自動で透明にしたいのですがどうやればいいのでしょうか?
63 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 09:26:33 ] >>62 普通に
64 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 18:46:06 ] >>63 Win32APIのGetPixelで解決しました。ありがとうございました。
65 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 01:02:18 ] 初心者すぎる質問ですが; セルの数値を +1 するようなマクロを、マクロボタンに登録して、マクロボタンをクリック する度に、セルの数値を増加させるというようなマクロってどう書けばいいの?
66 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 01:11:42 ] >>65 マクロボタン作って Private Sub CommandButton1_Click() Cells(1, 1) = Cells(1, 1) + 1 End Sub でおk
67 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 01:20:06 ] できました ありがd
68 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 11:49:50 ] ExcelVBAで、TextBoxの中にある文字列をShift+Enterで改行した時、 TextBox内の上の行と下の行との間隔を設定する方法、ご存じの方おられませんか?
69 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 11:56:52 ] >>68 それはTextBoxの領分ではなくRichTextBoxの領分だ ちゃんと目的にあったコントロールを使おう
70 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 13:48:02 ] >>69 解答ありがとうございます。 早速調べてみたのですが、現在の環境WinXP・Excel2000(VBA6)では Microsoft Rich Text Box Controlが無いようです(参照設定の中にありませんでした) 何か他の方法ないでしょうか? お手数お掛けします
71 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 14:13:15 ] >>70 「参照設定」ではなく「その他のコントロール」だぞ いったい何を調べてるんだか┐(´ー`)┌ そこにも無ければ導入すればいいだけの話
72 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 14:49:55 ] >>71 何度もすみません・・・orz 「その他のコントロール」が押せません 何か間違ってますか?
73 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 14:54:18 ] 当然ツールボックスを表示した状態じゃないと押せないけど
74 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 15:00:18 ] なんか次は RichTextBoxでの行間設定はどうやるんですか? とか言い出しそうだな 先に言っておくが、そのくらい調べられない奴はVBA使うな
75 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 15:01:18 ] >>73 フォームをわざと挿入し、ツールボックスを表示したところ 無事その他のコントロールが触れるようになり、RichTextBoxコントロールの追加に成功しました。 本当にありがとうございました!
76 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 15:01:58 ] >>74 行間設定もきっちりできました、ありがとうございました
77 名前:デフォルトの名無しさん [2007/01/25(木) 20:44:26 ] すげー!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 今まで 「エクソーメァクーロ(英語は発音大事)なんか組めてもC++にゃかなわねえんだよ」 と思ってたわけだが、 マクロ組んでやると存外にも仕事場での受けがよい。
78 名前:デフォルトの名無しさん [2007/01/25(木) 20:47:40 ] =(A1,A2) とかするじゃない こげなもんば、大したことなかったい。 が、見てみい。 「ほー!!!!!!!!!!!!!!!!!!!!!!!!!! 便利なもんさ!!!!!!!!!!!!!!!!!」 とか喜んでくれよる。 こらすごか。
79 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 06:41:08 ] 数百個のチェックボックスを一列に配置したとき for i= 〜to 〜文の中で「i」番目のチェックボックスの値を取得するのは どうしたらいいんでしょうか? 例えば for i = 1 to 300 if = 「i」番目のcheckbox= true then cells(i,2).value=cells(i,2).value+1 end if next i というようにしたいんですが ヘルプやらググルやら見てみたんですが 分かりませんでした
80 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 07:47:17 ] >>79 VBならコントロール配列使うところだが、VBAのコントロールではコントロール配列に出来ないので、 連番名(標準のCheckBox1, CheckBox2, …で良い)にしておいてControlsコレクションを使う Controls("CheckBox" & i) イベントも取りたい場合はクラスで疑似コントロール配列を実装する つーか、何百個ものチェックボックスを配置するインターフェイスを見直した方がいいと思うけどね 予測するに、ListBoxを ListBox.MultiSelect = fmMultiSelectMulti ListBox.ListStyle = fmListStyleOption と、「複数選択可 & チェックボックス有り」で使えば済む話なんじゃないの? ListBox.Selected(i)でチェック状況取得できるし
81 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 23:26:09 ] テキストを読み込みたいんです。 123 123 123 123 123 123 123 133 みたいなのは Line #で読めたんですけど 123 123 132 123 123↑123 123 132 123 123↑・・・ こういうデータは読み込めません。↑は何なのか、わかりません。 改行されてないデータはどうしたら読み込めるんでしょう? 検索しようにも↑の記号の読み方がわかりません。お手上げです。
82 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 23:40:22 ] >>81 > ↑は何なのか、わかりません。 お前は解るはずだ。というか調べる手段があるはずだ。 それが何なのかはバイナリエディタで見れば一目瞭然だからな 逆にこっちがわかんねーっつうの。 文字としての↑(81 AA)だってならわかるが、Line #で読めないってことは 81 AA では無いわけで 特殊文字の表現記号ならエディタによって表示が異なるので、お手上げです。
83 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 23:45:40 ] ↑は本当はもっと横につぶれたような形をしており コピーしてペーストすると消えてしまう謎の文字です。 バイナリエディター・・・? 調べてみます。
84 名前:79 mailto:sage [2007/01/27(土) 11:00:26 ] >>80 さっそくの回答ありがとうございます ですがcontrols("checkbox"&i)ではエラーになりました(subまたはfunctionが見つかりません) もしかしてワークシート上に直接配置したcheckboxだとダメですか? 実際には900行×20列の表(900人分顧客データみたいなもの) から今回対象になる人を範囲でえらび(100番目から200番目等) さらにその中から対象から外したい人を最左列に配置したチェックボックス で選択して残った対象者だけで別の表を作成するというようなプログラムを組みたかった のですが、リストボックスの方法だとちと選びづらいです >>つーか、何百個ものチェックボックスを配置するインターフェイスを見直した方がいいと思うけどね おっしゃる通りですね(´・ω・`) 素直に左端に1か0を入力することで判別する方がいいかもです チェックボックス900個も置いたらめちゃくちゃ重くなったし
85 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 11:50:41 ] >>84 シート上ならOLEObjectsコレクションだ objSheet.OLEObjects("CheckBox" & i).Object.Value Shapesコレクションからも辿れるけどね objSheet.Shapes("CheckBox" & i).OLEFormat.Object.Object.Value > 素直に左端に1か0を入力することで判別する方がいいかもです の方法でも、表示形式を [=0]"";[=1]"●" とかにすれば解りやすいし ' A列をダブルクリックしたらチェック反転 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Column <> 1 Then Exit Sub Target.Value = 1 - Target.Value Cancel = True End Sub ' A列を含む範囲を右クリックしたら、その範囲全てのチェック状態を、選択範囲の一番上を基準に反転 Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) If Target.Column <> 1 Then Exit Sub Target.Resize(, 1).Value = 1 - Target.Cells(1).Value Cancel = True End Sub などを使えば、マウスでチェック状態の切替が出来る ●の変わりに☐☑を使うことも可能 Range("A:A").NumberFormat = "[=0]""" & ChrW(9744) & """;[=1]""" & ChrW(9745) & """"
86 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 15:05:41 ] >>81 何らかの制御コードだろ。そのテキストを作った香具師に聞けば? #なんとなく、改行コードの問題な希ガス。
87 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 16:18:50 ] VBAの命令の意味と 記述方法が書いてある辞典的なページってありませんか?
88 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 16:43:58 ] >>87 付属のVBAヘルプ
89 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 02:19:41 ] do Until xxxx <> vbnullstring のときの <>っていうのはどういういみですか =とは違うの?
90 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 02:23:31 ] >>89 w
91 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 02:50:28 ] >>89 =とは逆の意味
92 名前:デフォルトの名無しさん [2007/01/28(日) 09:27:17 ] excelのVBEを開こうとすると、VBEを開けるどころかexcelそのものが閉じてしまいます。 ウィルススキャンをしたところウィルスに感染はしていませんでした。 OS:Windows2000でexcelはexcel2000です。ちなみにwordのVBEは普通に開けます。 どうすれば正常にVBEが開けるようになれば良いのか、よろしくお願いします。
93 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 09:30:28 ] do Until xxxx <> vbnullstring do While xxxx = vbnullstring 同じ意味と考えてもいいですか?
94 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 09:51:59 ] >>92 とりあえずブックを全て閉じた状態で試していないならブックを全て閉じてからVBEを立ち上げろ 同じく、アドインも全て外した状態で試してないなら一度全て外せ それでダメならExcel(Office)の再インストール 上書きインストールではなく一度アンインストールしてから再インストールね それでもダメならOS再インストール まさかこの板に来る奴が再インストール出来ないとか面倒とかは言わないだろ >>93 結果は同じだけど意味は違う
95 名前:92 mailto:sage [2007/01/28(日) 10:01:56 ] >>94 ご返信ありがとうございます! 一応Officeの再インストールは既に行いましたが、駄目でした。 ちなみにVBEのみの起動はどうすればよいのでしょうか? やっぱりOSの再インストールしかないんでしょうかねぇ。。。
96 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 11:28:10 ] >>95 まぁがんばれ
97 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 14:31:36 ] EXCEL2000で イベントプロージャー「テキストボックス名_Change」を作成したいのですが 図形作成→テキストボックスで テキストボックスを作成したのですが 右クリックしてもコードの表示は出ません。(本には書いてあるのですが) 2000だと他の方法にしないといけないのですか 結果として Private Sub TextBox1_Change() をかくようにしたいのですが
98 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 14:36:44 ] >>97 今2000で試したけど、ちゃんと出たよ。
99 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 15:04:36 ] コントロールツールの方だと「プロパティ・コードの表示」がある フォームコントロールの方だと「マクロの登録・コントロールの書式設定」がある イベントが使えるのはコントロールツールの方 右クリックして「マクロの登録・コントロールの書式設定」が出るなら、間違った物使ってるだけ 「プロパティ・コードの表示」も「マクロの登録・コントロールの書式設定」も出ないならPCを窓から投(ry
100 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 15:05:38 ] できましたあああ。ありがとうございます! ですが最終的にこっちの方法を採用させていただきました。 >表示形式を [=0]"";[=1]"●" とかにすれば解りやすいし > A列をダブルクリックしたらチェック反転 >Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) > If Target.Column <> 1 Then Exit Sub > Target.Value = 1 - Target.Value > Cancel = True >End Sub 大変有益なご教示大感謝です
101 名前:79 mailto:sage [2007/01/28(日) 15:06:46 ] ミスッタ_| ̄|〇 上の100は>>85 さんへのレスです
102 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 15:10:48 ] >>98 >>99 できました フォームコントロールの方で書いてましt
103 名前:102 mailto:sage [2007/01/28(日) 15:11:19 ] ありがとうございました 。
104 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 18:28:12 ] vista.crap.jp/img/vi6997563313.jpg
105 名前:83 mailto:sage [2007/01/28(日) 19:38:04 ] 矢印の正体はLFってやつでした。chr(10)とやらなんやら なるほど・・・CR+LFじゃないとダメ・・・ まだ読み込めないけど、手がかりはつかめたんで頑張ってみます。
106 名前:デフォルトの名無しさん [2007/01/28(日) 21:47:19 ] 2007ってデフォルトフォーマットではマクロは保存できないんだな、店頭デモ機で試してみたんだが VBAは後方互換で残ってるだけなの?
107 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 00:23:36 ] >>106 オプションで開発タブをリボンに表示するにチェックを入れると使えるよ
108 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 15:41:15 ] べき算って 2の2乗=4 3の3乗=27ってことですか?
109 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 16:32:45 ] 冪乗とはいうけど冪算とは余り言わない希ガス。
110 名前:デフォルトの名無しさん [2007/01/29(月) 21:56:03 ] 今ExcelのマクロはほとんどVBAになっちゃってるけど、ブックにシートを追加するときに Excel4.0のマクロシートが残ってることがわかる。やってみたいけど、誰かマスターする 方法おしえてくれないかな?解説書は売り切れてるしネットでも見当たらない。せっかく 残ってる機能だから眠らせておくのは惜しい。
111 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 22:29:47 ] 2列のセルの文字列を一つにすることは可能? セルA セルB 桃 太郎 =桃太郎
112 名前:デフォルトの名無しさん [2007/01/29(月) 22:54:34 ] >>111 可能だ。=CONCATENATE("桃","太郎")とすればいい。 セルA=桃、セルB=太郎なら、=CONCATENATE(セルA,セルB)でもいい。 セルが3つ以上でもやり方は同じだ。
113 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 00:00:45 ] >>112 それのどこがVBA? このスレ的にはVBAで応えるべきなんじゃないのか?
114 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 00:51:21 ] Word/VBAの教えてスレはどこ?
115 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 00:53:40 ] ありがとうございます
116 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 16:21:57 ] すみません、ちょっと教えて下さい マクロで、指定したセルにチェックボックスを作ったり、削除したりするには どう書けば良いのでしょう? VBA駆け出しで、全く分かりませんorz
117 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 18:12:08 ] >>116 マクロの記録を録ってみろ その記録されたコードを見てわからなければお前にはまだ早い 精進して出直せってことで
118 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 22:59:22 ] >>116 表示→ツールバー→VISUAL BASIX 出ないことを祈る
119 名前:デフォルトの名無しさん [2007/01/30(火) 23:05:19 ] >>111 >>112 を転用で、 Application.WorksheetFunction.CONCATENATE(セルA,セルB) VBA的に セルA.value & セルB.value 又は セルA.value + セルB.value &だと文字列+数値が可。+だと不可 CStr(数値) + 文字列だと文字列として結合 >116 作るのは>>117 の言うとおり。 ぐぐるなら[OLEObject]もしくは[Shape] 削除はデザインモードじゃないときにやるとエクセルが壊れる。 デザインモードでなら.Deleteとか.Cutで消える。 中途半端だがかんべん。
120 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 23:55:15 ] はじめまして、早速一つお聞きしたいことがあります。 Function関数において最終的に表示される文字列を、 「その関数を使ったセルとは別のセル」に表示させたいのですが どのような式を打ち込めばよいでしょう?
121 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 00:09:06 ] >>120 Sub abc() Dim str As String str = test Worksheets("Sheet2").Range("A1").Value = str End Sub Function test() As String test = "返り血" End Function こういうこと?
122 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 00:37:35 ] ありがとうございます。まさかこんな早くに答えていただけるとは思いませんでしたので驚きました。 よろしければもう一つだけお聞きしたいのですが、任意のセルをそのつど入力し そのセルに表示させたい場合はどうしたらよいでしょう?
123 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 00:56:22 ] >>122 よくわからんのだけども、 任意のセル(入力するセル)の指定方法: @クリック→任意のWorkSheetのマクロを開いて、マクロ書くスペースの左上にある ちっちゃいコンボボックス的なやつの値を[WorkSheet]に設定、そのとなりのボックスの値を [SelectionChange]に設定(ディフォルト) したら、 Private Sub Worksheet_SelectionChange(ByVal Target As Range) End Sub ができるから、ここに Target.value = "返り血" Targetは引数ね。ちなみにThisWorkBookのまくろで同じの作るとすべてのシートに適応される。 Aセルの値→ 上と同じ感じで、左[WorkSheet]右[Change]に設定 Private Sub Worksheet_Change(ByVal Target As Range) End Sub ができるからここに、 If Target.Row = 1 And Target.Column = 1 Then Range(Target.Value).Value = "返り血" End If A1のセルの値にB2とか入れるとそのセルに返り血って入る 弱点はセル以外の値を入れるとエラーになる。克服はできるはず、考えないけど。 Bユーザーフォーム→ ぐぐってちょ。 こんなもんで。
124 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 01:01:51 ] いただいたヒントのおかげで何とかなりそうです。 稚拙な説明にもかかわらず丁寧に答えてくださり本当にありがとうございます。
125 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 10:03:27 ] excelのvbaで松井証券へ自動ログインするプログラムを組んでいるのですが 下のプログラムの最後の objIE.document.frames("CT").document.All("kidouButton").Click で たまにエラーが出ます。エラーの原因は何かわかりますでしょうか。 下記のプログラムは、松井証券へログインし、松井証券の会員ページから ネットストックハイスピードというソフトウェアを起動するためのものです。 Declare Sub Sleep Lib "KERNEL32" (ByVal dwMilliseconds As Long) sub 時間待ち() 'ページの読込が終わるまで待機するための処理。 Do Until objIE.Busy = False Sleep (200) 'CPU負荷軽減のために0.2秒間隔でIEオブジェクトをチェック。 Loop End sub (つづく)
126 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 10:05:56 ] (続き) Sub netstock() Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "https://www.deal.matsui.co.jp/ITS/login/MemberLogin.jsp" call 時間待ち '松井証券サイトのフォームへ、ワークシートに書かれたIDやパスなどのデータを流し込む objIE.document.forms("form").clientCD.Value = Worksheets("松井証券へ自動ログイン").Range("C2").Value objIE.document.forms("form").passwd.Value = Worksheets("松井証券へ自動ログイン").Range("C3").Value objIE.document.forms("form").easyTradeFlg(0).Checked = True objIE.document.forms("form").submit call 時間待ち '松井証券ログイン後、会員ページからソフトウェアを起動するためのページへ移動 Set objFDOC = objIE.document.frames("LM").document For n = 0 To objFDOC.Links.Length - 1 If objFDOC.Links(n).outerText = "ネットストック・ハイスピード" Then objFDOC.Links(n).Click Exit For End If Next n call 時間待ち 'ボタンを押してネットストックハイスピードを起動する objIE.document.frames("CT").document.All("kidouButton").Click End Sub
127 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 14:47:31 ] セルAに入力した Taka Toshi という文字列を taka_toshi というように 小文字化と半角空白にアンダーバーを挿入して変換するようにしたいのですが どうすればいいですか?
128 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 15:21:21 ] Replaceで半角スペースを_に置換して LCaseで小文字化すればいいだけじゃん このくらいならワークシート関数でも出来るし
129 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 22:29:54 ] >>125 理由はわからなそうだけども、 なんていうエラーがでてるのかはとても知りたいのでお願いします。 でも、もしかしたらもしかしたら、 Navigateで読み込み→ 読み込みはじめるより先に Do Untilの条件へ行ってしまい Sleepしない→ 読み込まれる前にクリック かも。 ループの前にSleepを入れてみてはいかかでしょう? 適当で申し訳ない。
130 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 22:30:48 ] さらにごめん。 Navigateで読み込みじゃなくて、 クリックで画面変更だ。
131 名前:デフォルトの名無しさん [2007/02/01(木) 22:55:40 ] 今日初めてExcelでマクロを作ろうとしてみました。 引数を2つ取る関数を作りたいのですが意味不明のエラーが出て 動きませんでした。 Public Sub Test() Test2 (1, 2) End Sub Sub Test2(a As Integer, b As Integer) MsgBox (a + b) End Sub 引数を1つにすると動きます。 どこがおかしいのでしょうか?
132 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 23:27:48 ] >>131 VBAは自分で作った関数を使う際、 引数にかっこをつけてはいかんのです。 ので、 Test2 1, 2 で。
133 名前:デフォルトの名無しさん [2007/02/01(木) 23:48:14 ] call
134 名前:デフォルトの名無しさん [2007/02/01(木) 23:53:32 ] こんばんわ。 質問です。 1 ○○ 0:00 2 ○○ 1:00 3 ○○ 2:00 4 ○○ 3:00 5 ○○ 4:00 6 ○○ 5:00 ・ ・ ・ 25 ○○ 0:00 ・ ・ 49 ○○ 0:00 ・ 73 ○○ 0:00 ・ という、一時間ピッチのデーターがあります。一年分くらい。 それを、毎正時だけ欲しいのです。2〜24、26〜48の行を白紙の行に したいのですが、この説明で分かってくれるかたいますか? ご指導ください。
135 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 00:03:20 ] >>134 出力するシート名は?
136 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 00:10:24 ] > VBAは自分で作った関数を使う際、 > 引数にかっこをつけてはいかんのです。 ハズレ 自作関数の場合ではなく、基本的にSub、Functionプロシージャ(メソッド)を呼ぶ場合、 戻り値を取る場合とCallで呼ぶ場合以外は()を付けない。MsgBox関数の場合だとこんな感じで使う。 [1] MsgBox "test", vbOkOnly [2] Call MsgBox("test", vbOkOnly) [3] ret = MsgBox("test", vbOKCancel) 自作関数の場合でも戻り値を取る場合とCallで呼ぶ場合は()付けなきゃダメだし 自作関数じゃなくても、[1]のように使うときは()付けてはいかんのです。 ややこしいのは、引数一つの関数の場合。 [4] Inc hoge [5] Inc (hoge) Sub Inc(Value As Long) Value = Value + 1 End Sub [4]の方だと変数hogeが+1され、[5]の方だと変化しない。 引数一つの関数をCallを省略し引数に()を付けて呼ぶと、引数は値渡しになる。 基本的に参照渡し値渡しは呼び出される側で指定するので、[5]は殆ど使われない。 意味も知らずに間違って使ってる奴は居そうだけどな。
137 名前:デフォルトの名無しさん [2007/02/02(金) 00:13:03 ] >>135 潮位というシートで作業しています。
138 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 00:21:04 ] >>136 サンクス。職場では恥かかんよう気をつけるよー。 >>137 Option Explicit Option Base 1 Sub testTwo() Dim rng As Range Dim outRng As Range Dim data() As Variant Dim cnt As Long Dim outCnt As Long Set rng = ActiveSheet.Range("B1") cnt = 1 Do While rng.Row <= 10 If rng.Value = "0:00" Then ReDim Preserve data(cnt) data(cnt) = rng.Offset(0, -1).Value cnt = cnt + 1 End If Set rng = rng.Offset(1) Loop Set outRng = ActiveWorkbook.Worksheets("潮位").Range("D1") For outCnt = 1 To cnt - 1 outRng.Value = data(outCnt) Set outRng = outRng.Offset(1) Next End Sub とりあえずD列に出してみた。 別シートに出力の際は潮位のところをそのシート名に変更すればよし、あとそのとなりをA1にするとA列にでる。
139 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 00:25:16 ] ごめん。 Do While rng.Row <= 10 を Do While rng.Row <= 65500 あたりに変えといて。 ちなみに検索する行の最大数。 あと、なにも出力されないようなら、 if rng Value = "0:00" Then の 0:00 の部分をセルに表示されてる値ではなくて、 その右上らへんにある本当の値に変えてみて。
140 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 00:29:36 ] っていうか、 VBAの勉強中だからついVBAで答えてしまったけれども・・・。 セルB1をクリック(選択) データ→フィルタ→オートフィルタ B1に三角がでるのでクリック 0:00を選択 orz...
141 名前:デフォルトの名無しさん [2007/02/02(金) 00:37:36 ] >>140 ありがとうございます。 オートフィルにすると、行が詰まってしまうので、 行間は白紙のまま置いておきたいのですよ。 >0:00 の部分をセルに表示されてる値ではなくて、 その右上らへんにある本当の値に変えてみて。 VBAでは出力されないのですが、もう少し教えてもらえますか。
142 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 00:39:30 ] ここで無限ループ使った回答したら、素人にはブラクラ並の攻撃かもしれない と、ふと思った
143 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 00:47:28 ] こっちのほうが安全じゃない? my_Row= Range("a65536").End(xlUp).Row for i = 1 to my_row 処理 next i
144 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 00:48:48 ] そのままなら、こっちか。 my_Row= Range("a65536").End(xlUp).Row Do While rng.Row <= my_row
145 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 00:52:51 ] >>141 Option Explicit Option Base 1 Sub testTwo() '変数定義 Dim row As Long row = 1 '正午のデータだけ取得 Do While row < 65500 If row Mod 24 <> 1 Then ActiveSheet.Range(Cells(row, 1), Cells(row, 2)).ClearContents End If row = row + 1 Loop End Sub 正午以外を消して空白を残す。 24行ごとに値があること前提だけども…。 手抜きでスマソ、そろそろ寝ようかと…。
146 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 00:59:56 ] >141 追記。 一瞬止まるけども、処理が遅いだけなので。 (>>143 )方式で、 Do While row < 65500 を Dim myRow as Long myRow = Range("a65536").End(xlUp).Row Do While row < myRow にすると早くなりまする。 >>143 >>145 まったくその通りですな。 まだまだ良いやり方のテンプレみたいなのがぱっと浮かんでこないのよなぁ…。 >142 自分のテストでは無限ループしたいほうだいだけどね。 すみません放置します。 おやすみなさい。
147 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 01:03:55 ] どうもでした。ペコリ。
148 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 01:08:35 ] 成功しました。重ねてペコリ。 これで寝れそうです。
149 名前:125-126 mailto:sage [2007/02/02(金) 07:20:11 ] >>129-130 レスどうもです。 出ているエラーの件は、たまにしかエラーが出ないので エラーの内容を良く覚えてないのですが 「サポートされてない」みたいなエラーだったと思います。 do until構文を使う前にもsleepしてみて エラーが出るかどうか、しばらく様子を見てみます。
150 名前:デフォルトの名無しさん [2007/02/03(土) 01:28:07 ] ちょっと暇だったのでVisualBasicのヘルプ全部印刷してみた(両面) ヘルプ最高だな 高い金出してリファレンス買うぐらいならヘルプ印刷しといたほうが幸せだと気付いた つうか手元のリファレンス見たらヘルプ丸写しがあって萎えた
151 名前:デフォルトの名無しさん mailto:sage [2007/02/03(土) 22:06:07 ] そうか〜? 現実問題、リファレンスで一番重要なのは索引なのだけども オブジェクト名やメソッド名とかは印刷したものをアルファベット順に並べればいいとしても・・・ その他は・・・
152 名前:デフォルトの名無しさん [2007/02/03(土) 23:11:21 ] すみません。Vista/Excel2007で Application.Speech.Speak "日本語" をやると、英語なら何の設定もせずに読み上げるんですが、 日本語は読み上げません。 2003では設定すれば「ツール」→「音声」→「[読み上げ]ツールバー」ででたツールバーも 表示させる方法もわからないのですが、 どなたか、お教えいだけないでしょうか。
153 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 00:19:46 ] 新しいものにすぐ飛びつく早漏の癖に 情報的な基盤の無いものを自力で使いこなしていく スキルも無い奴ってのは一番厄介だな 初心者ならシェアが広がるまで我慢汁垂らしながら待ってろよ
154 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 00:21:56 ] >>150 両面印刷コストが20円として、100ページで2000円になる。 1000ページなら2万だし買った方が安くないか?
155 名前:デフォルトの名無しさん [2007/02/04(日) 01:22:42 ] コンピュータを用いた授業をしようと思うんですが、 VBAを用いて中学校数学の何か面白い教材を作ることできないかな??
156 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 01:31:07 ] >>155 あるセルに好きな数字を入れると別なセルに数字が自動的に表示されて その計算方法を推理させるとか。 もちろん数字を変えていくことで推理可能な計算式を考えんといかんよ。 数字じゃなくて論理式でも面白い、ある言葉を入れると別な言葉に置き換えられるとか。 あなたのVBA習熟度がどのくらいか知らないけど。
157 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 01:31:45 ] >>155 「面白い教材」を考えるのは教員の仕事。 お前が思いつけないなら、お前はその程度の教師ってことだ。 考えついた「面白い教材」の実現方法なら手助けしないこともないが 何が悲しくて教員でもないのにガキの嗜好に頭捻らにゃならんのだ?
158 名前:156 mailto:sage [2007/02/04(日) 01:34:02 ] >>157 正直スマンかった・・・
159 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 01:46:55 ] いや、そういう返答は無視でw
160 名前:156 mailto:sage [2007/02/04(日) 01:55:35 ] いや、>>157 は言い方はあれだけど正論 写真屋スレで「キャラ絵描くんだけどどんなキャラがいい?」って聞く奴はおかしいのと同じ
161 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 02:13:03 ] 言ってしまえば > 「面白い教材」の実現方法 だって教師の仕事なのに、それなら手助けしてやるって 言ってる時点で十二分に親切だな。
162 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 02:16:26 ] Excel2007ってVBAの基本的言語仕様は変わってないんでしょうか? 例えばVB6.0のIntegerが16Bitなのが VS2005のVBだとIntegerが32Bitになってるみたいな
163 名前:155 [2007/02/04(日) 02:45:37 ] 私は数学教師ですが、VBAは全くといっていいほどの初心者です。 データから平均を出したり、総合得点を出して表示させるぐらいしか できません。 実現方法よりもどういったことができるかがよくわかっていないのです。 VBAにかなり詳しい方々が集まっているようなので、ご意見を参考に させていただきたかったのですが、予習をしてから出直してきます。 すいませんでした。
164 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 03:08:23 ] >>163 藻前は本当に教師なのか? 数学の分からない厨房は数学をイメージできない 数値なんて表示させても糞の意味もない パソコンで学習させるなら、イメージを表示させてやる方がいい つまり、関数グラフとか図形を使いこなして表示させろってこった
165 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 03:12:32 ] >>164
166 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 04:52:17 ] >>163 エクセルVBAで色々できるよ。外部アプリケーション、例えばインターネットエクスプローラーの制御も出来るよ。 工夫すれば、それなりにエクセルVBAでゲームを作ることもできて エクセルVBAで作られたゲームのサンプルプログラム集とかも発売されてるよ。
167 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 04:59:10 ] つうかさ、パソコン関係って何が出来るかって聞いていたら全然先に進めんぞ 自分は何がしたいって目的が最初であって、それを実現するにはVBAを選択するとか 他のモノを選択するとかすべき
168 名前:デフォルトの名無しさん [2007/02/04(日) 11:04:19 ] パソコンクラブでも作ってマニアな中学生に教えてもらえ 学習曲線は残念だけど物好きな中学生には勝てん 先生側は「教育の技術」で中学生と勝負しろよ ExcelVBAは開発環境と実行環境の距離が近くていい材料だと思うけどね
169 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 11:47:54 ] >>163 子供が見て分かりやすいのは物理シミュレーション やはり目で見て動くと分かりやすい。 普通に教科書レベルの加速度とか落下だけでも結構面白い物が作れる ExcelでもShapeやUserFromの座標を指定できるわけで 日本のApple本社に学校の旅行で行った時に、 なんてソフトか忘れたけどBasic風の記述言語で 「初期値を設定してボール(カエルだったかも)をジャンプさせて、落ちてきたて跳ねる」 ってプログラムが課題だった ついでに速度や高さも表示する 設定値を間違えると果てまで飛んで行ったりして面白かったが。 数学なら幾何系とか確率系とかも分かりやすいかも
170 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 11:50:05 ] 計算問題を自動で作って答えあわせをするコードとか 100マス計算とかできるんじゃない? でもそういうなのはネットを探せばいくらでも出てくるような気がする。
171 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 12:30:10 ] >>170 数学を図式化して理解しやすくするのは良いが それは駄目だろ、餓鬼に頃は紙に文字を書いて計算しないと馬鹿になるぞ
172 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 12:31:00 ] >>170
173 名前:デフォルトの名無しさん [2007/02/04(日) 14:19:00 ] あるExcelファイルを日付が変わったら自動起動させるようにするには、 どんな感じで実現したらよいのでしょうか・・? 日の定型処理をしているのですが、 忘れてしまう事が多々あるので自動化したいです。
174 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 14:53:15 ] >>173 そんな曖昧な条件でどうしろと? 「あるExcelファイルを日付が変わったら自動起動」という条件だけなら OnTimeで0:00にブックを開くプロシージャを呼ぶだけだが、実際にはOnTimeが使える 状況では無いだろうし、ブックを開くのも「日付が変わったら=0:00」では困るのでは? 条件はエスパー以外の第三者にも伝わるように、日本語できちんと書こう。
175 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 15:00:57 ] 多分タスクでOK。つまり、VBA云々ではなくWindowsの使い方の問題。
176 名前:デフォルトの名無しさん [2007/02/04(日) 16:00:52 ] excel4.0専用のスレが見当たらないのでここで失礼します。 excel4.0のマクロって最近のexcelでも当時と同じように記述できるの? なくなったマクロ関数や文法の変更なんかはないのかな? たとえば『=select(シート名!R[1]C[1])』と記述して実行すると、 目的のシートのアクティブセルではなくマクロシートのselect関数が 記述してあるセルから1行下で1列右のセルを選択してしまう。 これはexcel側の仕様変更によるものじゃないよね? もし記述の間違いによるものだったら正しい書き方を教えて。
177 名前:173 mailto:sage [2007/02/04(日) 19:26:01 ] >>174 すいません。今週末から勉強を始めたので理解が足りないかもしれません。 Webクエリを用いてあるHPの表データを取得し統計処理をしています。 統計処理はそのExcelファイルを起動すれば実行できるよう実装済。 そのHPの表データは00:10頃に日々更新されているので毎日実行したいです。 そこでこの時間がきたら自動的にExcelファイルを起動する方法は、 どうやるのかなと質問してみました。 よくウイルス等で特定の時間が来たら挙動するようなものもあるし、 出来ない事はないなだろうと。 実行条件は時間以外にも色々ありますがFlagや分岐をつけたりすれば、 何とかできるだろうという事で今回は質問しませんでした。 Googleで「VBA 自動起動」等と検索しても条件が悪いらしく、 上手く引っかからないのでキーワードだけでももらえればと思いました。 これ以上は上手く説明できません。ごめんなさい。 >>175 あっありがとうございます。 VBAではなくそんな方法だったんですね。 書き込み後の検索中にAccessで似たような質問にヒットした時、 APIでスケジュラーに・・なんて記述があったので、 関係あるのかと思っちゃいました。
178 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 21:35:03 ] >>177 スタートボタンから、ヘルプとサポートをクリック、テキストボックスに at っていれてみ。 出てくるから スレ違いな話になってしまうんでこれでやめるけど。
179 名前:デフォルトの名無しさん [2007/02/04(日) 22:14:27 ] 誰か教えてください。 仕事で ある一定の条件を満たすレコードを足していくプログラムをかいたのですが、数字がおかしくなります。 例えば、足す数字が15.1 80.6 30.4となると出た数字が126.100015239みたいな数字になります。 これはなんでなんでしょうか?
180 名前:デフォルトの名無しさん [2007/02/04(日) 22:43:27 ] 小数点の演算というのは、CPUの仕組み上誤差が出るものなのだ。 仕組みや理由についてはは、「浮動小数点 誤差」とかでググるとそれっぽい解説のされてるとこがでるのでそこで確認してください。 Excelのシート上で、その見た目をどうにかしたければ、セル書式の設定で小数桁数1桁だかなんだかにすればよいです。
181 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 23:35:39 ] 浮動小数点演算をIF文なんかで条件処理する場合 =つかっちゃ駄目なんだよなぁ
182 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 01:29:53 ] 基本的に割り算もだめですね
183 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 08:09:20 ] 整数値の割り算の場合は/でなく ¥(商) Mod(余り)を使えばなんとかなる
184 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 10:48:46 ] いま正規表現の検索フォームを作ってます 検索対象をusedrangeで取得してfor eachでまわしてます。 これで動作は問題ないのですが、対象が多いと時間がかかってしまいます。 そこで、rng=usedrangeと配列に代入して高速化しようとして問題にぶちあたりました。 配列に代入されるのがValueっぽいので、 セルに10:00の様に時間や日付が入っている場合 longになるので検索文字が10などと一致しません。 usedrang.textとして代入すると空になってしまいます。 配列に代入された文字の表示形式を調べて変換することも考えたのですが、 現状と大差ない感じがします。 シート上に表示されている値をまとめて配列に代入する方法か代替案がありましたら ご教授おねがいします。
185 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 10:53:50 ] クエリー
186 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 11:05:11 ] txt→CSV変換でなにか、いいサンプルコードないですか? 入力ファイル:oder.txt 出力ファイル:任意.csv csvに出力する時、元のtxtから不要データの排除と任意条件での集計 VBAかVBSで出来そうと思いいろいろ本読んで見たけど いかんせんCobolerなので、よくわかっとりません
187 名前:デフォルトの名無しさん [2007/02/05(月) 11:09:25 ] 元のテキストファイルのフォーマットはどのようなものですか? 固定長?
188 名前:デフォルトの名無しさん [2007/02/05(月) 11:36:51 ] Public Sub TextToCSV(ByVal pInPath As String, ByVal pOutPath As String) Const C_DELIM As String = "," '区切り文字 Dim s As String:Dim s2 As String:Dim ss() As String Dim fnoIn As Long: Dim fnoOut As Long 'ファイル開く fnoIn = FreeFile: Open pInPath For Input As #fnoIn fnoOut = FreeFile: Open pOutPath For Output As #fnoOut 'ファイル終了まで繰り返し Do While (EOF(fnoIn)) '1行読み出し Line Input #fnoIn, s '特定のバイト位置に区切り文字を入れた文字列を作成する。 'イメージ000001111122222⇒00000,11111,22222 s2 = Mid(s, 1, 5) & "," & Mid(s, 6, 5) & "," & Mid(s, 11, 5) '区切り文字が入った文字列をSplitで配列に出力 ss = Split(s2) '各要素のチェックをする If ss(0) = "99999" Then GoTo LOOP_NEXT 'ここまで来たら大丈夫のようなのでカンマ入り文字列(s2)CSVに出力する Print #fnoOut, s2 LOOP_NEXT: Loop Close #fnoIn: Close #fnoOut End Sub
189 名前:デフォルトの名無しさん [2007/02/05(月) 11:37:36 ] あータブとか消されてしまうのか。見づらいな。
190 名前:186 mailto:sage [2007/02/05(月) 15:09:56 ] >>187 固定で102byteです。 得意先がいい加減で、仕様も手探り状態なもので(泣 >>188 ありがとうございます。 このコードを参考にして、試行錯誤してみます。
191 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 17:01:11 ] >>190 得意先に仕様書無いと作れないと言えばいいじゃん。
192 名前:186 mailto:sage [2007/02/05(月) 18:04:31 ] >>191 言ったよ゚・(つД`)・゚・ 普段もらっている受注データとは別のもので。。。 特殊なパターンで、これしか渡せないと言われた。 txtデータと口頭で言われた項目(どこまでが**で**byteで、とか)だけ。 結局、自分たちで解析するしかなくて。。。 ホストのマスターに落とす必要ないのでVBSかAccessの類で出来ないか 考えてたんです。 ちなみに得意先はホ●ダ技研鈴鹿工場です バイクも車もホ●ダだが、こういう体質は好かん!
193 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 18:10:10 ] 大丈夫、他も似たようなもんだ。
194 名前:デフォルトの名無しさん [2007/02/05(月) 20:11:48 ] >>180 >>181 >>182 >>183 激しく感謝です。やっぱだめなんですね・・・^^;
195 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 21:04:29 ] >>194 つか<、>で範囲チェックすりゃいいじゃん
196 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 21:09:03 ] >>195 それはやっちゃダメ 結果的に同じでもコード的に意味が違ってしまう つまり可読性を損なう
197 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 21:18:55 ] >>196 どうしても出来ないときは いいじゃんコメント書いとけばいいんだから 全部そんなプログラム組んじゃいけないけど
198 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 21:20:09 ] 後は10とか100でかけて整数値にするかだな
199 名前:184 mailto:sage [2007/02/05(月) 21:59:21 ] >>185 俺にたいするレスと受け取っていいんですよね? 色々検索して ttp://www.microsoft.com/japan/technet/scriptcenter/resources/officetips/jun05/tips0607.mspx を参考にしてテストしてみたんですが、 やっぱり時間とかはきちんと取得できないんですけど、 (セルに10:00といれておくと0.5になる) これじゃないんでしょうか? 申し訳ないんですが、検索キーワードなど教えていただけると 助かります。 いや、助けてください
200 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 22:41:49 ] Dim tm As Date Dim buf As String tm = Cells(0, 0) buf = Format(tm, hh:mm") これで普通の文字列になるがな
201 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 22:42:29 ] buf = Format(tm," hh:mm")
202 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 22:45:10 ] 更にtmだけでも応用すりゃ検索もできる
203 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 23:08:56 ] >>200-202 おまえ、バカだろ。文字列にする方法なんてこの際問題じゃない。そんなの簡単に解る。 君のやり方で文字列化するなら、その前にその値が元々どういう表示形式で表示されていたか判断しなきゃならないんだよ。 そして>>184 に > 配列に代入された文字の表示形式を調べて変換することも考えたのですが、 とあるから、君の考えた方法は既に変わりきってる上で、表示形式をいちいち調べて文字列に変換してたら ValueではなくTextプロパティをループで読むのと大差ないってこった。
204 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 23:14:58 ] >>203 いや >>10 :00といれておくと0.5 と言う単なるヒントだ、そのまま使ったら馬鹿だが
205 名前:デフォルトの名無しさん [2007/02/06(火) 00:15:27 ] 10:00といれておくと0.5になるなら 逆に検索値を時間の場合10:00なら0.5にすりゃいんじゃねぇ?
206 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 00:35:33 ] それだと時間じゃない0.5もヒットするわけで
207 名前:デフォルトの名無しさん [2007/02/06(火) 01:07:40 ] データベース使っても結局Value値がセットされると・・・ 0.5でヒットしたらセル見にいって属性しらべたら? 少しはマシかも、0.5とかいっぱいあったら終わりだけど
208 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 01:23:47 ] Findじゃ遅いの?
209 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 01:27:24 ] findじゃだめなんだよ
210 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 01:32:58 ] あとはクエリ使って、ここで答えでないんなら データベース関係のスレで聞いてみたら?
211 名前:184 mailto:sage [2007/02/06(火) 01:35:12 ] 色々なレスありがとうございます。 最初の書き込みが携帯からで、内容をはしょりすぎて誤解があるようなので再度書き込みます。 A列)日付 B列)曜日 C列)作業名 D列)開始時刻 E列)終了時刻 F列)処理時間 G列)備考 が入っている複数のシートから正規表現で検索をしたいと思っています。 今の簡単なコードを書くと Set reg = CreateObject("VBScript.RegExp") With reg .Pattern = strPattern .IgnoreCase = True .Global = True end with For Each sh in Thisworkbook.Sheets For Each rng in sh.UsedRange If reg.test(rng.Text) Then 検索文字列が見つかったときの処理 Debug.? "[address]" & rng.Address & " [text]" & rng.Text & " [Formula]" & rng.Formula End If Next Next といった流れなのですが、検索対象が大量にあり処理に時間がかかってしまいます。(対象30万件で5分くらい) そこでFor Each rng in sh.UsedRangeをやめて、rng = sh.UsedRangeのように 配列にして、検索しようとしたところ、日付や時間(表示形式は[h]:mm)がLong型になるため srtPattern = "10" などに10:00などが該当しなくなります。 rng = sh.UsedRange.Formulaは代入がうまくいくのですが、rng = sh.UsedRange.Textはできないようです。 列ごとに時間や日付が入っているなら、そこだけ変換すりゃいーだろ、と言われそうですが 列がずれた場合や新たに項目が増えた場合を考えて、決め打ちで変換するのは出来れば避けたいと考えています。 説明下手ですいませんが、高速に処理する方法がありましたらご教授お願いします。
212 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 01:39:00 ] 件数多いなぁ、確実にデータベース使った方が良いと思うよ 漏れはやり方わからんが
213 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 01:42:57 ] >>列がずれた場合や新たに項目が増えた場合を考えて 列のセルに名前付けりゃいいんじゃないの?
214 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 01:56:50 ] > 列がずれた場合や新たに項目が増えた場合を考えて、 2行目(実データの1行目)の表示形式に合わせるって手もある 30万回表示形式取得したら相当遅くなるだろうが、列数分(現状7回)だけなら殆ど気にならないだろ
215 名前:たのんます [2007/02/06(火) 02:00:54 ] エクセルに関する質問なんですが 統計数字データをグラフに変換して、統計データによるグラフを作成する際に 統計データの始点と終点を同じにして、重ねて比べられるようなグラフにしたいのですが 統計データの量が、比較したいAとBでは異なるため、 始点終点を同じにして、重ねて比べることができません。 何か関数とかその他の方法で、 違うデータ量のものを重ねて比較する方法はないでしょうか?
216 名前:184 mailto:sage [2007/02/06(火) 02:08:44 ] 書き忘れましたが、正規表現を使いたい理由は作業名が入力者により、まちまちなのでまとめて検索したいからです。 誤)日付はDate型ですね。すいません。 0.5は12:00でした。すいません。 いま>>199 のリンク先のコードを改良してテストしてみたら、 10:00とかはちゃんと取れますね(表示10:00→取得値10:00:00でした) ただ24時間を越えるとダメみたいです(表示28:00→取得値1900/01/01 4:00:00でした) 日付も表示が1月1日でも2007/01/01でした。 何か指定する方法があるのかもしれませんが… >>208 Findって正規表現使えましたっけ?調べてみます >>210 なにぶんADOとか初めてなんでもう少し ttp://support.microsoft.com/?kbid=257819 とかを見て勉強してみます。 >>212 俺もそう思います >>213 名前を定義なども考えましたが、名前=範囲な訳で新規に項目が増えた場合にはコードを追加し 範囲別にコードを書かなければいけないので、試してません。 条件分岐で範囲(名前)別にコードを書く必要もないかもしれませんが、 ただでさえ件数が多く時間がかかるので、極力条件分岐などの処理をいれたくないので。 >>214 それは考えつきませんでした。試して見たいと思います。 色々ありがとうございました。自分でも試行錯誤してみようと思います。
217 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 02:16:11 ] >>216 Date型 は日付と時間一緒ですよ(小数点以下が時間) >名前を定義 範囲で名前付けるんじゃなく、1行目の1セルに名前付けて 呼び出せば行位置と列位置が分かる 列位置分かればなんの行か分かるでしょ
218 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 02:19:39 ] >>217 >名前を定義 と書いていて複数シートじゃ駄目だね・・・
219 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 02:20:11 ] >>215 あるけどマルチしたので教えません
220 名前:たのんます [2007/02/06(火) 02:49:33 ] すいません マルチの意味がわかりました、、、 してはいけないことと知りませんでした。 ただものすごく困っています。 色々調べても方法がなくて、、、 ご存知でしたら、何卒お教えいただけませんでしょうか? 以後こんな事をしてしまわないように気をつけます。
221 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 02:59:27 ] 今回のが教訓だ。ここで教えちゃったら教訓にならない。 「マルチしても謝れば教えてもらえる」程度に思っちゃうだろう。 今回マルチをしてしまった責は、今回答えてもらえないということで負い 以後気を付けることで、以後の質問では突き放されることはなくなる。 まぁマルチをしても、2chで仮初めの礼を言われることくらいしか楽しみのない 哀れな教えたがり君が答えてくれることもあるけどね。
222 名前:デフォルトの名無しさん [2007/02/06(火) 13:58:34 ] VBAでTerminateメソッドって使えないんでしょうか? VBAから起動しているアプリを終了したいんですが Set WshShell = CreateObject("WScript.Shell") WshShell.Terminate ("ファイルパス") と打ち込んでもエラーになっていまいます。 Set WshShell = CreateObject("WScript.Shell") WshShell.exec ("ファイルパス") で起動はできるようですが。 VBAを使って、windows上で起動しているアプリを終了させるには どうしたらいいんでしょうか?
223 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 14:25:54 ] >>222 Win32API使うかWMI使うかだな つーか全然VBAの質問じゃないし
224 名前:222 [2007/02/06(火) 14:34:30 ] え、これVBAの質問じゃないんですか? すいません。 これはAPIのスレに行けばいいんですかね?
225 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 15:09:04 ] VB言語でApplicationオブジェクト(ExcelやWord)を操作するからVisual Basic for Application、略してVBA。 Applicationオブジェクト(Excelではブック、シート、セルなどを含む)を操作しなかったら 例えExcelやWord付属のVBEで実行しようと、VBAの分野の話じゃ無い。 開発環境の方のVisual Basicでやるべき事を、ExcelやWord付属のVBEに持ってきてるだけだ。 VBAはあくまでもマクロ言語なのに、開発環境に匹敵するほど強力過ぎる故にその辺の区別が出来ない奴が多くて困る。 「VBAで」の部分を「VB6.0で」に置換しても通用しちゃうような話は、全部開発環境分野の話だと思ってくれ。 因みに君のレベルならWin32APIよりはWMIの方がいいと思うぞ。 でもどっちにしろスレで質問することばかり考えてないで自分で調べることを考えよう。 どうせWin32APIスレでは言語限定での丸投げ(コード書いてクレクレ)なんて聞いちゃくれないし。
226 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 10:38:35 ] ADOを使用してエクセルのシートをデータベースにセットする場合 各セル毎のデータ形式でなく、全て文字列形式にしてセットする方法があるんでしょうか? (セルを全て文字列形式にするという方法は除いて) もしあるのなら、教えてください。
227 名前:デフォルトの名無しさん [2007/02/07(水) 14:47:01 ] >>221 何をエラそうに講釈たれてんだよ、バーカ。何も教えないくせに態度ばっかしデカいんだよ。
228 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 14:56:05 ] ( ゚д゚)ポカーン
229 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 00:50:04 ] マルチがなぜダメなのかを知っていればあんなに高飛車に 偉そうなことは言わないというのは間違いのない話であるよな。
230 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 01:01:14 ] つうか >>226 の質問はスルーか
231 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 03:03:30 ] if Do While ********* Loop end if こんな感じのプログラムのDoLoopを1秒たったら繰り返すような感じに出来ますか?
232 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 03:36:24 ] >>231 Application.WaitなりWin32APIのSleepなりお好きなように
233 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 17:02:10 ] >>232
234 名前:デフォルトの名無しさん [2007/02/08(木) 20:05:16 ] const aretsul = 1 DATA = "データファイル" Cells(row, aretsul).Text Cellsに「222123,」見たいな感じにデータが入ってるんですが、最後のコンマを消したいんです 最後の一文字を読み込まないようにするにはどうすればいいでしょうか?
235 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 20:31:13 ] > 最後の一文字を読み込まないようにする Value値にも因るが、基本的に不可能。 読み込んだ後で、末尾の1文字を消すなら文字列操作関数でどうにでもなるけどね。
236 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 21:21:27 ] >>234 left(cells(セルA,セルB), len(cells(セルA,セルB)) - 1) こんなんどう?(未テスト。やりたいことは伝わるかと) っていうか上の2行は?
237 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 21:40:45 ] >>235 >>236
238 名前:デフォルトの名無しさん [2007/02/08(木) 21:58:30 ] ごめん、ビジネスsoft板のExcel総合スレで聞いたんだけど、こっちの方がよさげなので、 すみませんがマルチさせていただきます。 以下、コピペですが、エラーを防ぐ原因と方法を知ってる方いたら教えてください。 すみません、VBAのことで質問です。 リンク先のプログラムで、コマンドボタンを押した後に表示されるフォーム(モーダレス)の コマンドボタンを押して処理を実行中にシートをダブルクリックしたりすとエラーで落ちちゃう んですが、これを防ぐにはフォームをモーダルでshowするしかないですかね? 555.sytes.net/up/img/375.zip
239 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 22:35:29 ] >>238 原因不明なのですが、試してみてくれませんでしょうか? ループの前に Application.ScreenUpdating = false ループの後に Application.ScreenUpdating = true スペルミスあったらごめんなさい。
240 名前:238 [2007/02/08(木) 22:46:43 ] >>239 ありがとうございますm(_ _)m 教えていただいた通りにしたらエラーがでなくなりました。 Application.ScreenUpdating = false で画面の更新を一時的に止めてやるんですね。 Formをmodalで表示しなくてもこの方法ならいけそうです!
241 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 01:38:11 ] >>226
242 名前:デフォルトの名無しさん [2007/02/09(金) 01:45:38 ] >>241
243 名前:デフォルトの名無しさん [2007/02/12(月) 10:41:46 ] すみませんが質問です。 ユーザーフォームにテキストボックス若しくはラベルを作り、 そこに文字を電光掲示板のように文字をスクロールさせる事は可能ですか?
244 名前:デフォルトの名無しさん [2007/02/12(月) 10:49:33 ] タイマー作って文字列を更新しろ
245 名前:デフォルトの名無しさん [2007/02/12(月) 11:39:55 ] Alt + PrintScreenで、画面のハードコピーをとって、 エクセルシートに貼り付ける時に、 そのハードコピーの拡大率は100%ですよね。 これを80%の拡大率で貼り付けたい時はどうすればよいのでしょうか? 貼り付けた後に、拡大率を変更するのは面倒なので。 (エクセルシート自体は100%のままで)
246 名前:デフォルトの名無しさん [2007/02/12(月) 12:22:16 ] sub 貼りつけ const ZOOM_RATE AS SINGLE = 0.8 ActiveSheet.Paste Selection.ShapeRange.LockAspectRatio = msoTrue Selection.ShapeRange.Height = Selection.ShapeRange.Height * ZOOM_RATE Selection.ShapeRange.Width = Selection.ShapeRange.Width * ZOOM_RATE end sub どのプロパティ実現できるか分からないときは、マクロの記録を活用すると良いですよ。
247 名前:243 [2007/02/12(月) 17:24:50 ] >>244 なめらかに文字を流したいのですが・・・
248 名前:デフォルトの名無しさん mailto:sage [2007/02/12(月) 17:27:26 ] >>247 ラベルの位置を微調整するとか、自前で文字描画するとか、まぁ頑張って。
249 名前:243 mailto:sage [2007/02/12(月) 17:31:17 ] >>248 簡単にできる方法ってないんですね・・・ 何とかがんばってみます!
250 名前:デフォルトの名無しさん mailto:sage [2007/02/12(月) 18:06:55 ] いや、簡単だろ
251 名前:デフォルトの名無しさん [2007/02/12(月) 18:12:42 ] 質問です。 Office2007 Excelでマクロの記録機能で、テキストボックスを表示して、テキストボックス内に文字を表示するといったマクロを記録しましたが、テキストボックスに関するマクロが一切記録されません。 何か個別に設定が必要なのでしょうか?
252 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 15:53:09 ] そのテキストボックス自分で実装したなら無理じゃね?
253 名前:デフォルトの名無しさん [2007/02/13(火) 19:25:13 ] 質問があります。 たとえばA1:D50までの表がありその中に3桁の数値が入っているのですが、 そのなかに指定した1桁の数値(H1に入力した数値)が(3桁のいずれかに)含まれるセルに色をつけたいのです。 また、関係ないかもしれないですが、表には空欄がある場合があります。 どうしたらいいでしょか。 お力をお貸しください。
254 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 20:07:08 ] >>253 条件付き書式でも出来るが、VBAでやりたいなら単にループ回してInStrあたりでその数字が含まれてるかどうか調べればいいだけじゃん。 第二第三引数は数値渡しても自動で文字列化されるし、戻り値をそのまま条件に出来る。
255 名前:デフォルトの名無しさん [2007/02/14(水) 15:53:03 ] 教えてください! VBAからマクロの記録を終了させたり開始させたりする事って 出来るのでしょうか? Application.CommandBars("Stop Recording").Visible = True strTempBuff = CommandBars("Stop Recording").Controls(1).Caption If Not strTempBuff = "新しいマクロの記録(&R)..." Then '記録中なら停止したい。 xlApp.Application.CommandBars("Stop Recording").Controls(1).Execute '同じErr xlApp.Application.CommandBars("Stop Recording").Controls("記録終了(&R)").Execute '同じErr End If 上記コードで実行すると、マクロ記録中の場合 オートメーションエラーが発生してしまいます。 既にマクロが走っているからでしょうか?
256 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 23:16:03 ] すみませぬが質問です。フォームにラベルを作り、そのラベルにランダムの行数のセルを表示させ、 ちょっと時間をおいてその隣のセルを表示させる、というプログラムを作りましたが 上手いこといきません。アドバイス下さいませ。 Option Explicit Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 'メイン Private Sub userform_initialize() Call 表示 End Sub '表示 Sub 表示() '乱数発生 Randomize Dim 行番号 As Long Dim 乱数 As Long 行番号 = Worksheets("sheet1").Range("a65536").End(xlUp).Row 乱数 = Int(Rnd * 行番号) + 1 Label1.Caption = Cells(乱数, 1).Value Sleep (1000) Label1.Caption = Cells(乱数, 2).Value End Sub
257 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 00:01:44 ] >>256 なにが上手いこといかないのか良く分からないんですが、 きっとエラーになるのではなくて、いきなり表示がCells(乱数,2)の値に なると仮定してレス Private Sub userform_initialize() はFormが表示されるまえに起こるイベントなんで、 表示されたときにはCells(乱数,2)が表示されてしまうと思います。 あとは、 Label1.Caption = Cells(乱数, 1).Value '追加↓ DoEvents Sleep (1000) Label1.Caption = Cells(乱数, 2).Value と、DoEventsを入れないと Sub 表示()の処理がすべて終わるまで 表示が更新されないと思いますよ。
258 名前:デフォルトの名無しさん [2007/02/15(木) 00:30:37 ] アクティブセルに色付けするとき、どう指定するんでしょうか? range("A1").interior.colorindex=36 などという例は見たのですが、特定のセルじゃなく、アクティブなセルとして指定する場合を教えてください。
259 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 00:43:08 ] range("A1")の変わりにActiveCellって書けばいいだけじゃん。 何でそんなことも調べられないの? 「アクティブなセル」でヘルプ検索したらすぐ出てくるのに。
260 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 00:50:17 ] カーソル移動したセルの色変えたいなら イベントと組み合わせて使えばよい
261 名前:258 mailto:sage [2007/02/15(木) 00:59:28 ] >>259 それも試しにやってみたのですが、色が変わらないので間違っているのかと。 ちなみにユーザー定義関数内でやろうとしていて以下のようにしてもoutputはでますが、 色が出ないんです。指定がおかしいのでしょうか? Function color(work) ActiveCell.Interior.ColorIndex = 36 color = "color" & work End Function
262 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 01:18:30 ] >>261 普通にできてしまったのですが…。 Function test() ActiveCell.Interior.ColorIndex = 36 End Function 同じですよね、多分?
263 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 01:25:42 ] >>262 たびたびすみません。同じだと思うのですが・・・。 やろうとしていることは、 ・ユーザー定義関数を作ろうとしていて(ここでいうcolorという関数) ・計算結果がある値をとればセルの色を変える というもので、上述のcolorという関数はそれをおもいっきり簡略化したものです。 やっぱり上手くいかないです・・・ もしかして根本的にわたしが勘違いしているのかもしれません。ユーザー定義関数とマクロは別物ということでしょうか?
264 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 01:27:47 ] 263補足 >>262 さんのを登録後、エクセル上で=test()と任意のセルに入力しても ゼロと表示されるだけで色は変わりませんでした・・・
265 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 01:29:16 ] 引数のworkには何が入る予定なの?
266 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 01:30:49 ] あー、分かった。 セルでセル関数のようにはマクロのユーザー関数は使えないよ。 ツールメニュー→マクロ→color(自分で作ったユーザ関数)を選らんで、 その時点で使うわけ。
267 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 01:30:54 ] >>265 ただの文字列です。
268 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 01:34:30 ] 「セルの計算結果」って言ってるのは、 =SUM(R[-3]C:R[-1]C) ←こういう奴の話を言ってるんだよね? で、このイコールのところに自分で作った関数を入れたいってことよね? 結論から言えば、できないんじゃないかなあ。
269 名前:268 mailto:sage [2007/02/15(木) 01:37:15 ] ごめん! ウソ言ってた。 できたよ。
270 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 01:37:24 ] >>261 > ユーザー定義関数内でやろうとしていて 先に書けよ。 ユーザー定義関数ってのは引数を計算して、式を入れたセルに値を返す物で 書式設定だのなんだのというシート上の操作を行うものじゃないぞ。 だからアクティブセルを取得することは出来るが操作は出来ない。それがユーザー定義関数ってものだ。 指定がおかしいんじゃなくて、やろうとしている事に対してユーザー定義関数を使おうとしているのがおかしい。 取得が出来てることはDebug.Print ActiveCell.Address(0, 0)を入れればわかるだろう。 操作がしたいならイベントを使え。
271 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 01:38:10 ] www.relief.jp/itnote/archives/001873.php
272 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 01:48:01 ] >>268 そういうやつですね。 文字列の長さからいろいろと計算させる予定でした。 結果的にダメっぽいですね。 いろいろとありがとうございました。 >>270 イベントでやるしかないのですね。 >それがユーザー定義関数ってものだ。 名言の匂いがしますね。使わせて頂きます。 >>271 参考になりました。
273 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 01:48:02 ] 265+266+268+269 あとはがんばって〜。寝るわ。
274 名前:デフォルトの名無しさん [2007/02/15(木) 03:47:04 ] Const a = 1 Const b = 2 Const c = 3 Sub main() a1 = 1 b1 = 1 c1 = 1 cells_a = 0 cells_b = 0 cells_c = 0 Do While cells(a1, a).Text <> "" a1 = a1 + 1 cells_a = cells_a + 1 Loop Do While cells(b1, b).Text <> "" b1 = b1 + 1 cells_b = cells_b + 1 Loop Do While cells(c1, c).Text <> "" c1 = c1 + 1 cells_c = cells_c + 1 Loop cells(1, 5).Value = cells_a cells(2, 5).Value = cells_b cells(3, 5).Value = cells_c End Sub このプログラムを短くできませんか?
275 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 04:39:47 ] 配列使うと1/3近くには出来るかも知れないが 速度は落ちるんじゃないかな
276 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 10:09:42 ] >>274 Const a = 1 Const b = 2 Const c = 3 Sub main() a1 = 1:b1 = 1:c1 = 1 With Application.WorksheetFunction cells(1, 5).Value = .Count(Range(Cells(a1,a),Cells(a1,a).End(xlDown))) cells(2, 5).Value = .count(Range(Cells(b1,b),Cells(b1,b).End(xlDown))) cells(3, 5).Value = .count(Range(Cells(c1,c),Cells(c1,c).End(xlDown))) End With End Sub 試してないけど、とかじゃダメなのか?
277 名前:256 mailto:sage [2007/02/15(木) 10:51:13 ] >>257 お答えありがとうございます。説明不足ですみませんでした。 御推察のとおり、1つ目のセルは表示されずに2つ目が表示されてしまっていました。 で、>>257 様の誤解を参考にして色々試したのですが、どうにもうまくいきません。 もう少しだけヒント頂けないでしょうか?
278 名前:sage [2007/02/15(木) 13:13:37 ] >>277 何を試してどうだめだったのか書かないと… とりあえず自分の環境では普通に動く フォームを表示したときに表示したければ UserForm_Activaue()内で Callしてみれば? とりあえず、F8でステップインしながら 動きを確認してみることをお勧めするよ 後はDebug.Printするとか。 ローカルウィンドウで 変数に期待通りの値が はいってるか確認する方法もあるし。 なんにしても情報が少なすぎだと思いますよ
279 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 13:18:21 ] うはぁ あげちった… 携帯からレスするもんじゃないな…
280 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 14:18:22 ] 他人事ながら ×UserForm_Activaue() ○UserForm_Activate() 横レス失礼
281 名前:256 mailto:sage [2007/02/15(木) 16:06:37 ] >>278 ,>>280 またまた説明足らずで申し訳ありませんでした。 で、ご指摘の方法でちゃんと出来ました! 自分の持ってるVBAの本が初心者用のものだったため、 UserForm_Active()とか全然載ってなくて方法が分かりませんでした。 今回はどうもありがとうございました!
282 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 16:27:59 ] VBに高階関数とかってないの?関数に関数を引数として渡したいだけなんだけど。
283 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 16:49:21 ] >>282 AddressOf
284 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 19:07:28 ] >>283 おお、サンクス
285 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 19:31:06 ] ダイアログボックスで入力された年・月にしたがってカレンダーを表示するマクロを作っています。 年・月は文字列として取得、それを日付型にデータ変換して日付型の変数に代入しているのですが、 そこで「実行時エラー'11': 0で除算しました。」とのエラーが出ます。 DateValue関数を使う、日付型の変数を Variant型に変える、を試してみましたが、 結果は同じでした。 文字型の変数を Variant型に変えると、最初に1回エラーが出たあとその後は出なくなりましたが、 カレンダー表示の処理のところで日付を誤認してしまいます。 現在は On Error Resume Next でエラーを抑制して動かしており、 本来の目的であるカレンダー表示はそれで問題なくできておりますが、 可能であればエラー自体出ないようにしたいと思っています。 どこが悪いのかアドバイスをお願いします。 テストコード Sub test() Dim strInput As String Dim datDay As Date strInput = InputBox("年と月を入力してください。(例)「2007 2」") datDay = CDate(strInput) MsgBox datDay End Sub 環境 Mac OS X 10.4.8 Excel 2004 for Mac ver. 11.3(060914) 以上よろしくお願いします。
286 名前:デフォルトの名無しさん [2007/02/15(木) 20:46:35 ] VBAのソースで右側に長くなって見づら苦なってきたのでソースの内容はそのままで改行することってできませんか? 普通に改行するとエラーが出てしまいます。
287 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 21:01:35 ] MsgBox _ "VBAのソースで右側に長くなって" & vbCrLf & _ "見づら苦なってきたので" & vbCrLf & _ "ソースの内容はそのままで" & vbCrLf & _ "改行することってできませんか?" & vbCrLf & _ vbCrLf & _ "普通に改行するとエラーが出てしまいます。"
288 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 21:30:38 ] >>287 Chr(10)じゃだめ?
289 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 21:51:40 ] >>285 テストコードが問題なく実行できてしまったのですが…。 カレンダーに変換してるところのエラーでは?
290 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 22:43:59 ] たぶんロケール絡みだろう。 同じバージョンのWindows&Excelだって、ロケールが違うとCDateやIsDateの動作が変わってくるからな。 とりあえずInputBoxとCDateの間に If strInput = "" Then MsgBox "空文字 or キャンセル": Exit Sub If Not IsDate(strInput) Then MsgBox "日付変換不可": Exit Sub って入れてみな。「2007 2」で"日付変換不可"が出るようなら、ロケールの問題でビンゴだ。 その場合は文字列切り出しで年と月を取得しよう。 "日付変換不可"が出ないにしても、文字列切り出しで解決出来るならそれでいいし。
291 名前:286 [2007/02/16(金) 00:53:59 ] _←これだけで改行できた思い出させてくれてありがとう
292 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 01:11:48 ] ListBoxに値をいれるとClickやChangeが発生しますが、 クリック中に値を変更したい場合とかどうしてますか? フラグもって立ってたら処理しないというやり方で回避してるんだけど なにかほかにいい方法がありますでしょうかね。
293 名前:285 mailto:sage [2007/02/16(金) 01:38:32 ] >>289 , 290 レスをいただきありがとうございます。 テストコードのほうですが、>>290 さんのコードを加えて実行してみたところ、 1回目は「実行が終了しました」とのエラーメッセージが表示され、 2回目は「オーバーフローしました」とのエラーメッセージが表示され、 3回目以降は「2007.2.1」と普通に表示されました。 念のため本来のマクロを On Error Resume Next をコメントアウトして再度実行してみたところ、 1回目は「オーバーフローしました」とのエラーメッセージが表示され、 2回目も「オーバーフローしました」とのエラーメッセージが表示され、 3回目は正常にマクロが実行され、 4回目で「0で除算しました」とのエラーメッセージが表示されました… こちらに書き込む前に何回もテストし、そのときは「0で除算しました」というエラーメッセージのみ 繰り返し出ていたのですが、実行のタイミングによってまるで結果が違ってきているようでもあり、 とまどっています。 >>290 さんのおっしゃっている「文字列切り出し」という方法は、文字列から年と月をそれぞれ別々に取得する ということですね? がんばってコードを書いて試してみます。 どうもありがとうございました。
294 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 10:37:50 ] a = Int(9 * Rnd + 1) b = Int(9 * Rnd + 1) c = a + b これでcの中にaの中に7 bの中に8 が入ってるとして 15じゃなく 78と表示することはできますか?
295 名前:デフォルトの名無しさん [2007/02/16(金) 11:59:19 ] >>294 つなげたいなら、&
296 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 12:20:14 ] ちょwwVB以前の問題だろw a*10+bも思いつかんのか
297 名前:デフォルトの名無しさん [2007/02/16(金) 22:23:14 ] 初歩的な質問でホントにすいません; エクセルのシート上にファイル等から画像を挿入したとします。 ↓ その画像を文字列の背面に持っていく方法がわかりません; 背景に設定する等とは違います; (ちなみに背景も小さい画像で設定すると ビッチリ並んで出てきますが、好きな場所に1個だけ、 とかは出来るんでしょうか?) よろしくお願いします;
298 名前:デフォルトの名無しさん [2007/02/16(金) 22:25:14 ] すいません;スレ違いでした;
299 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 12:04:32 ] 100行まで三行間隔で文字列が入っていて間違って打ってないか確認したいです。 B列、100行までの間の3の倍数のセルに"もげ"って入っていたら次の3の倍数のセルへ 間違っているか、空欄だったらセルを選択した状態で終えてください。 という処理をしたいのですが 相対セルと三の倍数選択する部分の表現でつまづいてしまいました。 一つずつチェックしてこなすにも5000行以上で当て上げ状態です どなたかヒントかVBAのソースを教えていただけないでしょうか よろしくおねがいします
300 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 12:13:16 ] 当て上げ? で、そのチェックはVBAでやるようなことなのか?
301 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 12:54:44 ] B列を削除して割り振りなおした方が簡単じゃないの?
302 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 12:55:01 ] > ソースを教えていただけないでしょうか ソースが欲しいならそういうところに頼めよ ここは丸投げ依頼所じゃないぜ 自分で書こうって気がある奴がヒントを貰いに来る場だ
303 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 12:57:28 ] step 3 じゃだめ?
304 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 13:19:21 ] >>299 100行まで? Sub moge() Dim i As Integer For i = 3 To 100 Step 3 If Cells(i, 2).Value = "" Then MsgBox "B" & i & "は空白ですよ。" ElseIf Cells(i, 2).Value <> "もげ" Then MsgBox "B" & i & "に「もげ」でない文字が入っています。" End If Next i End Sub
305 名前:デフォルトの名無しさん [2007/02/18(日) 13:41:13 ] dim giy as integer a=4937870 b=1.05 s=387 u=100 giy = WorksheetFunction.RoundDown(((a * b) / (s*u)), -1) 上のを実行するとなんでかオーバーフローするんですけど。
306 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 13:47:01 ] しませんでしたけど… 念のためLongにしといたらどーですか?
307 名前:299 mailto:sage [2007/02/18(日) 13:51:43 ] >>304 まさにこれです 変数とかCellsとかforとかすごい勉強なります。 ありがとうございます >>303 最初なんのことだろうと思いましたが、304みてわかりました。step 3。 ありがとうございます。
308 名前:デフォルトの名無しさん [2007/02/18(日) 13:56:43 ] デバッグしてa*bのところにマウスをもってくると、5184763.26454401 という数字が出ます。小数点以下の数字が原因かと思うんですけど。
309 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 14:11:26 ] >>308 それのどこがオーバフロー?
310 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 14:14:16 ] もしかして: 単精度で計算していて精度がでていないという落ち?
311 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 14:25:55 ] aとbがVariantならdoubleと同じ精度で扱えると思うんだが…
312 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 21:49:04 ] フォームのテキストボックスを全部いっぺんに空白にする方法はありますか?
313 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 22:40:09 ] >>312 順番に空白にすればよい
314 名前:312 mailto:sage [2007/02/18(日) 22:44:54 ] いや、そりゃもちろんそうなんですが、 一行で一気に全部いっぺんに空白にしてしまうような命令とかはないかなぁと思いまして・・・
315 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 22:55:43 ] >>314 そんなことしてどーするの? 見た目には変わらないのに?
316 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 23:10:11 ] Me.Controlsに対してFor Eachループ回して If TypeName(objControl) = "TextBox" Then objControl.Text = "" とか
317 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 23:29:42 ] そういう処理をするプロシージャを用意しておいて、そいつを呼べばいい。
318 名前:312 mailto:sage [2007/02/19(月) 10:43:01 ] >>315 自分の作成したフォームのテキストボックスが20個くらいありまして、 それをクリアするのにプログラムが長くなってしまうので 短く簡単にすませる方法はないかなぁと思いまして。 >>316 、317 ありがとうございます。それで試してみます!
319 名前:デフォルトの名無しさん [2007/02/20(火) 00:41:14 ] EXCELで コマンドボタンをクリックすると、Sheet3のA1:A10の内容を、Sheet1のA1:A10にコピーする こんなモノを作りたいのですが Private Sub CommandButton1_Click() Range("A1:A10").Select Selection.Copy Sheets("Sheet1").Select Range("A1:A10").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub こうすると、「Range クラスの Select メソッドが失敗しました」となってしまいます どうすればいいか教えて下さい 「マクロの記録」を使ってしか、マクロ扱った事無いのに 調子に乗って仕事請けてしまって困ってます・・・
320 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 00:58:33 ] >>319 これだけでいいんでない? Private Sub CommandButton1_Click() Worksheets("Sheet3").Range("A1:A10").Copy Worksheets("Sheet1").Range("A1:A10").PasteSpecial Paste:=xlPasteValues End Sub 最後に Worksheets("Sheet1").Activate にしてもいいと思うけど…
321 名前:319 mailto:sage [2007/02/20(火) 01:15:25 ] 解決しました有難うございます 範囲指定の時は Worksheets("Sheet3").Range("A1:A10") としなければいけないのですね
322 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 01:18:36 ] >>321 シート名を指定していないのでSelectが失敗したのではないでしょうか? 範囲指定とは関係ないです。 そういや Worksheets("Sheet1").Range("A1").PasteSpecial Paste:=xlPasteValues でOKでもOKでした。
323 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 01:40:09 ] どうでもいいけど、 シート名変更されると危なっかしいから、 シートのオブジェクト名でやった方が無難。 Sheet1.Range〜以下略 意味が分からんならVBA画面でシートを選択してF4押せ。
324 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 01:50:00 ] ユーザーがSHIFT+クリックで複数のセルを選択するように プログラム上で選択中のセルをさらに動的に増やしたいのですが どうすればいいでしょうか。
325 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 01:51:53 ] どういう風に増やしたいのか詳しく。 Offsetとかでいいならそれで。
326 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 02:12:18 ] OffsetではなくResizeの方が良いのでは?
327 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 03:12:28 ] 飛び地で選択できるじゃないですか? あんな感じで。 2点間を選択してもらって、その間の特定キーワードを含む セルを自動的に選択する機能を作りたいのですよ。
328 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 07:49:42 ] >>327 マクロの記録でctrlキーを押しながら A1とA3を選択。 これで、離れたセルの指定方法は分かるだろ? 後は、定範囲内をFor Eachとかでまわして 該当セルのaddressとるなりして 同じように選択するだけ。
329 名前:デフォルトの名無しさん [2007/02/20(火) 11:06:07 ] Type MyTestType ID As Integer Name As String End Type Sub test() Dim a(3) As MyTestType '中略 i = TypeTest(a) End Sub Function TypeTest(a As Variant) As Integer '省略 End Function とコードを組むと、コンパイルエラーが出ます。 Functionの引数の型宣言で、配列を使うこともできませんが、 どのようにしたら、aをFunctionに渡すことができるでしょうか? よろしくお願いします。
330 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 11:24:55 ] VBAでどうやってコンパイルエラーを出したのか知りたいのだが。
331 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 11:39:42 ] >>329 クラスを使え >>330 メニュー > デバッグ > VBAProjectのコンパイル も知らんのか? >>329 なら普通に実行したってコンパイルエラー出るし。 もしかしてexe吐くことがコンパイルだと思ってるのかな?
332 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 12:08:03 ] >>331 クラスってどうつかえばいいのですか? プロジェクトで挿入からクラスモジュールを挿入して、 Type文を打ち込めばよろしいのでしょうか? それと、ここはsage推奨ですか?
333 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 12:16:50 ] >>332 ===== MyTestClass As クラスモジュール ===== Public ID As Integer Public Name As String ===== EOM ===== ===== Module1 As 標準モジュール ===== Sub test() Dim a(3) As New MyTestClass a(0).Name = "hoge" a(0).ID = 10 i = TypeTest(a) End Sub Function TypeTest(a() As MyTestClass) As Integer Debug.Print a(0).Name Debug.Print a(0).ID End Function ===== EOM ===== こんな感じで。 クラスモジュールの名前がAs 〜で使う宣言型になる点に注意。 > それと、ここはsage推奨ですか? 別に。回答者はageる必要が無いから慣例的にsageてるだけ。
334 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 13:40:38 ] >>333 どうもです。
335 名前:327 mailto:sage [2007/02/21(水) 02:04:24 ] マクロで記録したら文字列で指定してたからどうしたもんかと 思いましたが、addressでセル位置の座標を取れるからこれ使えばいいのかな。 問題は解決したけども、なんかほかにスマートな方法があるなら教えてくだされ。
336 名前:デフォルトの名無しさん [2007/02/21(水) 15:31:21 ] GetOpenFilename で「ファイルを開く」 ダイアログ で左側のデスクトップやマイドキュメントが選べません。どうしてでしょうか? 参照設定で、Microsoft Runtime Scriptingは選択しています。 Office2003, XP Proです。
337 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 15:49:59 ] > どうしてでしょうか? 環境が壊れてるからじゃねーの? とりあえずOSとOfficeを再インストールしてみな。 それとGetOpenFilenameはApplicationオブジェクトのメンバなんで参照設定は不要だし、 Microsoft Runtime Scriptingではなく Microsoft Scripting Runtimeだろ。これはFSOやDictionaryだからな。
338 名前:デフォルトの名無しさん [2007/02/22(木) 15:30:03 ] row = 1 For Each a In IEobj.Document.body.getElementsByTagName("A") If InStr(a.href, "xxx.com/" ) <> 0 Then x = a.href Worksheets(1).Cells(row, 1).Value = x row = row + 1 End If Next a こんな感じのURLなのですが、同じアドレスは二度書き込まない風にできますか?
339 名前:338 [2007/02/22(木) 18:01:47 ] 処理重くなるだけかな 少しぐらい重なってもいいか・・・・
340 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 19:58:29 ] >>338 普通に重複チェックして条件分岐すれば良いだけでしょ。 重複チェックにはいろんな手法があるのでお好きなもので。
341 名前:デフォルトの名無しさん [2007/02/23(金) 22:15:30 ] Dim myValue As Single myValue = 1.0 Charts(1).Name = "Ver. " & myValue としてエクセルのグラフのタイトルに、 Ver. 1.0 と入力したいのですが、Ver. 1 となります。 こういう場合は、どうすれば "1" を "1.0" と少数点付きにできますか?
342 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 22:27:30 ] As String にするか "Ver." & Format(MyValue, "0.0")で
343 名前:デフォルトの名無しさん [2007/02/23(金) 22:52:10 ] >>342 ありがとう!!! できた〜!!!!! ちなみにStringはダメでした。 ほんとにありがとう。
344 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 23:15:34 ] ああ、"1.0"にしないと駄目だろうねw
345 名前:デフォルトの名無しさん [2007/02/24(土) 01:29:23 ] Win2000 SP4ではちゃんと動いていたのにXP SP2に持っていったらエラーにはならないんですけどまともに動いてくれません 主に使っている機能はActiveXのInetです。WEBを取り込んで検索して加工した文字列をエクセルに貼り付けてるだけです。 参照設定は正規表現というやつを使いたくて、MSVBScriptRegulerExpresion1.0と5.5を二つ入れました。 1.0と5.5は両方チェック入れたらまずいんでしょうか?本にはMSVBScriptを参照設定しろと書いてあっただけなので不明です。 あとMS Internet Transfer Control 6.0とMS Internet Controls も参照設定してあります。 Win2000 SP4はVB6.0、WinXP SP2はVB6.0ランタイムが入ってます。 最初から2行あったOption Explicit ?ともう一行は文の意味がわからなかったので消しました。 XPのファイアーウォールははずしてあります。 なぜXPだけで不安定になるのか原因わかりますでしょうか?
346 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 01:33:32 ] うん、わかる
347 名前:デフォルトの名無しさん [2007/02/24(土) 01:37:51 ] ありがとうございます。試してみます。
348 名前:デフォルトの名無しさん [2007/02/24(土) 14:27:41 ] エラーの時にデバッグを選んだ後停止ボタンを押すと、フォームがひらくのですが、コード画面のままで維持できないのでしょうか? その度にいちいちコード画面を選び編集したいコードの行を探さないといけないのはつらいです。
349 名前:デフォルトの名無しさん [2007/02/24(土) 15:09:31 ] '初心者です。 Sub なんでだろう@() Dim あ As Long あ = Worksheets("Sheet1").Cells(1, 1) If あ > 3 Then Worksheets("Sheet1").Rows("1:5").Select End If End Sub 'だと動くのに Sub なんでだろうA() Dim あ As Long あ = Worksheets("Sheet1").Cells(1, 1) If あ > 3 Then Worksheets("Sheet1").Rows("1:あ").Select End If End Sub 'だと動きません。なんでだろう。。。 '親切な方教えてください。
350 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 15:37:02 ] range("1:" & あ)では?
351 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 15:48:27 ] >>349 ×Worksheets("Sheet1").Rows("1:あ").Select ○Worksheets("Sheet1").Rows("1:" & あ).Select ○Worksheets("Sheet1").Range("1:" & あ).Select ○Worksheets("Sheet1").Rows(1).Resize(あ).Select >>350 このコードを書いているモジュールによってはシートを省略しちゃうと正しく動作しないよ。 「Worksheets("Sheet1")」も書くか、「Rows以降を」と添えよう。
352 名前:349 [2007/02/24(土) 15:49:50 ] >>350 ほえ〜。動きました。 なぜだか分からないけど、とにかくこれでやってみます! ありがとうございました!
353 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 16:05:06 ] >>351 あ、RowsのつもりがRangeって打っちゃったよ
354 名前:349 [2007/02/24(土) 16:09:47 ] >>351 とにかくいろいろやり方があるんですね! どうもでした。m( )m モジュールって何?っていう段階なので、すべてがサッパリ妖精なのですが、 とにかく理解もせずに突き進んでみることにして見ます。。。
355 名前:デフォルトの名無しさん [2007/02/24(土) 19:58:05 ] エクセルのグラフの軸の書式設定にある Y/数値軸目盛の最大値のところに初期入力してある値を取得する方法ってありませんか?
356 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 20:22:45 ] 初期値は自動じゃないのか? まぁ、マクロ記録で変更してみりゃプロパティの名前がわかるだろ。
357 名前:デフォルトの名無しさん [2007/02/24(土) 20:35:27 ] >>356 自動です。 自動で入る初期値がほしいんですが、これに関しては マクロ記録でいろいろ試してみましがはわかりませんでした。
358 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 20:53:07 ] >>357 初期値変更するの記録すればわかると思うけど ActiveChart.Axes(xlValue).MaximumScale じゃない?
359 名前:デフォルトの名無しさん [2007/02/24(土) 21:14:35 ] >>358 ありがとうございます。 値の取得ができました。 初期値変更するの記録したつもりだったけど、わからなかったw
360 名前:デフォルトの名無しさん [2007/02/25(日) 14:25:00 ] あぁ〜ん、ユーザーフォームがうまく作れないよぉ〜〜〜ん!! 参考書ばかりが増えていく…
361 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 14:29:14 ] わざわざユーザーフォーム作る香具師って馬鹿じゃね? プログラミング能力の無さをさらけ出してるだけだよ。
362 名前:デフォルトの名無しさん [2007/02/25(日) 16:08:29 ] 馬鹿が馬鹿を笑う、ここはそんなスレでつw
363 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 17:30:50 ] >>361 kwsk
364 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 22:30:07 ] ユーザーフォームを×ボタンをクリックして閉じるときに、 それと同時に上書き保存をしたいのですが 何か良い方法はありますか?
365 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 22:33:26 ] >>364 UserForm_QueryCloseイベントに上書き保存のコードを書く
366 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 02:57:29 ] 動作しないユーザーフォームなら1分もかからずにちゃんと作れるよな。 これすらできないのは才能ないというかなんか根本的におかしい。
367 名前:デフォルトの名無しさん [2007/02/26(月) 04:05:54 ] >>361 の言ってる意味は全然変わらんが >>366 なら分かる
368 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 04:55:40 ] じゃ、>361はこう訂正してみよう。 >わざわざユーザーフォーム作る香具師って馬鹿じゃね? →ユーザーフォーム作るのに苦労する香具師って馬鹿じゃね?
369 名前:デフォルトの名無しさん [2007/02/26(月) 05:03:58 ] >>368 納得した ユーザーフォーム使う使わないは用途によるからな
370 名前:364 mailto:sage [2007/02/26(月) 10:09:54 ] >>365 ありがとうございます!できました! >>361 仕入・納品・在庫調べ等々、自分の仕事では ユーザーフォームないと非常に入力がめんどくさいです。 なので自力で作成しました。 まあ、「市販のソフト買えよ!」と言われればそれまでですが。
371 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 10:34:35 ] >>360 がやろうとしてることと、>>361 ,>>366 ,>>368 が指摘してることに遥かなる距離感を感じるのはなぜだろう。 >動作しないユーザーフォームなら わざわざ動作しないフォームを作る暇人っているんだな。
372 名前:デフォルトの名無しさん [2007/02/26(月) 11:47:50 ] >>370 まさかそれをアクセスでなくエクセルでやってるとか・・・
373 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 11:58:21 ] Excelが伝票というケースもあるだろ。Accessの仕事しかやったことないのか
374 名前:デフォルトの名無しさん [2007/02/26(月) 20:15:30 ] Cellの中に文字列があって、その文字列の長さを取得するにはどうすればいいか教えてください。 文字変数の長さの取得方法がわかりません。
375 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 20:27:35 ] >>374 Len 文字変数の長さって何?
376 名前:デフォルトの名無しさん [2007/02/26(月) 20:40:36 ] >>375 説明がまずかったですね たとえば、 a As String b As Integer a = "ABC" または a = Range("A1").Valueとして、このA1セルに"ABC"が入っているとします。 それで、 b をこの a の中に入っている文字列の長さの値を入れたいわけです。この場合は3になるわけですが どうすれば b = 3 とすることが出来るかがわかりません。
377 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 20:46:05 ] >>376 答え書いてあるやん
378 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 20:55:51 ] b = Len( a ) まあいろいろ期待どおりに動作しない場合も多いがね。 b = LenB(a ) 内部がEUCなのでバイトカウントでも(ry
379 名前:デフォルトの名無しさん [2007/02/26(月) 20:55:59 ] >>377 すいません。見落としていました。 >>375 ありがとう はぁ、なんか疲れてるみたい・・・
380 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 21:02:18 ] 「文字列の長さ」を「文字変数の長さ」と言い換えたのは 意味があるのかと…思ったわけです。 深く考えすぎたか_| ̄|○
381 名前:デフォルトの名無しさん [2007/02/28(水) 15:39:38 ] マルチすみません。 情報が少ないですが以下の現象で困っております。 環境 WindowsXP Excel2003 エクセルのVisual Basic Editorで社内作成のコントロール(VB6にて) をはりつけ、その後エクセルを終了すると必ずメモリがReadに・・・ のエラーがでてしまい困っています。あと2時間ほどで調べないといけない のですが。。。誰かご教授お願いします。
382 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 15:49:07 ] > 社内作成のコントロール の問題を聞かれても、どうにもならんわな。 聞きたいなら最低限そのコントロールのソースを晒せ。 それが出来ないなら自社内で解決しろ。
383 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 16:00:10 ] 社内掲示板で2ちゃんねる使ってるなんてユニークな会社ですねー
384 名前:デフォルトの名無しさん [2007/02/28(水) 17:21:49 ] dim page as long URL="http:xxx.com/&page="+cells(x,x)+"&main= だとエラーは出ないんですが URL="http:xxx.com/&page="+1+"&main= や URL="http:xxx.com/&page="+page+"&main= だと型が一致しません13Errorとでるのですが、なぜでしょうか
385 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 17:27:54 ] URL="http:xxx.com/&page=" & 1 & "&main=" URL="http:xxx.com/&page=" & page & "&main="
386 名前:デフォルトの名無しさん [2007/03/02(金) 02:08:55 ] objIE.document.forms.Item(0).ID.Value = "ID" objIE.document.forms.Item(0).PASS.Value = "PASS" objIE.document.forms.Item(0).submit().Click これで自動ログインさせたいのですが、ログインするこそはするんですが、 objIE.document.forms.Item(0).submit().Click の行をデバックで過ぎると オブジェクトが必要です。(Error 424) と言うエラーが出てしまうのですが、なにか解決方法はありませんか
387 名前:デフォルトの名無しさん [2007/03/02(金) 02:12:50 ] すみません、書き込んでから気づきました。().Clickが不要だったんですね('A`) スレ汚しすみませんでした
388 名前:デフォルトの名無しさん [2007/03/02(金) 06:55:43 ] 毎日入力するデータを別シートに自動保存して 何日か溜まったら分析したいのですが 例) 3月2日に "Sheet1" の A10 〜 A20 に整数のデータを入力する コマンドボタンをクリックすると そのデータが "Sheet3" の 3月2日の列 ( AH10 〜 AH20 ) にコピーされる 翌日、3月3日に "Sheet1" の A10 〜 A20 に整数のデータを入力する コマンドボタンをクリックすると そのデータが "Sheet3" の 3月3日の列 ( AI10 〜 AI20 ) にコピーされる また翌日・・・ という感じに、Sheet1の同じ範囲のデータをSheet3に、日にちごとにずらしてコピーしたいのですが どうすれば良いのでしょうか?教えて下さい