Excel VBA質問スレ Part7 at TECH
[2ch|▼Menu]
[前50を表示]
900:デフォルトの名無しさん
08/08/19 11:28:39
現在、ユーザーフォーム上でワークシートを表示させるべく
スプレッドシートを設置することはできましたが、
このスプレッドシート上にチェックボックスを表示させる方法が分かりません。
何か良い方法があれば教えてください。お願い致します。

901:デフォルトの名無しさん
08/08/19 21:35:33
>>899
質問というより丸投げの典型例

902:デフォルトの名無しさん
08/08/19 21:37:14
>>899
ファイル名は連番のノンブルとか付いてるのかい?

フォルダに入ってるバラバラのファイル名のファイルを全部読み込む。
って言うならばVBAの範疇超えてるからスレ違い。

903:y
08/08/19 22:38:26
>>900
SpreadsheetコンポーネントのSheetオブジェクトは、Excelシートと比べてとてもシンプルな機能しかなく、
OLEObjectsプロパティも持っていないため、CheckBoxなどのコントロールを追加する領域自体が見当たりません。
コンポーネントのヘルプにもとくに触れられていないようです。
普通にユーザーフォーム上にCheckboxを配置するだけでは足りないのですか?


904:デフォルトの名無しさん
08/08/20 14:35:52
よろしくお願い致します。
OS:XP エクセル2003 VBAのことは、まったくの初心者です。
質問なのですが、下記のようなチェックボックス7にチェックが入れば、
チェックボックス8〜11に自由にチェックが入れれるようになり、
逆にチャックボックス7にチェックが入ってない場合は、
チェックボックス8〜11のチェックはクリアされ、
チェックできないものを作りました。

ここから、チェックボックス7にチェック入れたあとは、
必ずチェックボックス9〜11のどれかにチェックが入っている状態
(ラジオボタンのような)で、チェックボックス7にチェックが
入ってなかったら、8〜11のチェックがクリアで尚且つ、
チェックができなくなるようにするにはどうすればよいでしょうか? 
よろしくお願い致します。

Private Sub CheckBox7_Click()
If CheckBox7.Value = True Then
CheckBox8.Enabled = True
CheckBox9.Enabled = True
CheckBox10.Enabled = True
CheckBox11.Enabled = True
Else
CheckBox8.Value = False
CheckBox9.Value = False
CheckBox10.Value = False
CheckBox11.Value = False
CheckBox8.Enabled = False
CheckBox9.Enabled = False
CheckBox10.Enabled = False
CheckBox11.Enabled = False
End If
End Sub

905:y
08/08/20 17:04:59
>>904
>ここから、チェックボックス7にチェック入れたあとは、
>必ずチェックボックス「9〜11」のどれかにチェックが入っている状態
とありますが、文脈からすると「8〜11」のつもりでしょうか?

8〜11にラジオボタン的な挙動をさせるには、
@CheckBox8〜11にそれぞれClickイベントプロシージャを作成
A各プロシージャには、自分以外のCheckBoxの値は全てFalse、自分の値だけをTrueにするコードを記述
すればよいかと思います。なお、「自分以外のCheckBoxの値は全てFalse」の部分は、
別にプロシージャを作成して、各イベントプロシージャから呼び出すようにすれば合理化できます。

CheckBox7がTrueになった直後は、8〜11のうちどれをTrueにするのか、とか、
8〜11のうち既にTrueになっているものがClickされたらどうするのか、などの点が
はっきりしませんが、方針さえ決めてしまえば簡単に修正できるはずです。


906:デフォルトの名無しさん
08/08/20 18:53:18
こいつの口調、癇に障る。
ただそれだけで、消えてほしいと願う。

907:デフォルトの名無しさん
08/08/20 19:57:47
お前が消えればいいじゃん

908:デフォルトの名無しさん
08/08/20 20:50:56
>>906
お前の方が癇に障って癪だわ。お前が消えろ。

909:デフォルトの名無しさん
08/08/20 21:22:01
自作自演ヒドス

