[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 12/27 15:50 / Filesize : 259 KB / Number-of Response : 921
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA質問スレ Part9



1 名前:デフォルトの名無しさん mailto:sage [2008/12/04(木) 15:42:51 ]
ExcelのVBAに関する質問スレです

前スレ pc11.2ch.net/test/read.cgi/tech/1219673793/

★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 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み
   コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。
   ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。

★6 わからなければとりあえず「マクロの記録」(Alt, T, M, R)


513 名前:505 mailto:sage [2009/01/13(火) 17:18:25 ]
>>506
そのままでいいじゃん
for i=1 to 5


514 名前:505 mailto:sage [2009/01/13(火) 17:20:27 ]
>>506
途中で送信してしまった

for i=1 to 5
  if i=3 then
    stop
  endif
next i

みたいに。

515 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 20:24:40 ]
単に止めるだけなら
for i=1 to 5
  if i=3 then stop
next i
って書く。

516 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 21:12:47 ]
俺は処理が1行でもThenの後ろには書かない
もちろん、If ... Then ... else ...もやらない

517 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 21:36:38 ]
>>514
>>515
ありがとうございました。
stopで止まりました。


518 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 21:51:33 ]
>>516
すいません
そのわけを教えてください

519 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 22:15:21 ]
クラスモジュールについてドップリ勉強できる書籍はないだろうか?

520 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 22:39:31 ]
勉強するほどのものじゃないんじゃ

521 名前:デフォルトの名無しさん [2009/01/13(火) 22:54:17 ]
IPアドレスを
123.456.789.10
からx番目のIPアドレスを求めるような
EXCEL関数かVB関数を探してるのですが、
そんな便利なものありませんか?




522 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 23:17:28 ]
x番目って何よ?

523 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 23:23:36 ]
Split("123.456.789.10", ".")(x)でいいんじゃねーの

524 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 23:25:33 ]
>>522
すみません。
123.254.90.10から
1番目は、123.254.90.11
2番目は、123.254.90.12、

という意味です。
上のIPアドレスの範囲も間違えて、あぁぁぁ、出直してきます。
失礼しました。。。。


525 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 23:28:29 ]
単なる足し算じゃね

526 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 00:02:10 ]
うーん
Sub test()
  For x = 1 To 10
    A = Split("169.254.100.10", ".")
    A(3) = A(3) + x
    Debug.Print Join(A, ".")
  Next
End Sub

527 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 01:48:01 ]
123.254.90.256とかやりそうな奴だな

528 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 20:38:53 ]
123.54.90.999 とかやってくれたら笑えるんだけど

529 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 00:29:42 ]
OSはXP
EXCELは2003です。

1.EXCEL上に別のEXCELシートを開くハイパーリンクを貼る
2.リンク先のシートが開くと同時に

Private Sub Workbook_Open()
Workbooks("Book1").Close
End Sub

みたいな感じで処理を走らせ、リンクで開いたシート自体を閉じる

のような処理を入れるとシートが閉じられた後、EXCELがおかしくなります。
アクティブになっているEXCELシート以外のシートがアクティブにできないし、
新たに別のシートも開けなくなります。

ハイパーリンクとリンク先のシートを閉じる処理って同時には行えないんですかね?

530 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 01:01:19 ]
>>529
イベント処理中でブックを閉じると実行中のインスタンスが開放されて暴走するんだっけ、
なんかそんなのがあったような気がする。

531 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 03:44:25 ]
開く方に
Book1閉じるって書くしかないんじゃね



532 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 04:02:02 ]
マクロ専用のブックを1つ用意して、それは閉じないようにするとか

533 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 18:17:44 ]
すみません。質問させて下さい。

Excel2002のシートにラベルコントロールを貼付けました。
それをクリックすると、マウスカーソルがコントロールから離れるまで
コントロール全体のサイズが若干大きくなってしまいます。
これは仕様でしょうか?
もし対処方がありましたら、御教示下さい。

534 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 18:20:29 ]
>>533
フォーカス位置を示す点線で囲まれた状態のことを言ってんなら、それは仕様

535 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 18:37:33 ]
>>534
回答ありがとうございます。

ラベルのキャプションのテキストのサイズも変化するので、
フォーカスの点線ではないと思われます。

