1 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 19:31:39 ] ExcelのVBAに関する質問スレです 質問前に 【 >>2-3 】 あたりを良く読むこと 前スレ pc11.2ch.net/test/read.cgi/tech/1197448064/ ★1 質問テンプレ(雛形)は用意しませんが、OSとExcelのバージョンは必ず書きましょう。 ★2 ExcelのVBA以外の部分に関する質問はNGです。 但し、VBA無しでも出来ることだが、あえてVBAでやりたいって物に関してはOK。 ★3 ExcelのVBE(Visual Basic Editor)を使うとしても、VBAの分野以外に関してはスレ違いです。 VBAとは、『Visual Basic for Application』の略で Application ├Workbooks |└Workbook | ├Worksheets | |└Worksheet というApplication以下のオブジェクトを、VB言語で操作するものを指します。 例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、 セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。 ★4 とりあえず、Excelのインスタンスを作らずにVB6で出来ることは全てスレ違いだと思ってください。 ★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。 ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。
2 名前: ◆EXCEL8qygs mailto:sage [2008/03/11(火) 19:48:40 ] とりあえず死兆星おいときますね。 ☆ ☆ ☆ ☆ ☆ ★☆ ☆
3 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 22:09:44 ] 過去スレ 01 pc11.2ch.net/test/read.cgi/tech/1054356121/ 02 pc11.2ch.net/test/read.cgi/tech/1168308855/ 03 pc11.2ch.net/test/read.cgi/tech/1180192018/ 04 pc11.2ch.net/test/read.cgi/tech/1189814602/ 05 pc11.2ch.net/test/read.cgi/tech/1197448064/
4 名前:デフォルトの名無しさん [2008/03/12(水) 13:39:54 ] 指定したセル以外の入力を避けたいのですが Range("C3,E3,D5").Select Range("D5").Activate でやると、一応完成するのですが、間違いを消去した時 全てのセルデータまで消えてしまうのですが・・・ どう処理したらいいのでしょう? 質問1っパツ目ではずかしい
5 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 14:08:31 ] 間違いを消すときに、間違ったセルだけ消せば?
6 名前:デフォルトの名無しさん [2008/03/12(水) 14:20:32 ] >間違ったセルだけ消せば? これをマクロでしたのです。TEXTBOXを使えば簡単ですけど あえて使わずして仕上げたいです。
7 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 14:36:28 ] ・今どういうコードで「間違ったセルを消し」てるのか書け ・TextBoxを使えばどのように簡単になるのか、コードも添えて説明しろ
8 名前:デフォルトの名無しさん [2008/03/12(水) 15:22:11 ] ・今どういうコードで「間違ったセルを消し」てるのか書け ただ、DELETEしてるだけ。 ・TextBoxを使えばどのように簡単になるのか、コードも添えて説明しろ TextBox プロパティで順番つけてるだけだよ。
9 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 15:35:04 ] 「コード書け」の意味が理解できないのか?
10 名前:デフォルトの名無しさん [2008/03/12(水) 16:28:07 ] Range("C3,E3,D5").Select Range("D5").Activate だけでコード書いてないよ。 TextBoxなら cells(1,1)=textbox1 cells(1,4)=textbox2 cells(2,1)=textbox1 って所かな?あえて書けば・・・
11 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 16:41:27 ] >>10 だーかーらー、 >>6 >>間違ったセルだけ消せば? >これをマクロでしたのです。 これのコードを書けって言ってるの。 >って所かな?あえて書けば・・・ 何がどう簡単になったか説明しろって書いただろ? >>4 >指定したセル以外の入力を避けたい これの意味が曖昧だから、ちゃんと説明しろってこった。
12 名前:エスパー君登場 mailto:sage [2008/03/12(水) 16:45:00 ] つ「シート保護」
13 名前:デフォルトの名無しさん [2008/03/12(水) 17:22:49 ] セルc3の次にセルe3へ入力その後セルd5へ入力またセルc3へ戻る とエンターキーを押すごとにセルの移動が行われる様にしたい(繰り返し) これは、例えば、 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Range("C3,E3,D5").Select Range("D5").Activate End Sub で可能。でも、E3に入ったデータのみ修正したい場合C3、D5も消えちゃう これでは、使い物にならい。 コントロールを使用した場合プロパティで順列の設定を指定しまうので いちいちコードを書かなくていいから簡単ってこと。 textbox1の次にtextbox2へってENTER押せば設定した順の勝手にカーソル うごくでしょ。cells(1,3)=textbox1 cells(3,5)=textbox2 とか書けば指定したセルにしか入力されないでしょ? それを、使わないで、セルc3の次にセルe3へ入力その後セルd5へ入力またセルc3へ戻る とエンターキーを押すごとにセルの移動が行われる様にしたい(繰り返し) わかってくれた?
14 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 17:43:05 ] 情報小出しは以後ヌルー
15 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 17:43:28 ] マクロで消してないじゃん・・・
16 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 08:57:37 ] Private Sub Worksheet_Change(ByVal Target As Range) Select Case Target.Address Case "$C$3" Range("$E$3").Activate Case "$E$3" Range("$D$5").Activate Case "$D$5" Range("$C$3").Activate End Select End Sub 質問がアレすぎるけどな、こういうことか?? シートへの入力も消去もキー入力ということなら。
17 名前:デフォルトの名無しさん [2008/03/13(木) 11:53:09 ] For Each myWS In Worksheets If myWS.name =sh_name Then (シートが存在している処理) Next myWS でシートの存在を調べているのですが、グラフのみがあるシートが引っ掛かりません。 どう書けばよいでしょうか?
18 名前:10 [2008/03/13(木) 12:19:51 ] 16さん ありがとう。これがしたっかです。 日本語がわるいのかぁ・・・ 反省します。
19 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 18:47:58 ] >>17 ワークシートを調べる →Worksheets グラフシートを調べる → Charts ワークシート、グラフシート両方調べる → Sheets
20 名前:デフォルトの名無しさん [2008/03/14(金) 09:21:57 ] 関数を組みたいのですが、 文字列"1","2","3","振1","振2","振3”,"休1","休2","休3"のどれかをセルに入力したのち それぞれを数字6500, 6600, 6700,,,, と処理していき最後は関数SUM()で合計値をだしていきたいのです どういった関数でできるのでしょうか? 例でもあるとうれしいのですが、どなたか分かりますでしょうか? 1,1,1,1,1,0,0, ここに6500x5の合計値 2,2,2,2,2,0,0 ここに6600x5の合計値 振3,3,3,3,3,0 ここに6700x4と7000の合計値 といった具合にセルに入力されています
21 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 10:08:44 ] >>20 それワークシート関数(なんたらLookupとか)で実現できるけど、マクロでやりたいの?
22 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 10:18:52 ] >>21 マクロと関数の違いを理解していないのですが、 実現できれば問題ないです。
23 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 10:47:07 ] IF 1 ELSE 6500 IF 2 ELSE 6600 ... といった感じの関数を組んでいくのでしょうか? もしくは文字列を数字に変換にする関数でもあるのでしょうか?
24 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 11:36:39 ] ワークシート関数でいいなら、シートのどこかに 1 6500 2 6600 3 6700 … という表を作って、合計するセルに =VLOOKUP(A1,$G3:$H11,2)+VLOOKUP(B1,$G3:$H11,2)+・・・ とかすればいい。 A1, B1, …はデータのセル、$G3$H11は上の表のセル範囲。
25 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 16:04:16 ] スレがVBAなので、VBAで解決してみよう なお、>>24 のほうが正解だと思われる。 値を入れたいエクセルを開いて、ツール→マクロ→VisualBasicEditor (たぶん)左上あたりのプロジェクト枠のなかで、 右クリック→挿入→標準モジュール module1ができるはずなので、 下記を貼付 Public Function MojiChange(moji As String) As Integer Select Case moji Case "1": MojiChange = 6500 Case "2": MojiChange = 6600 Case "3": MojiChange = 6700 Case "振1": MojiChange = 6800 Case "振2": MojiChange = 6900 Case "振3": MojiChange = 7000 Case "休1": MojiChange = 7100 Case "休2": MojiChange = 7200 Case "休3": MojiChange = 7300 Case Else: MojiChange = 0 End Select End Function ファイル→保存して終了を選ぶ 今度はエクセル側で、 たとえばA1に「1」を入れる。 A2に「=MojiChange(A1)」といれる。 するとA2には6500と入っている。
26 名前:デフォルトの名無しさん [2008/03/14(金) 18:27:13 ] 一つのセルの中に複数の値がスペース区切りで並べて書いてあるのですが これを上手く取得する方法はないでしょうか?
27 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 19:22:52 ] >>26 つsplit関数
28 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 19:22:58 ] split
29 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 22:12:01 ] >>24 lookup()じゃなくて、vlookup()を使う理由は? # 昼間lookup()版を書き込もうとしたらアクセス制限されてた(:;
30 名前:デフォルトの名無しさん [2008/03/14(金) 23:17:45 ] vlookupのほうが有名だからだろ。
31 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 00:54:07 ] 無印lookupはいらない子
32 名前:デフォルトの名無しさん [2008/03/15(土) 01:52:35 ] このスレの住人なら知っていますね、あの糞開発ツールのことを ・自分のプログラムのバグなのかコンパイラのバグなのかわからない ・他の仕事に応用できない糞開発ツールの独自世界を必死に学習している ・テキストエディタで書いたほうが効率的なのに糞UIツールを懸命に使っている 糞だけど、政治的な理由で無理やり使わされているんですよね もういい加減、我慢するのはやめませんか? ・糞開発ツールを部下に押し付ける上司の命令は無視しましょう。 上司は糞開発ツールが使われる実績を作ることであの会社のごきげんをとっているのです。 ・あの糞開発ツール提供会社には「糞開発ツールは話にならない」と突き放しましょう。 バグレポートなどしてはいけません。改善要求などもってのほかです。 あの会社はあなたたちのことをテスター/モルモットとしか思っていません。 ・あの会議で「糞開発ツールを使ったら生産性がxx%アップしました」 なんて話が出たら力強く机を叩き、会議室を出ましょう。 あの人たちは糞開発ツールをマンセーすることで立場を確保しているのです。 糞な開発ツールを糞だと言える、そんな当たり前の環境をみんなの力で取り戻しましょう。
33 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 01:57:49 ] そんなものを使っている会社を辞めないお前も不思議な人間だ。
34 名前:デフォルトの名無しさん [2008/03/15(土) 19:21:33 ] VBAスレなのに、関数で答えを返す謎なスレ。 簡単に関数で解決できても、小難しくVBA自作関数で返してやるのがこのスレの醍醐味だろ?
35 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 21:17:04 ] 誘導 Excel総合相談所 66 pc11.2ch.net/test/read.cgi/bsoft/1204443608/
36 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 23:33:54 ] 良回答認定
37 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 12:10:16 ] >>33 コピペにマジレス(´∀`)カコイイ!
38 名前:デフォルトの名無しさん [2008/03/17(月) 13:28:51 ] マクロの登録で、ツール、分析ツール、相関を選択しました。 マクロが作成されましたが、いざ実行してみると〜.XLAファイルが見つかりませんとエラーがでます。 どうすればよいでしょうか?
39 名前:デフォルトの名無しさん [2008/03/17(月) 15:35:24 ] マクロをメニューバーに追加したんですが、グラフ選択時に追加したのが消えてしまいます。 アクティブなグラフに変更を加えるマクロだったので正直使えません、グラフ選択時に消えなくする方法を教えて下さいm(__)m 長文失礼しました
40 名前:デフォルトの名無しさん [2008/03/17(月) 21:36:12 ] Excel向けの月例パッチにバグ、マクロ実行時の計算に誤り www.computerworld.jp/topics/dm/101230.html この記事の内容が理解できないのだが 誰かわかりやすく説明してください。゜(ノД`)゜。
41 名前:デフォルトの名無しさん [2008/03/17(月) 21:38:39 ] 【ヲタの一日】 彡川三三三ミ 9:00 起床 川出 ::::::⌒ ⌒ヽ 9:05〜9:20 朝食(昨日の残り物) 出川::::::::ー◎-◎-) 9:25〜12:25 溜まっていたギャルゲーを消化 ..川(6|:::::::: ( 。。)) 12:30〜13:00 昼食(レトルトカレー) 出川;;;::∴ ノ 3 ノ 13:05〜16:00 ゲーハー板で妊娠を煽る ノ\_;;;;;;;;;;;;;;;;ノ 16:01〜17:00 半角二次元板でエロ同人誌を漁る ( * ヽー--'ヽ ) 17:05〜17:55 ゲームをやる (∵ ;) ゚ ノヽ ゚ ):) . 18:00〜19:28 アニメを見る (: ・ )--―'⌒ー--`,_) 19:30〜19:58 飯を食いながらアニメを見る (___)ーニ三三ニ-) .20:00〜24:00 ゲーム(FF11) (∴ ー' ̄⌒ヽωニつ 1:02〜3:12 ゲーム(エロゲー) `l ・ . /メ / . 3:14〜3:26 エロ同人誌でオナニー ヽ ∵ /~- /. 3:27〜 就寝 (__)))))_))))) ※風呂に入るのは一週間に一度だけ
42 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 21:39:44 ] MS08-014によって生じる問題とは、Excelで特定のタイプのマクロが実行されたときに、 Excelが正しい数値ではなくゼロを返すというもの。Excel 2003において、株価や在庫量 などのデータを外部ソースからリアルタイムで取得し、それらをExcelの配列にプラグイン しているケースで発生する。
43 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 21:43:48 ] -- After you install security update MS08-014 on a computer that has Microsoft Office Excel 2003 installed, array-entered functions that contain a Visual Basic for Applications (VBA) macro that refers to a Real Time Data source return an incorrect value. The incorrect value is usually 0. -- どこを説明しろと?
44 名前:デフォルトの名無しさん [2008/03/17(月) 21:47:59 ] >>42 >>データを外部ソースからリアルタイムで取得し、それらをExcelの配列にプラグインしているケース これってRTD関数を使ってる場合ってこと? そんでVBA上で配列に格納すると発生するってこと??
45 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 23:34:29 ] Offset関数について教えてください。(Xp、オフィス2003) RANGE("A1").Offset(3,0)としたとき、ターゲットはセルA4をさします。 ただ、A2とA3を結合していた場合、ターゲットはA5になります。 Offset関数は結合を無視することって出来ないんですか? 上の例で言えば、間に結合があろうがなかろうがA1を基準として 下に3セル分移動したA4を指定したいんですが・・・ 相対指定はOffsetくらいですよね?
46 名前:デフォルトの名無しさん [2008/03/17(月) 23:48:35 ] >>45 i =1 i = i + 3 RANGE("A" & i) じゃあだめなのか? セル値の固定はシートに任せると思ったとおり動かないことがあるので、 モジュール側で指定するようにしてる。 26進数変換モジュールを用意しておくと使い勝手もよくなる。
47 名前:デフォルトの名無しさん [2008/03/18(火) 00:12:56 ] ...
48 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 00:29:57 ] 右行って下行って左行けばぁ?
49 名前:デフォルトの名無しさん [2008/03/18(火) 08:24:08 ] つまり、結合したりしてるシートにOffset関数は使い物にならないということで?
50 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 09:42:40 ] Office 2000だと、range("A1").offset(3,0)はA4になるな。 仕様が変更されたのかな。
51 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 12:22:18 ] Replaceを使って置換するべき文字列を、変数定義した内容で置換する事は出来ますか?
52 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 13:14:08 ] >>51 もっと具体的に
53 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 18:22:10 ] >>52 あるExcelのシートの文字列の一部を置換したいとします。その文字列を入力のボックス作成、そこを手入力し、置換出来る様にしたいのです。 例えば"犬"を"猫"としたり、"犬"を"馬"と置換出来る様に組みたいです。 携帯なのでソースは別途見せます。
54 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 22:11:13 ] なんかいきなりVBAと謳われる神の言語を使用して ツールを期限付き(超最短)で作るハメになったんだけど これって1日半ぐらいあればマスターできますよね?
55 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 22:13:39 ] できます
56 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 22:15:30 ] >55 ありがとうございます!!
57 名前:デフォルトの名無しさん [2008/03/18(火) 23:52:20 ] VBA初めて半年ぐらいの初心者です セルに挿入されたコメント(セルの右上に赤い三角のでるやつ) にかいてある文章を取得することってできるのでしょうか? 自分で色々ヘルプを見てみたところVBAでコメントの文章の設定はできるようなのですが、 取得する方法が分かりません。 具体的に言うと、ある人が仕事に使う表(約40シート、各シートに20×5セルぐらい)を エクセルに打ち込んだんですが、表の中に何箇所か、セルに値を入れるところを コメントに入れてしまったんです。 セル内におさまらなかったし、コメントだとカーソルをもっていくと長い文章も表示されて 見やすいからだそうですが、その仕事を引きついた自分はやりにくくてしょうがいないので コメントの設定されているセルの値にそのままコメントの文章を入れたいのです。 手作業でやると結構時間がかかりそうな量なのです。 マクロの記録で「コメントの編集→コメント文章のコピー→セルに貼り付け」 をやってみたのですが、コメント文章のコピーの部分が記録されていませんでした 分かる方いたらお願いします。
58 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 00:12:02 ] range1.comment.text
59 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 00:23:43 ] Sub macro() If Cells(1, 1).NoteText <> "" Then Cells(1, 1) = Cells(1, 1).NoteText End If End Sub
60 名前:デフォルトの名無しさん [2008/03/19(水) 00:32:21 ] さっそくの回答ありがとうございます >>59 さんのnotetextで取得できました・・・ これも試したはずなんですが、今やったら動いたので なんか別の原因でエラー出てたみたいです 助かりました >>58 せっかく回答いただいて申し訳ないのですが、うちの環境だと comment.textはやっぱりエラーになりました 「オブジェクトまたはwithブロックが定義されていません」 とのことです これも別の原因があるのかな? ともかくありがとうございます
61 名前:デフォルトの名無しさん [2008/03/19(水) 08:47:17 ] ComboBox1のリストを開いたままCommandButton1をクリックする度に 8行づつ表示したいのですが、難しくて作れません。 誰か助けてちょ。 Dim a As Long On Error Resume Next a = 1 If CommandButton14.Click Then ComboBox1.ListIndex = a a = a + 1 End If CommandButton14.Click まずここだめー そして ComboBox1のリストが閉じちゃう。 ハイ、ダメェ〜 エンタの見すぎですいません
62 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 11:58:32 ] 答える気にならんな
63 名前:デフォルトの名無しさん [2008/03/19(水) 12:43:54 ] そこを何とか・・・
64 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 13:18:02 ] コンボボックスって、フォーカスを失っても開きっぱなしにすることできるのか?
65 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 13:25:53 ] エンタの神様って死ぬほどつまらん それを真似されちゃぁねぇ >>64 無理じゃないか・
66 名前:デフォルトの名無しさん [2008/03/19(水) 13:54:00 ] ComboBox1.SetFocus も ComboBox1.Valueでも開かないな
67 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 14:07:00 ] ACCESSのフォームとVBAなら DoCmd.GoToControl "コンボボックス名" SendKeys "%{down}" , true で開くけれどな
68 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 15:46:57 ] セルをセレクトせずに、仮想セレクトによって、オフセットを使うことは 可能でしょうか。
69 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 15:59:58 ] 仮想セレクトって何?
70 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 17:13:30 ] >>69 Sub ppp() Dim i As Byte Dim hoge() As Byte For i = 1 To 5 ReDim Preserve hoge(i) Range("A" & i).Select: hoge(i) = Selection.Value ActiveCell.Offset(0, 1).Value = "済" Next i End Sub offsetを使いたい場合、上みたいにいちいちセレクト しなくてはいかんのでしょうか・・ということなのですが。 hoge(i) = Range("A" & i).Valueで値をとって、そこから、 オフセットでセル移動をすることは出来ないですか?
71 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 17:36:36 ] 基本的に、selectは必要ないと思っておいて、さほど間違いではない。 (1) hoge(i) = Range("A" & i).value Range("A" & i).Offset(0, 1).Value = "済" (1') with range("A" & i) hoge(i) = .value .offset(0, 1).value = "済" end with (2) hoge(i) = Range("A" & i).value Range("A" & i + 1).Value = "済"
72 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 17:54:41 ] >>71 あ、そういうことが出来るんですか。 ありがとうございます。早速試します。
73 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 21:00:41 ] 必要ないというか、値を取得するだけなのに、そのためにセルのSelectやActivateをする ってのはダメプログラムの良い証拠
74 名前:デフォルトの名無しさん [2008/03/20(木) 01:22:17 ] 質問です、行番号を変数redord_lineに取得する スタート列変数 start ゴール列変数 end 上記の3つの変数を使って指定したレコード範囲だけ色を変更することは できるのでしょうか?色は何色でもいいです。
75 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 01:38:28 ] できます
76 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 02:22:59 ] Range(Cells(Row1,Col1),Cells(Row2,Col2))..Interior.Color = COLORREF
77 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 11:33:41 ] すいません、関数の引数にString型の配列を渡しているのですが 型が一致しませんとでてしまします。原因がわからないので教えてください。 Dim hogehoge(999) As String '関数呼び出し method(hogehoge) --------------------------------------------- '関数実体 Function method(hogehoge() As String)
78 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 12:06:11 ] あれ?ここって全然ひといない?
79 名前:デフォルトの名無しさん [2008/03/20(木) 12:16:15 ] 質問はあげで
80 名前:デフォルトの名無しさん [2008/03/20(木) 12:39:16 ] Function test() Dim hogehoge(999) As String '関数呼び出し Call method(hogehoge) End Function Function method(hogehoge() As String) '関数実体 MsgBox UBound(hogehoge()) ' End Function
81 名前:77 mailto:sage [2008/03/20(木) 13:20:50 ] >80 あざーす。 エラーは回避できたんだけどなぜCallをつけると エラーがでなくなったのかという根本的な原因がよくわからなかったんでありますが なぜかわかります?データ型の不一致っていうと根本的に 構文の使い方そのものが間違ってるイメージがあるんですが・・ Callステートメントについて少し調べたんだけど このステートメントの役割は関数の呼び出しを明示的に宣言しているのと 参照渡しと値渡しの使い分けをこっちでしなくて済むってことらしいんですが
82 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 13:23:59 ] Dim hogehoge(999) As String '関数呼び出し method(hogehoge) --------------------------------------------- '関数実体 sub method(hogehoge() As String)
83 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 17:19:36 ] トリビア 明示的という日本語は存在しない
84 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 17:33:50 ] そんなしょうもねぇ揚げ足とるくらいなら糞して寝てろや・・・
85 名前:デフォルトの名無しさん [2008/03/20(木) 17:48:37 ] 普通に戻り値だと strTEXT = method(hogehoge) 実行したいだけだと call method(hogehoge) と使ってきたので、なぜと言われても困るなぁ…
86 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 18:13:15 ] 要は戻り値がないメソッドを呼ぶときは 明示的にCallステートメントをメソッド名の前に付けなくてはならないという 暗黙の了解がVBAにはあるわけだ。あざーす
87 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 18:15:06 ] >>83 あるよ
88 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 18:35:11 ] 言葉は生きてて、時代などを反映して生まれては消える。 広辞苑か何かに追加されてないといけないのか?
89 名前:デフォルトの名無しさん [2008/03/20(木) 18:38:11 ] >>86 VBAは初めて? 普段は何で書いてるの?
90 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 18:48:11 ] >89 ヒミツのアッコちゃん
91 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 18:57:23 ] ネタだと思ったが ヒミツのアッコちゃん っつー言語は本当にあるんだな 織田信長の乗りだな
92 名前:デフォルトの名無しさん [2008/03/20(木) 21:32:16 ] >>76 さん できました、ありがとうございます。
93 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 22:01:16 ] method(hogehoge)だとhogehogeに()をつけてからmethodに渡すと解釈するからじゃなくて? もしそうなら、methodと括弧の間に空白が置かれていると思うし、method hogehogeで呼べるはずってことだけど。
94 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 23:02:30 ] 日本語でおk
95 名前:デフォルトの名無しさん [2008/03/20(木) 23:17:53 ] 日本語だとVBAが走りません
96 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 02:21:41 ] メソッド(ほげほげ)
97 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 05:40:24 ] 漏れは括弧を付けて呼びたいのに 勝手に括弧を消されるのが気に入らない
98 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 06:04:35 ] かっこわるい
99 名前:デフォルトの名無しさん [2008/03/21(金) 08:32:13 BE:168148962-2BP(380)] valueやformulaはコピ〜されるのですが Numberformat がコピ〜されません なにが悪いのでしょう? With oThisSheet .Rows(p_row + cnt).Value = .Rows(p_eval_row + 1).Value .Rows(p_row + cnt).FormulaR1C1 = .Rows(p_eval_row + 1).FormulaR1C1 .Rows(p_row + cnt).NumberFormat = .Rows(p_eval_row + 1).NumberFormat .Rows(p_row + cnt).FormulaR1C1Local = .Rows(p_eval_row + 1).FormulaR1C1Local .Rows(p_row + cnt).NumberFormatLocal = .Rows(p_eval_row + 1).NumberFormatLocal End With
100 名前:デフォルトの名無しさん [2008/03/21(金) 12:11:13 ] dim name as string name=range("a1") if name=textbox1 then msgbox("有") end if このtextbox1の入力 大文字 小文字でも 認識させたいのですが どう処理したらいいのでしょか? 例えば range("a1")のデータが a0001 textbox1の入力がA0001 この場合もmsgbox(”有”)と拾ってもらいたいのですが・・・