910:デフォルトの名無しさん
08/08/20 23:10:50
匿名掲示板でコテハンを長く名乗るって事は、それだけのリスクがあると言う事。
自分の向学の為ならば、コテを名乗る必要はどこにもない。

仮に間違った事を回答したとしても、責任なんてない。逃げるのも簡単。
それが匿名掲示板だから。

自分で退路を塞ぐだけでも愚かな事なり。

911:デフォルトの名無しさん
08/08/20 23:27:26
そんなのどうでもいいわ。ここはExcel VBAのスレだろ

912:デフォルトの名無しさん
08/08/20 23:27:31
コテハンがそんな大層なもんかね
何か勘違いしてるんじゃないの

913:デフォルトの名無しさん
08/08/20 23:45:02
退路っていうのは間違っても訂正しないことなんだろうか

914:デフォルトの名無しさん
08/08/20 23:47:48
荒れてますな〜w

915:デフォルトの名無しさん
08/08/20 23:49:41
>>914
マクロだけにねプッ

916:デフォルトの名無しさん
08/08/21 08:41:58
>>905

ありがとうございます。助かりました。

917:デフォルトの名無しさん
08/08/21 21:14:17
すんません。質問させてください。

違う部署の人にヘルプを頼みまして、条件に合致する物にフラグを立ててくれたんです。
後で処理するんで、文字列の最後尾に記号をくっつけといてもらったのですが、
よりによって、アスタリスクが最後尾に付いてました。

適切に指示しなかった私が悪いと思い、今後は別の記号か、
別のセルに数字でフラグを立ててもらう事にしたのですが、
そこで質問です・・・。

autofilterも、replaceも、*はワイルドマークとして機能しているようですが、
エスケープシーケンスは存在しますでしょうか。
文字列としての*を判定させたい場合の処理などが可能でしたら教えてください。


918:デフォルトの名無しさん
08/08/21 21:22:29
[*]

919:デフォルトの名無しさん
08/08/21 21:43:27
ありがとうー

920:デフォルトの名無しさん
08/08/21 21:59:10
質問です。
他のxlsファイルを読み込んでいろいろ作業するのを、マクロの記録からやると
切り替えごとにWindows("hoge.xls").Activateになりますよね?
これだとファイル名を変えると動かなくなるのでなんとかしたいのですが
元の方はThisworkbook.Activateに置き換えすると済みますが
相手ファイルも同様に使いやすくするにはどうしてますか?

GetOpenFileで指定したファイルをどこかの非表示セルに書き込んで
それを読み込む方法しかないのでしょうか?
他にいい保存場所ないのかなぁ?

921:デフォルトの名無しさん
08/08/21 22:14:15
起動中のエクセルファイルには、起動順に番号が割り当てられている。
ファイル名を指定しなくても、
Workbooks(n).Activate
(nは数字)という形で、n番目に開いたファイルをアクティブにできる


922:デフォルトの名無しさん
08/08/21 22:16:17
一時的にマクロを停止させ、
その間にワークシートを操作するプログラムを組みたいのですが躓いています。

waitメソッドを使えば実現できるかと思ったのですが、
マクロは停止するけれどもワークシートが操作不可能です。

実現するべく何が良い方法があればご教授ください。

923:デフォルトの名無しさん
08/08/21 22:18:11
doevents

924:デフォルトの名無しさん
08/08/21 22:25:07
>>920
hoge=Activexworkbook.nameで開いたファイル名を取得

925:デフォルトの名無しさん
08/08/21 22:25:33
コントロール配列使えないVBAももうちょっと頑張ってくれればいいのにな。
vbe.netとかつくって欲しい。

926:920
08/08/21 22:32:10
>>924
それだと毎回ダイアログ画面で指定しなきゃいけませんよね?
ファイル名を変えちゃったときに、一度指定してもらうだけで済ませたいのです。

927:y
08/08/21 22:48:28
>>926
非表示セルか非表示シートのセルでいいのでは。
個人用マクロブックとか、外部テキストファイルとか、いろいろ考えられますが、
複雑になるだけだと思うので。