キャプションのテキストは通常状態ですと文字が滲んでおり、
クリックしてラベル全体が大きくなると文字がハッキリすることから、
ラベルをクリックしたときのサイズが正しいような気がします。

536 名前:デフォルトの名無しさん [2009/01/15(木) 19:37:27 ]
質問です。

book1をアクティブにした状態のまま、book2の特定のセルに書き込みをしたいのです。
で、

Windows("book2.xls").Cells(1, 2) = 1

とやったのですが、エラーが出ます。
正しくはどうやればいいのでしょうか?

537 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 22:06:50 ]
× ブック.セル = 値
○ ブック.シート.セル = 値


538 名前:デフォルトの名無しさん [2009/01/16(金) 18:33:12 ]
すいません質問です。
VBAを使い年賀状を作成しなければならないのですが まず何からどうしたらよいかさえわかりませんm(_ _)m
お願いします。汗

539 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 18:40:34 ]
まずは作成しなければならない状況に陥らせた人に聞くべきだろう

540 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 18:48:41 ]
マクロ記録しながらシートで作ればいいよ

541 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 19:00:27 ]
この時期だと年賀状じゃなくて寒中見舞いだぞ



542 名前:536 [2009/01/16(金) 19:27:50 ]
>>537
レスありがとうございます。

さっそくやってみました。

Windows("book1.xls").Sheets("Sheet1").Cells(1, 2) = 1

とやったのですが、やはりエラーが出ます。
なぜなのか、さっぱりわかりません。
しつこいようですが、教えて下さい<(_ _)>

543 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 20:03:41 ]
ちょっとはぐぐれよ。オブジェクト名やメソッド名がおかしいだろ。

Sub test()
  Workbooks("book1.xls").Activate
  Workbooks("book2.xls").Worksheets("Sheet1").Cells(2, 1) = 1
End Sub

544 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 23:03:00 ]
Excel 2000ですがマクロのステップ数が大きくなると、
ブックのファイルサイズがMB単位で肥大化して困ってますが、
皆さんどうしてますか?

545 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 23:17:27 ]
そんな現象おきないのでどうもしてないが

546 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 23:24:57 ]
どんだけ巨大なマクロを作ってるんだか。
ワークシートを操作するマクロを何度も走らせるとファイルが太る可能性はあるが、
それならシートの再構築でダイエットできるかもしれない。

547 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 23:27:09 ]
以下の構成で、hogeよりfugaにあるクラスを生成(new)しようとすると、
「ユーザ定義型は定義さていません」エラーとなります。
クラスでないモジュールの場合はそのまま呼び出せてます。
名前空間の問題と思われますが解決方法はありますでしょうか?

hoge.xls → fuga.xla(参照設定)


548 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 23:31:21 ]
>>546
マクロは相当な量です。
再構築は以前試した時は多少は改善しました。
でも、まっさらなブックにマクロのみ貼り付けても、
それ以上は小さくならなかったのでコレが限界かと。

549 名前:デフォルトの名無しさん [2009/01/16(金) 23:32:49 ]
>>543
おおおおお、ありがとうございました!!

550 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 23:34:08 ]
Variant型をできるだけ使わないようにするとか

551 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 00:30:00 ]
>>547
support.microsoft.com/?scid=kb%3Ben-us%3B555159&x=14&y=9



552 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 10:08:15 ]
シートをそれぞれ別ブックに保存する方法教えて。
保存名はシートの名前で。

553 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 11:38:51 ]
それを手動でやる方法すら思いつかないの?
思いつくならそれをマクロの記録で録ることすら
思いつかないの?馬鹿なの?死ぬの?

554 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 11:44:17 ]
>>552
ワークシートコレクションに対するループの中で
(1) シートが1枚のブックを新規作成
(2) そこへシートをコピペ
(3) 名前を付けて保存
(4) 新規ブックを閉じる
を繰り返す

とりあえず>>1の★5の理由によりまずは自分で作ってみれ。方法は★6で。

555 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 13:44:33 ]
>>551
ありがとうござました。
しかし各クラスごとに生成用のメソッドが必要とは...
これがなければ理想的なんですが。

