Excel VBA 質問スレ Part61

■ このスレッドは過去ログ倉庫に格納されています
2019/04/25(木) 23:41:03.61ID:rni/4bMj0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512

ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part60
https://mevius.5ch.net/test/read.cgi/tech/1552736349/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2019/04/25(木) 23:47:29.76ID:TOmG9Zzp0
>>998
>おっさん、それじゃ値が二つできてしまう

出来て良いんだよ。
どうせ2つあっても上の値しか拾わないし。
2019/04/26(金) 00:13:53.35ID:bx/nrM53a
まだやってるのか
2019/04/26(金) 00:22:08.10ID:KXEc/Aen0
番兵の方を拾った場合は?
5デフォルトの名無しさん (ワッチョイ 8552-en87)
垢版 |
2019/04/26(金) 10:15:59.90ID:P7S61/Hq0
usedrange.columns.count は多用しますが
これを列番号ではなく
アルファベットで(AX列、というように)
取得することはできますか?
2019/04/26(金) 10:30:14.79ID:P7S61/Hq0
>>5
あ、addressメソッドがありました。
自己解決しました。
2019/04/26(金) 18:56:37.31ID:udZssoTkd
よっぽど自己矛盾について触れて欲しく無かったようだな。

>>973>>857はその後だと言ってるのに。
2019/04/26(金) 19:59:27.77ID:HeuAVqYr0
ネットワーク上のMDBファイルにADOで接続して取ってきたデータを帳票に表示→印刷というマクロを作りました
しかし1件なら問題ないものの、ループ実行すると正常終了で終わるのですが
実際に印刷すると2件目以降のデータが反映されず、全て1件目のデータが印字されます
どうもMDBから取ってくる部分のタイミングの問題に見える(その部分に差し掛かると画面が固まる。DoEventsを入れずに重い処理をさせたときの感じ)のですが、SleepやDoEventsを適宜挟んだり、印刷ではなく別ブックやpdfに書き出しなどに変更しても効果が見えません

この現象の解消方法をご存知の方いませんか?
2019/04/26(金) 20:55:16.93ID:/RLYU0hs0
>>7
まだやってるのかよ
悔しがりすぎww
2019/04/26(金) 22:32:55.22ID:dk67nCTl0
>>8
言ってることがよくわからんけど、adoで直結してデータとってきてるなら、doevents挟んでも意味ない
なので、そもそもバグってると思われる。

doeveが効果あるのは、間接的に(と言って伝わるかわからんけど)何か処理するとか表示を反映させるとかの場合
2019/04/27(土) 00:36:16.19ID:Oy0GcGsSM
>>8
俺も単なるプログラムミスだと思う
謎々シテナイデソース貼れよ
2019/04/27(土) 07:20:56.42ID:0MG9/7scr
movenextが無いとかループカウンタが加算されていないとか
2019/04/27(土) 09:50:04.14ID:xkuV+iFS0
ブレイクポイント置いたり、debug.print挟んだりするのは、
基本のキ
2019/04/27(土) 12:20:27.60ID:S53FxUuZ0
Sheet1, Sheet2, Sheet3 がある状態で
A1 =fnEnumSheetName() と入力すると
A1 シート名一覧
A2 Sheet1
A3 Sheet2
A4 Sheet3
と表示されるようにしたいのですが
A1に#VALUE!と表示されDebug.PrintがSheet1しか表示しません
期待通りにするにはどう修正すればいいですか?
For文3行目のコメントアウトを外すとDebug.PrintとA1の表示は期待通りです

'シート名列挙
Public Function fnEnumSheetName() As String

Dim iIndex As Integer

For iIndex = 1 To Worksheets.Count
Debug.Print Worksheets(iIndex).Name
' ActiveCell.Offset(iIndex, 0).Value = Worksheets(iIndex).Name
Next iIndex

fnEnumSheetName = "シート名一覧"

End Function
2019/04/27(土) 12:25:43.11ID:S53FxUuZ0
訂正です
× For文3行目のコメントアウトを外すとDebug.PrintとA1の表示は期待通りです
○ For文3行目をコメントアウトするとDebug.PrintとA1の表示は期待通りです
2019/04/27(土) 12:34:38.52ID:0MG9/7scr
ブック名を入れてみたら
2019/04/27(土) 12:41:15.22ID:0MG9/7scr
for iIndex=1 to workbooks("xxx.xls").sheets.count
workbooks("xxx.xls").sheets(iIndex).name
2019/04/27(土) 12:54:30.18ID:Nwb++xAe0
>>9
悔しいから反応してるんだろww
2019/04/27(土) 13:03:37.89ID:Nwb++xAe0
>>14
それ、前スレで言われてた副作用のある操作は難しいってのに該当する。

セルに入力中はVBAの実行が普通は出来ないから。
2019/04/27(土) 13:09:43.12ID:V/rwcmys0
ActiveSheet.Cells(1, 1) = "シート名一覧"
Dim iIndex As Integer

For iIndex = 1 To Worksheets.Count
ActiveSheet.Cells(iIndex + 1, 1) = Worksheets(iIndex).Name
Next iIndex

全く何がしたいのかわからない
2019/04/27(土) 13:11:56.45ID:Nwb++xAe0
>>20
それをfunctionにしてセルの中からよび出そうとしてる。

それでは動かない筈。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況