928:デフォルトの名無しさん
08/08/21 23:30:45
総合スレよりこっちの方が良さそうなのでこちらで質問します。
ワークシート上に配置したコンボボックス(フォームではなくActiveXの)に初期値として、
今日から5日前〜今日から10日後の日付をセットしたいのですが、うまくいきません。
ユーザーフォームだとUserform_Initializeの中に記述すればいいんですが、
同じ様にはできません。どうすれば良いでしょうか。
clickイベントでも試しましたがコンボボックスはchangeイベントしかダメなのかな?

929:デフォルトの名無しさん
08/08/22 02:32:27
>>928
UserformにはUserformのイベントがあり、ThisWorkbookにもイベントがある。
Private Sub Workbook_Open()
For i = 4 To 0 Step -1
Sheet1.ComboBox1.AddItem Date - i, 4 - i
Next
Sheet1.ComboBox1.ListIndex = 0
End Sub


930:928
08/08/22 07:23:05
>>929
そっか、ブックを開いた時にイベント発生させれば良かったのか。
ありがとうございました。

931:デフォルトの名無しさん
08/08/23 03:58:17
相対参照を含む数式を位置関係を考慮してずらしてコピーする方法はありますでしょうか
コピー元C5セル:=B5
コピー先C10セル:=B10
のようにコピーしたいのですが
Range(C10).formula=Range(C5).formula
のようにするとC10が=B5になってしまいます。
調べてもFillDownというものしか出てこず離れたところにコピーするやり方が分かりません。
すみませんがご存知の方教えていただけないでしょうか

932:デフォルトの名無しさん
08/08/23 06:33:53
>>931
Range("C10").FormulaR1C1 = Range("C5").FormulaR1C1

933:デフォルトの名無しさん
08/08/23 14:03:39
>>932
ありがとうございます
意図したことが出来ました


934:デフォルトの名無しさん
08/08/23 15:59:51
VBA使って関数や数式のコピーってどうなのよ。
モジュールに数式書いてくれればすぐわかるのに、
数式のコピーって、いちいちプロパティで調べないといけないから面倒なんだけど。

なんでそんな事するの?死ぬの?

935:デフォルトの名無しさん
08/08/23 16:14:09
>>934
あなたは13日後にしにます

936:デフォルトの名無しさん
08/08/23 17:40:05
呪殺予告きたー!
これは逮捕だな

937:デフォルトの名無しさん
08/08/23 21:27:46
>>934の言っている意味がわからない。
数式コピーされると死ぬの?呪殺されちゃうの?

938:デフォルトの名無しさん
08/08/23 21:53:17
なれないVBAで苦労しているのですが、オートシェイプ周りの制御はどうすれば
良いんでしょうか。移動や変形どころか、アクセス方法すら分からずじまいで。

取っ掛かりだけで十分なので、教えていただければ幸いであります。
流れ読まずにすまんですたい。

939:デフォルトの名無しさん
08/08/23 22:00:01
なにがしたいの?

940:側近中の側近 ◆0351148456
08/08/23 22:09:37
>>938
(っ´▽`)っ
マクロの記録でやってみればいいじゃん

941:デフォルトの名無しさん
08/08/23 22:20:50
>>939
「頂点の編集」がグリッド無視するのをどうにかしたり、直線を他のオートシェイプに置換できないかなと。

>>940
あーなるほどこんな手が。取っ掛かりが掴めました。ありがとうございます。

942:側近中の側近 ◆0351148456
08/08/23 22:27:25
(っ´▽`)っ
テンプレに
わからなければ、とりあえず「マクロの記録」をやってみましょう
がないことに驚き☆

943:デフォルトの名無しさん
08/08/23 22:33:10
Excell2007でVBAでプログラム組んで動かしたんだけど
かなり実行に時間がかかってしまう・・・

今のパソコンはC2Dの2.4Gでメモリ2GでXP何だけど
ハードを新しくするのとOSをVistaにするのどっちが効果的ですか?

944:デフォルトの名無しさん
08/08/23 22:34:16
真逆の選択肢に見えるのが面白いw

945:デフォルトの名無しさん
08/08/23 22:39:42
>>943
64bit Vistaにしたまえ

946:y
08/08/23 22:50:05
>>943
もうご存知かもしれませんが、>>724もとりあえず参考までに。