556 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 17:44:47 ]
>>555
オブジェクト指向ではコンストラクタとデストラクタもクラスライブラリで用意することになってる。
というか勝手にインスタンス化するのは不可能だろ。どんだけメモリが必要かもわからんのに。

557 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 17:49:40 ]
>>556
おまい判ってない。
↓ではコンストラクタでなはく生成用のグローバルなメソッドを
クラスの外に定義しろっていってんだよ。
オブジェクト指向以前の問題。

ttp://support.microsoft.com/?scid=kb%3Ben-us%3B555159&x=14&y=9


558 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 18:00:01 ]
シートの表示倍率の値は取得できます?

559 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 18:44:18 ]
>>556
Excelのclassのインスタンス化プロパティがPrivateかPublicNotCreatebleしか選べないから
外部から直接インスタンス化できないという仕様なのが問題で、コンストラクタは関係ない。

560 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 19:30:45 ]
Withっていいな。Withでネストしまくったコード見ると癒される。

561 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 20:43:17 ]
>>558
出来ますよ



562 名前:デフォルトの名無しさん [2009/01/18(日) 11:40:34 ]
すみません、質問です。
エクセル2003のVBAについてです。

フォーム内に、セル(もしくは、エクセルのセルと同様の働きをするもの)
の貼りつけることってできるのでしょうか?

563 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 12:15:21 ]
>>562
ググれカス
q.hatena.ne.jp/1148568634

これで良い?

564 名前:デフォルトの名無しさん [2009/01/18(日) 13:52:10 ]
withを使った方が処理の速度は速くなりますか?

565 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 13:54:43 ]
はい

566 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 13:59:02 ]
EXCEL2003です。
VBAの処理の中でハイパーリンクをセルの書式設定にてロックを解除したセルに貼り、
その後シート全体をセルの選択が出来ない形で保護する
つまりハイパーリンクのあるセル以外は押しても反応が無いよう保護する処理を作ったのですが、
ハイパーリンク以外のセルを押すとリンク先の画面が立ち上がってしまいます。

ハイパーリンクのあるセル以外は選択することも出来ないような画面を作りたいのですが、
何故上のような画面が出来てしまうのでしょうか?

567 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 14:34:48 ]
> 何故上のような画面が出来てしまうのでしょうか?
保護により選択出来ないセル上で行ったクリック動作は
現在選択状態にあるセル上で行ったものとして扱われる
故に選択できるセルが1セルなら、どこをクリックしようとそのセルをpクリックした扱いになる

君の要望を実現するには、セル上のハイパーリンクではなく、
ボタンコントロールなどを使ってリンク先に飛ぶのが適切だろうな
まあガンバレ

568 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 15:07:11 ]
うん!僕がんばるよぉぉぉおおお!!

569 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 16:35:58 ]
WindowsXP上でEXCEL2003を使用してます。

フォームに入力した内容を編集してシートに反映させるマクロを作成しているのですが、
マクロ実行中はシートをアクティブに出来ないのでマクロを終了させないと
シートの変更内容の確認が出来ません。(テスト作業+デバッグの効率が悪い…)

マクロ実行中(フォーム表示中)でも、シートのウィンドウをアクティブにしてシート選択が
可能になる方法はあるのでしょうか?

よろしくおねがいします

570 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 17:58:08 ]
>>569
VBEのウィンドウを最大化しなければいい

571 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 18:31:58 ]
>>569
普通に見れるだろ



572 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 19:46:29 ]
マクロを手動で実行ではなく、
(例)表列A1、A2に数値を入力したらリアルタイムに(マクロ側に計算式記述。例えば A1*A2)A3に結果を表示させようとする場合どうすればいいでしょう?

解説サイト見てもブック起動時実行ってのばかりしか見つからない…

573 名前:569 mailto:sage [2009/01/18(日) 19:48:39 ]
もう少し作成しているマクロを説明すると、

・マクロはsheet1上に置いたコマンドボックスから開始する(フォームが表示される)
・フォームに入力した内容が反映されるのはsheet2・sheet3

で、
・フォームが表示されている状態ではExcelのウインドゥをアクティブにすることが出来ない
・なので、マクロで変更されている筈のsheet2・sheet3を開くことが出来ない

という状態です。

