Excel VBA 質問スレ Part17at TECH
Excel VBA 質問スレ Part17 - 暇つぶし2ch955:デフォルトの名無しさん
11/02/13 12:58:24
>>951
Trim かけて "" と比較するのがよくない?
大したコストじゃないでしょ。

956:デフォルトの名無しさん
11/02/13 13:05:31
>>954
まず、エラーについて

元データブックを開いた段階で、転記先ブックがアクティブじゃなくなる

従って

Set 転記先 = ThisWorkbook
転記先.Activate
転記先.Worksheets("確認").Select

とする

次に複数のシートを選択するには、SelectのオプションReplaceを指定する

Worksheet オブジェクト.Select(Replace)

以下、Replaceについての引用
(シートでのみ使用) 既に選択しているオブジェクトの選択を解除して、
指定したオブジェクトのみを選択するには、True を指定します。
既に選択しているオブジェクトに加えて、指定したオブジェクトを選択するには、False を指定します。

957:954
11/02/13 13:32:28
>>956さん
私の書き方が悪く申し訳ありません。
転記元ブックはもともと開いており、このコードを記述しています。

[OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls?") ]
で開くのは転記先ブックです。

いま見直して気付いたのですが、[Set 転記先 = ThisWorkbook]
が間違っているとおもうのですが、どう修正したらよいでしょうか?

Worksheets("確認")は後から開いた転記先ブックにあり、

Set 転記先 = OpenFileName
転記先.Activate
転記先.Worksheets("硬質").Select

としてもエラーが出ました。



958:デフォルトの名無しさん
11/02/13 14:42:46
>>951

If TextBox1.Text = "" Then

これじゃ拙いのか?
もしそうなら理由を請う!
 


959:956
11/02/13 17:44:41
>>957
もう解決してるかもだけど

If OpenFileName <> "False" Then
Set 転記先 = Workbooks.Open(OpenFileName)
Else
MsgBox "キャンセルされました"
Exit Sub
End If

で、いいかなと

デバッグとかの使い方を練習した方が良いかと思う

960:954
11/02/13 17:58:34
>>959
上手くいきました。ありがとうございました。

おっしゃる通りまだまだ勉強不足なので精進します。

助かりました!


961:デフォルトの名無しさん
11/02/13 18:58:18
>>958
色々Bingってみたりしたけど、結論としては、
vbNullStringは、ポインタに変換すると必ずNULLになる空文字列、
って感じっぽいな。
つまり、文字列として扱っている分には、""と全く変わらない。
""がポインタに変換された時、必ずNULLにならないかどうかは知らん。

962:デフォルトの名無しさん
11/02/13 19:11:44
TextBoxやComboBoxは未入力時は長さ0の文字列じゃなく値0の文字列を返すから
If TextBox1.Text = vbNullString Thenがベターではある。
If StrPtr(TextBox1.Text) = 0 Thenでもよいが。

963:デフォルトの名無しさん
11/02/13 19:52:00
プログラムかいてると、
人間の判断力ってすげぇ
って思えてくる

964:デフォルトの名無しさん
11/02/13 21:07:08
>>962
>TextBoxやComboBoxは未入力時は長さ0の文字列じゃなく値0の文字列を返す
これをはっきり示した資料あるか?

TextBox1.Textなんかだと、""代入してもvbNullStringになるっぽいが、
普通の文字列変数だとそうならないみたいだな

VBAでは通常NULLストリングとNULLポインタの区別をする必要はないんだし
API呼び出し等で明示的にNULLポインタである必要がある場合以外、vbNullStringは
使わない方がいいと思うが

965:958
11/02/13 23:51:07
確かにstrptrでは0になるな

ただ、
TextBox1.Text = ""
TextBox1.Text = Empty
TextBox1.Text = vbNullString
これがみなTrueになるわけだから、
今回のことは知識として頭にいれとく程度でよさそうだな

それに、>>964も言っとるように、
またヘルプにも書いてあるように
vbNullStringは外部プロシージャの呼び出しで使うのがええような。。

何れにしろ、またまた勉強になった、ありがとな


966:デフォルトの名無しさん
11/02/14 20:02:06
web上にあるファイルをダウンロードするのに何かないかなと思って
探したらURLDownloadToFileというのがあって使ってみたんだけど

URLDownloadToFile(0, "URLリンク(www.abc.com)", "c:\", 0, 0)

プロトコルがhttpならOKなんだけど、httpsでsslが入るとダメ。
これって何かいい解決方法はないでしょうか?

それともVBAでhttpsでファイルを落とすのは無理?
分かる方是非教えてください!

967:デフォルトの名無しさん
11/02/14 21:28:34
>>966
MSXMLを使えば可能

968:デフォルトの名無しさん
11/02/14 21:46:56
>>967
ありがとございます!
ちょっと調べてみたのですが

Dim objHttp as Object buf As String
Set objHttp = CreateObject("MSXML2.XMLHTTP")
objHttp.Open "GET", "URLリンク(www.abc.com)", False

こんな感じのコードで上のコードで「http」の部分が「https」でも
OKということでいいでしょうか?
ちょっと今実行環境がないので。。。
ありがとございます!

969:デフォルトの名無しさん
11/02/15 11:55:32
ユーザーフォーム内でenterキーにhogeボタンを押したときと同じ動作をさせたいです
ググりながらやってみましたが何か根本的に間違ってるような気がしてきました
どうしたらいいのでしょうか?

Sub UserForm_Initialize()
   Application.OnKey "{Enter}", "hoge_Click"
End Sub

Sub hoge_Click()
   xxx
End Sub

970:デフォルトの名無しさん
11/02/15 12:32:44
>>969
そのフォームの中にボタンが一個だけで、他に入力や選択を行うコントロールが一つもなければ
何も書かなくても自動的にEnter=ボタンクリックになる

あと、Application.OnKeyはEnterには使えない仕様

971:デフォルトの名無しさん
11/02/16 09:22:58
>>970
enter以外を割り当てても反応しないので諦め、
URLリンク(okwave.jp)で紹介されている方法は理解を超えていたので
Acceleratorプロパティで我慢することにしました
どうもありがとうございました

972:デフォルトの名無しさん
11/02/16 18:19:07
もしスレチだったらすみません。

accessのVBAからADOでexcelに
データを書きだしているのですが、
文字列扱いの数字にエラーインジケータが
ついてしまいます。
これをVBAで解除することは
できるのでしょうか?

973:デフォルトの名無しさん
11/02/16 20:08:04
>>972
最初からエラーチェックをしない設定には出来ないの?

974:デフォルトの名無しさん
11/02/16 20:22:28
Excelのヘルプで『エラーインジケータ』を見ると
色々出ていると思う

ただ、データのコンバージョンでエラーが出た場合、
一応、すべて目を通さないとひどい目にあうかも?

975:972
11/02/16 21:28:36
>>973
表示の有無設定ってツールオプションで行うので
ユーザの環境によって変わると思ってたんですけど
認識違いですかね?

>>974
ありがとうございます。
一度ヘルプも確認してみます。


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