947:デフォルトの名無しさん
08/08/23 22:50:45
>>934
出来てありがとうって言ってるのにその追い討ちはわけがわかりませんww
数式コピーできなくても死にはしませんよ
VBAに書くと柔軟性が失われるから外出しにしておきたいのです。
再利用性を高めるのに最も良い方法は命令をコマンドにすることです。数式に限らずSQLなどの柔軟性の高い命令は外出しが良いのです。

948:デフォルトの名無しさん
08/08/23 22:52:21
リストボックスで複数選択した分だけ
H列の11行目から4行ずつ下へオートフィルを使ったコピーで展開したいんだけど、
コードがうまく思いつかなくて四苦八苦してます。


リストから複数選択した分をjに入れたとして、
コードは
Range("H7:H10").AutoFill Destination:=Range("H7:H10+j")


としたけど中々コードが思いつかずわかりません・・・
VBA始めて2週間、本やネットで検索してもリストボックスの扱いがあまりなく苦労してます。

949:側近中の側近 ◆0351148456
08/08/23 22:55:51
>>947
(っ´▽`)っ
それだったら、数式をConst String型にしておいたほうがいいよ☆
数式のコピーよりも分かりやすいような気がする。
数式のコピーだと、>>934のように、数式がソース上どこにも出てこないことになるから。

950:デフォルトの名無しさん
08/08/23 22:59:06
>>943
スレ違いだけど
チューニングという選択がいいと思うよ
まずは使い終わった計算式を削除してみること

951:側近中の側近 ◆0351148456
08/08/23 22:59:11
(っ´▽`)っ?
>柔軟性の高い命令
今気づいた。動的に数式が変わるっていうこと?
それだとConstじゃダメだね。

952:側近中の側近 ◆0351148456
08/08/23 23:01:30
>>943
(っ´▽`)っ
「マクロの記録」で生成されたプログラムだと、
.selectが多くできるけど、これを無くすとかね。
range("A1").select
selection.value = 1

range("A1").value = 1

953:側近中の側近 ◆0351148456
08/08/23 23:20:09
>>948
(っ´▽`)っ ほ〜れほ〜れ☆
Range(Cells(7, 8), Cells(10, 8)).AutoFill Destination:=Range(Cells(7, 8), Cells(10 + j * 4, 8))

954:デフォルトの名無しさん
08/08/23 23:21:37
>>951
動的には変えませんが、数式はユーザに変えてもらうカスタマイズポイントです

955:側近中の側近 ◆0351148456
08/08/23 23:30:25
>>954
(っ´▽`)っ
ほうほう。
じゃあ、セルに名前をつけて、それでアクセスするといいかも。
Range("C10").FormulaR1C1 = Range("C5").FormulaR1C1
これだと、C5ってなんだ?ってことになる。ソース上はわからない。
ワークシートのC5を見ればわかるけどね。
たとえば、セルC5に"カスタマイズSQL"という名前を付ければ
Range("C10").FormulaR1C1 = Range("カスタマイズSQL1").FormulaR1C1
と書くことができる。
ソース上もわかりやすくなってイイ!>>934の不安も払拭される。

セルの名前は「挿入」→「名前」→「定義」で設定できるよ☆

956:側近中の側近 ◆0351148456
08/08/23 23:31:13
(っ´▽`)っ
間違えた☆

たとえば、セルC5に"カスタマイズSQL"という名前を付ければ
Range("C10").FormulaR1C1 = Range("カスタマイズSQL").FormulaR1C1
と書くことができる。