>>570
VBEのウインドゥについては開いている状態でも閉じている状態でも上記の現象に変わりありません。

>>571
マクロがsheet1を編集しているなら普通に見れるとは思いますが、
編集しているのは背面にある他のシートなので…


574 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 19:48:44 ]
>>572
ワークシート関数と同じ感覚?
それならSelectionChangeで出来る。
シートごとに設定しないといかんけどね。


575 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 20:11:43 ]
>>569,573
Modelessで呼べば良いだけでは?

>>574
SelectionChangeではなくChangeだろ
SelectionChangeは選択セルが変更されたとき
Changeはセルの値が変更(入力、削除など)されたとき

それと対象セルと処理内容が同じならシート毎に設定する必要も無い
ブック単位、あるいは全ブックを対象に一括処理する方法もある

576 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 20:20:07 ]
>>575
vbModelessを付けてフォームを開いたところ上手くいきました、
ありがとうございます。

577 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 21:34:00 ]
>>574
多分functionとrangeを使ってどうにかこうにか書くのだと思うのですが上手くいかない

578 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 21:36:51 ]
>>577
ヒント
Workbook_SheetChange
Application.EnableEvents = False

579 名前:教えてください [2009/01/20(火) 00:51:55 ]
質問です。初心者です。
複数のブックに散らばっている同じ名前のシートを、1ブックの1シートにまとめたいのですがうまくいきません。
msgbox "5"までは表示されるので、次の行がおかしいのだと思います。
「motosheet.」の記述を消すとマクロ自体は動作するのですが、コピー元のブックではなくてコピー先のブックを参照してしまいます。
なぜか、rangeの親オブジェクトを記述すると「実行時エラー 1004 アプリケーション定義またはオブジェクト定義エラー」となります。
1行前はrangeの親オブジェクトを記述しても問題ないのに・・・
本当に困っています。よろしくお願いします。



580 名前:教えてください [2009/01/20(火) 00:52:34 ]

Private Sub CommandButton2_Click()
Application.ScreenUpdating = False

Dim motobookspath As Variant
Dim motobookpath As Variant
Dim 先ブック入力済み最終行番号 As Long
Dim データ貼り付け開始行番号 As Long
Dim sakirange As Range
Dim motorange As Range
Dim motobook As Workbook
Dim motosheet As Worksheet
Dim 入力済み最終行番号 As Long

motobookspath = Application.GetOpenFilename(filefilter:="Exclブック,*.xls", MultiSelect:=True)
MsgBox "1"



581 名前:教えてください [2009/01/20(火) 00:53:00 ]

For Each motobookpath In motobookspath
先ブック入力済み最終行番号 = ThisWorkbook.Worksheets("データ").Range("i1").End(xlDown).Row
データ貼り付け開始行番号 = 先ブック入力済み最終行番号 + 1
MsgBox "2"

Set sakirange = ThisWorkbook.Worksheets("データ").Cells(データ貼り付け開始行番号, 1)
MsgBox "3"

Set motobook = Workbooks.Open(Filename:=motobookpath)
Set motosheet = motobook.Worksheets("データ")
MsgBox "4"

入力済み最終行番号 = motosheet.Range("i1").End(xlDown).Row
MsgBox "5"
Set motorange = motosheet.Range("a2", Cells(入力済み最終行番号, 19))

motorange.Copy Destination:=sakirange
motobook.Close savechanges:=True
Next

Application.ScreenUpdating = ture

End Sub



582 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 01:06:50 ]
Set motorange = motosheet.Range("a2", Cells(入力済み最終行番号, 19))

Set motorange = motosheet.Range("a2", motosheet.Cells(入力済み最終行番号, 19))

583 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 06:51:42 ]
巷ではこういうコードが普通にあんのかね。

584 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 11:38:28 ]
誰もがプログラミングの専門家じゃないからね。
入門書を斜め読みして断片的な知識で「動けばいい」程度のコードを書いてる人のが圧倒的に多いよ。

585 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 19:28:45 ]
超初心者で申し訳ありませんが・・・
エクセルのシートにある数字と文字列をCSVファイルに下記のように出力したいです。

(エクセル) 
      123,鈴木
      1013,田中
(出力) 番号,名前
     0123,鈴木
     1013,田中