957:948
08/08/23 23:32:54
>>953
できた!サンキューです♪
胸のつっかえが取れました(o^-')b

Rangeじゃ駄目だったんですね。
これで次の勉強に進められます。

ありがとうございますヾ(o゚∀゚)ノ゛

958:デフォルトの名無しさん
08/08/24 00:23:56
VBAで課長の背骨をヘシ折る事は可能?
あと、栗とか剥ける?VBAで。

ググッても全然HITしない。

959:デフォルトの名無しさん
08/08/24 00:33:29
ああ、できるよ。

960:デフォルトの名無しさん
08/08/24 00:59:57
>>956
ありがとう
一応名前付き範囲は知ってるよ
君はのりのりですごい親切だね
また今度教えてね

961:デフォルトの名無しさん
08/08/24 01:06:38
うぜーよ

962:デフォルトの名無しさん
08/08/24 01:35:44
>>959

うっそマジ?
じゃあ例えば

Sub 課長()

Dim 課長 As Integer
Dim ボディ As Boolean
Dim 吐血 As Integer

課長 = 1
吐血 = 101


Do Until 課長 = 吐血

If Cells(課長, 1) = "" Then
ボディ = True
課長 = 課長 + 1
End If

Loop

MsgBox "課長は吐血しました。もうやめて下さい。"

End Sub

とかで課長吐血する?VBAで吐血する?

963:デフォルトの名無しさん
08/08/24 01:46:31
そのコードじゃ無理だけどな

964:デフォルトの名無しさん
08/08/24 09:10:49
VBAでルーチン組んでから、椅子で殴れば良いじゃん。

965:デフォルトの名無しさん
08/08/24 10:12:58
ハードディスクのデータをクリーンにするプログラムを組んでプレゼントしなさい。

966:デフォルトの名無しさん
08/08/24 10:20:17
VBAでできるけどスレ違い。Excel関係ないから。

967:デフォルトの名無しさん
08/08/24 10:52:44
2003です。
マクロの記録からオートシェイプをやったけど
そのまま実行すると塗りつぶし無しだけがキャンセルされてしまいます。

ActiveSheet.Shapes.AddShape(msoShapeOval, 257.25, 109.5, 39.75, 21.75).Select
Selection.ShapeRange.Fill.Visible = msoFalse
Selection.ShapeRange.Fill.Solid
Selection.ShapeRange.Fill.Transparency = 0#
Selection.ShapeRange.Line.Weight = 1.5
Selection.ShapeRange.Line.DashStyle = msoLineSolid
Selection.ShapeRange.Line.Style = msoLineSingle
Selection.ShapeRange.Line.Transparency = 0#
Selection.ShapeRange.Line.Visible = msoTrue
Selection.ShapeRange.Line.ForeColor.SchemeColor = 64
Selection.ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255)
どうすれば塗りつぶし無しに出来ますか?


968:側近中の側近 ◆0351148456
08/08/24 11:07:37
>>967
(っ´▽`)っ
Selection.ShapeRange.Fill.Solid
を削除しましょう。

969:デフォルトの名無しさん
08/08/24 11:52:21
>>968
ありがとうございます

970:デフォルトの名無しさん
08/08/24 14:41:12
CSVファイルの数値を分析したいのですが
フォルダ内すべてのCSVファイルにマクロを実行する方法はありますか?

紹介されている本やHPを教えていただけませんでしょうか?

よろしくお願いします。

971:デフォルトの名無しさん
08/08/24 20:17:55
うーむ・・・CSVってカンマ区切りのデータテキストの事だよね?
一度EXCELに読み込んで処理じゃダメなのかな。

972:デフォルトの名無しさん
08/08/24 20:51:32
このスレ的にはそれがいいね。
どうやってやるかは、マクロ記録すればすぐ判ることだし。

973:デフォルトの名無しさん
08/08/24 21:59:24
excelで普通によみこむと、おもってるのと違う動きされることあるんだよなー。
だから、俺は、1行ずつ読み込み、コンマで区切りごとのデータを自前で配列にいれる
多バイト文字つかわれてたりするとこは、1フィールドごとにエンコードチェック、
をずっとEOFまでやってから、自分のおもってる型にかえてから処理しとる。

974:y
08/08/24 22:14:08
「フォルダ内すべての」CSVファイルに対して処理をしたい、
という点でもつまずいているのかも。それについては、
「FSO」を検索すると役立つ情報が見つかると思います。


975:デフォルトの名無しさん
08/08/24 23:17:58
CSVの定義って厳格な物ある?ファイル形式とか。
気になって調べたんだけど、ファイル形式までは規格されてないような。

んで、フォルダの中身全部、って指定がかなり難しいのではないかなと。
たとえば拡張子がtxtだとしても、それがCSVで組まれたデータファイルなのかは、
計算機で判断出来るの?って思ってさ。

976:デフォルトの名無しさん
08/08/24 23:37:56
>>974
先にDir勧めろ。

>>975
RFC4180というものがあるにはある。

977:デフォルトの名無しさん
08/08/24 23:38:05
RFC 4180

978:デフォルトの名無しさん
08/08/24 23:54:22
基本的に、顧客が好むのが、Excelでひらいたときにどうみえるか。
なんで、
"dataA", "dataB", ... , "dataX"
みたいに、""でかこむことになる。
数値解析とかだけのローカル用途なら、囲まんけどな。

979:デフォルトの名無しさん
08/08/25 00:04:47
FSOの.Filesでファイル一覧取得して、Right$で.csvだったら、
FSOの.Readallで読み込んで、VBCRLFでSplitして、
配列に入れて配列をカンマで、Split

980:デフォルトの名無しさん
08/08/25 00:09:35
プロジェクトのこまごま作業で多かったのがFSOによる再帰ファイル検索だ

981:デフォルトの名無しさん
08/08/25 00:14:27
"abc,def","ghi",""""
ってな感じのデータに対応しようと思ったら面倒よ、自前でやるのは

982:デフォルトの名無しさん
08/08/25 02:00:47
FSOでやるなら普通にGetExtensionNameでcsvかどうかを見ればいいんでね?

983:y
08/08/25 19:17:14
>>976
あ、そっちの方が簡単かも...
オブジェクト作らないで済みますし。

Const fPath = "(フォルダのパス)"
Dim fName As String
fName = Dir(fPath, vbNormal)
Do While fName <> ""
 If UCase(fName) Like "*.CSV" Then
  'Open 〜
  '>>979の後半みたいな処理
  'Close 〜
 End If
 fName = Dir
Loop

こんなやり方でいいのかな。
CSVデータは、シングルクォーテーション('')で囲まれたタイプのも
ざらにあるので意外と厄介ですよね。

984:デフォルトの名無しさん
08/08/25 20:21:21
Dir(fPath & "\*.csv", vbNormal)
Ifはいらない

985:デフォルトの名無しさん
08/08/25 20:28:40
FSOとかつかうと
2008/08/25 20:27:30
みたいなフィールドがtextstream通した時点で
2008/08/25 20:27
とかされるからやめたほうがいいぞ。他にも罠多数。

どうしてもVBAっちゅーんなら、バイナリで読み込んで処理。これしかない。
自作のあるけど、バグあるとはずかしいから公開できん。
結構、考慮するべきパターンあるんで、かなり大きい。

986:側近中の側近 ◆0351148456
08/08/25 20:47:47
(っ´▽`)っ
もし作るのが業務ソフトウェアなら、許容するCSVの仕様ぐらい決めたら?
こういう感じに。ちなみにこれはExcelのCSVの仕様に準じている。

・カンマ区切り
・ダブルクォーテーション内のカンマは区切りとみなさない。
・二連続のダブルクォーテーションは、文字としてのダブルクォーテーションと見なす。
(項目にダブルクォーテーションを含めたい場合には、ダブルクォーテーションを2つ打つこと)
・閉じていないダブルクォーテーションはエラー。

入出力は過剰だと思うぐらい明確にしたほうがいい。