自分で作ってみたところ、下記のように文字列になってしまいます。
(出力) ”番号”,”名前”
     ”0123”,”鈴木”
     ”1013”,”田中”

となってしまいます。
どのようにすれば良いのでしょうか。
よろしくお願い致します。

586 名前:579 [2009/01/20(火) 21:14:18 ]
>>582
うぉー!! ありがとうございます!!!!
2日悩み続けてました。CellsオブジェクトもThisworkbookの子オブジェクトとして認識されて
しまっていたのですね。
でも悩みに悩んでいるといろんなことを考えるから、勉強にはなりますよね。

>>583
もっと違った記述方法があるんですかね?教えてください。

587 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 21:48:51 ]
>>585
どんなプログラムを作ったの?

588 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 22:07:54 ]
>>579
まず変数名に日本語を使うところからダメだわ。

589 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 22:14:47 ]
>>588
それは場合によりけりだな

590 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 22:21:17 ]
場合というか,使われ方とか規模とか書く人とかによるな
どちらかに決めて使い分けはしない

591 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 00:29:10 ]
俺も変数名に日本語使うの抵抗あるけど
日本語使うとコードが分りやすくなるような気もするから
使おうかなとも思うけど…
でも抵抗あるんだよなー



592 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 00:39:52 ]
英語だと既存の関数名、メソッド、プロパティ、その他予約後などと被る時、
ローマ字で書くのは嫌いだから日本語で書いちゃう

593 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 01:02:53 ]
>>592
確かに!
日本語で書けば被らないな
てことは日本語で書いたほうが合理的だな

594 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 05:44:10 ]
ActiveXコントロールのテキストボックスをワークシート上で使う場合、
Heightを文字の大きさの2倍以上にしないと、文字が崩れますが
解決法はありますか?

595 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 07:15:08 ]
日本語は入力が面倒臭いのが難点。

596 名前:デフォルトの名無しさん [2009/01/21(水) 20:02:04 ]
Excel2003にて、インターネット上からXMLを取得して利用するツールをつくって
いるところなのですが、文字化けを起こします。

Dim get_xml As Object
Set get_xml = CreateObject("MSXML2.DOMDocument.3.0")
get_xml.async = False
get_xml.Load (src_url)

抜粋するとこのようなコードです。
このときに、 ‖ この文字だけが、半角?に変換されてしまいます。get_xml.Load
した直後で既に?に変わってしまっているのですが、どうすれば解消するでしょうか?
取得するxmlはUTF-8で、IE等のブラウザから見ると正常に‖と見えます。
よろしくおねがいします。

597 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 20:23:54 ]
>>596
>>1★3,★4

598 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 22:56:21 ]
>>597

失礼しました。。。

599 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 17:46:03 ]
日本語の変数名に関しては、漢字のみの送り仮名無し。って条件ならOKにする事が多いなぁ。
送り仮名が入ると面倒だよね。
あとは、変数名一覧表を作っておく事が絶対条件かも・・・。

600 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 18:10:08 ]
>>599
Option Explicitは必須だね。
なまじわかりやすすぎて、同じ意味の別の熟語に無意識に脳内変換しちゃうことがある。

601 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 19:03:30 ]
質問です。宜しくお願いします

セルA1には、「8:00」がはいっているとして、

Option Explicit

Sub test1()
UserForm1.TextBox1 = Range("a1").Value
UserForm1.Show
End Sub

これで、テキストボックスに「0.33333333」じゃなく、
きちんと時刻を表示させるにはどうすればよいですか。



602 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 19:27:06 ]
右辺をRange("A1").TextとかFormat$(range("A1").Value,"h:mm") など。
TextはA列のセル幅が狭いと##とかなるけど。

603 名前:質問です [2009/01/22(木) 20:03:19 ]

Sub test()

Cells(1, 1).Activate
Do Until ActiveCell = ""
入力値 = ActiveCell
If 入力値 Like "*[C,CX*,O,OX*,O2,O2X*,Fe]" = True Then
If 入力値 Like "*[O,OX*]" = True Then
If 入力値 Like "*O" = True Then
処理 = 1
ElseIf 入力値 Like "*X2" = True Then
処理 = 2
End If
ElseIf 入力値 Like "*[Fe,Fe*]" = True Then
If 入力値 Like "*Fe" = True Then
処理 = 3
ElseIf 入力値 Like "*X2" = True Then
処理 = 4
End If
Else
If 入力値 Like "*[O2,C]" = True Then
処理 = 5
ElseIf 入力値 Like "*X2" = True Then
処理 = 6
End If
End If