987:側近中の側近 ◆0351148456
08/08/25 20:50:39
(っ´▽`)っ
>>986に追加。

項目にカンマを含めたければ、ダブルクォーテーションで項目を囲うこと。
(例:"1,000","12,000")

988:967
08/08/25 20:52:23
ActiveSheet.Shapes.AddShape(msoShapeOval, 257.25, 109.5, 39.75, 21.75).Select
Selection.ShapeRange.Fill.Visible = msoFalse
Selection.ShapeRange.Fill.Transparency = 0#
Selection.ShapeRange.Line.Weight = 1.5
Selection.ShapeRange.Line.DashStyle = msoLineSolid
Selection.ShapeRange.Line.Style = msoLineSingle
Selection.ShapeRange.Line.Transparency = 0#
Selection.ShapeRange.Line.Visible = msoTrue
Selection.ShapeRange.Line.ForeColor.SchemeColor = 64

これで2003でうまく塗り潰しの無い輪っかが描けたので
会社の2007に組み込んだんだけど、今度は黒塗り潰しに化けてしまいました・・・・
急遽マクロの記録で輪っかを描いてみたものの、なんと2007では図の挿入あたりの記録はしてくれないようです・・・。
互換性が無いのもむかつくが、マクロ記録も改悪されてるとは実に情けない話と思います。

どなたか、黒丸で中塗り潰しの無い輪っかを2007で実現してくれるコードを教えてください。

989:デフォルトの名無しさん
08/08/25 21:04:19
マクロの自動記録でいいんじゃないの

990:デフォルトの名無しさん
08/08/25 21:10:10
CSV仕様きめても精確な実装はなかなかむずかしい。
もうほんと想定外の入力がされてたりする。

特に業務でよくあるのが複数行にわたって改行つきのコメントフィールドとか
SJISとはかぎらんわけで、難しい。

もうこれでいいだろ、とおもうくらい慎重に実装しても、おれの技術じゃ
100万件のフィールドよむと、たいてい2,3件は、バグにかかる。
で、そっから、その特殊なケースをADHOCに直していくという対応。
例外でたからあとから3件追加しますとか、じゃ納得してくれんし、3年後に
でるかもしれないわけで。。。ほんと怖いよ。

一番いいのは、EXCELでCSVをよみこむのはあきらめることじゃ。。。


991:967
08/08/25 21:15:57
>>989
2007ではマクロの記録をしても、オートシェイプの挿入〜線種変更などをなにも記録してくれないのです。

992:側近中の側近 ◆0351148456
08/08/25 21:16:40
>>991
(っ´▽`)っ
ウォッチウィンドウでそれっぽいプロパティを探せ☆

993:デフォルトの名無しさん
08/08/25 21:54:19
>>991
2007で普通に記録できたよ。
ついでに貼っておきますね。

ActiveSheetのオートシェイプを赤にするコード。

Dim sp As Shape
For Each sp In ActiveSheet.Shapes
With sp
sp.Fill.Visible = msoTrue
sp.Fill.Solid
sp.Fill.ForeColor.SchemeColor = 10
sp.Fill.Transparency = 0#
sp.Line.Weight = 0.75
sp.Line.DashStyle = msoLineSolid
sp.Line.Style = msoLineSingle
sp.Line.Transparency = 0#
sp.Line.Visible = msoTrue
sp.Line.ForeColor.SchemeColor = 64
sp.Line.BackColor.RGB = RGB(255, 255, 255)
End With
Next



994:デフォルトの名無しさん
08/08/25 22:03:21
これで透明になるよ
For Each sp In ActiveSheet.Shapes
sp.Fill.Visible = msoFalse
Next


995:デフォルトの名無しさん
08/08/25 22:44:49
999-9999-9999や9999-99-9999の書式で入力された電話番号を
(999)-9999-9999や(9999)-99-9999の書式にしたいのですが
A=Range("A1").Value
B=Find("-",A,1) -の位置
C=Left(A,B-1)    -の前だけ抽出
D=Mid(A,B,Len(A)-B+1) -の後ろを抽出

求める文字列="(" & C & ")" & D

関数だとこんな感じだけど、VBAではどうやりますか?



996:デフォルトの名無しさん
08/08/25 22:45:45
うちはXMLに統一してるんでCSV時代のトラブルは一切無くなったな。

997:デフォルトの名無しさん
08/08/25 22:46:41
>>995
InStr

998:y
08/08/25 22:57:06
>>984
ありがとうございます。大文字・小文字を考えなくて済むのでますます楽です。

>>985
まさかそんな罠があるとは...。自分でも実験してみます。

999:デフォルトの名無しさん
08/08/25 22:59:46
ume

1000:デフォルトの名無しさん
08/08/25 23:01:54
1000

1001:1001
Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4635日前に更新/336 KB
担当:undef