604 名前:質問です [2009/01/22(木) 20:04:18 ]
ElseIf 入力値 = "*[Au,AuX*,Ag,AgX*,Pt,PtX*,Au1,Au1X*,Ag1,Ag1X*,Pt1,Pt1X*]" = True Then
If 入力値 Like "*[Au,AuX*,Ag,AgX*,Pt,PtX*]" = True Then
If 入力値 Like "*[Au,Ag,Pt,]" = True Then
処理 = 7
ElseIf 入力値 Like "*X2" = True Then
処理 = 8
End If
ElseIf 入力値 Like "*[Au1,Au1X*,Ag1,Ag1X*,Pt1,Pt1X*]" = True Then
If 入力値 Like "*[Au1,Ag1,Pt1]" = True Then
処理 = 9
ElseIf 入力値 Like "*X2" = True Then
処理 = 10
End If
Else
処理 = 11
End If
Else
処理 = 12
End If
ActiveCell.Offset(0, 1).Activate
ActiveCell = 処理
ActiveCell.Offset(1, -1).Activate
Loop
End Sub

どうも分岐がうまくいかないのですが。

605 名前:質問です [2009/01/22(木) 20:05:07 ]
以下、その処理文字列です。
対象に[*]があることで違う分岐を選んでいそうですが、
ほかのものも予想外の分岐をするのですがなぜでしょうか。
(説明が下手ですいません)
J0015-1*2
J0015-2*2
J0235-2PtAuX10
H0053-1PtX2
H0036-2C
H0037-1CX2
J0004-1*2-O
J0004-1*3-O1X2
J0004-1*3-OX2
H0053-1Pt1X2


606 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 21:16:29 ]
NAMAE = Cells(1, 1)
KUMI = Cells(2, 1)
If NAMAE = "" Then
NAMAE = "*"
End If
If KUMI = "" Then
KUMI = "*"
End If

row1 = 3

Do While Cells(row1, 1).Value = ""
Set aaa = Cells(row1, 2).Find(What:=NAMAE, LookAt:=xlPart)

Set bbb = Cells(row1, 3).Find(What:=KUMI, LookAt:=xlPart)

If Not aaa Is Nothing And Not bbb Is Nothing Then
'条件が合ったときの処理
End If
row1 = row1 + 1
Loop

変数のNAMAEとKUMIを検索項目にして目当ての行を見付けるプログラムを作ってます。
例えばNAMAEに入力があればKUMIがスペースでもNAMAEが一致する行をすべて検索できるようにしたいのですが、
上のようにすると検索対象の一覧の中で名前(row1, 2)が一致しているのに、組(row1, 3)がスペースの行が検索に引っかかりません。
一覧の中で検索対象セルの入力有無に関わらず、検索に引っ掛けるようにするにはどうしたらいいでしょう?
質問がわかりにくいとは思いますがお願いします。

607 名前:606 mailto:sage [2009/01/22(木) 21:23:56 ]
すいませんまちがえました。

上の
Do While Cells(row1, 1).Value = ""   



Do While Cells(row1, 1).Value <> ""
の間違えでした。

608 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 22:23:09 ]
読む気になれない・・・。

609 名前:606 mailto:sage [2009/01/22(木) 23:37:24 ]
すいません。
最善の処置かはわかりませんが、自己解決しました。
スレ汚し失礼しました。

610 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 00:05:26 ]
特定のEXCELシートが開いている時にはそのシートを閉じ、
開いていなければ何もしないという処理って可能ですか?

611 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 00:08:50 ]
>>610
ブックじゃなくてシート?



612 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 00:28:23 ]
>>610
ブックなら可能
やりかたは自分で調べろ

613 名前:610 mailto:sage [2009/01/23(金) 00:29:16 ]
>>611
間違えました。
シートではなくブックです。
失礼しました。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<259KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef