nofx35 の回答履歴
- access adoのトランザクション
access2003でSQLServer2008へのリンクテーブルを作成し、 vbaでadoを使ってデータ更新処理をしようとしています。 以下のように記述していますが、 実行後、BやCのテーブルが開かなくなります。 (正確にはインサートしたデータが表示されるであろうページがロックされているような動きです。) また、その状態からAccessを一旦終了し、再度起動すると、データがインサートされていない状態です。 コミットが効いてないように感じます。 こちら原因としてどんなことが考えられるでしょうか? ちなみにDAOで動かしても同様でした。 宜しくお願い致します。 以下 コード============================ Set cn = CurrentProject.Connection Set rst = New ADODB.Recordset cn.BeginTrans rst.Open "select key from A", cn, adOpenForwardOnly, adLockReadOnly Do Until rst.EOF cne.Execute "insert into B ( aa, bb) select aa, bb from A where key = " & rst!key & " " cne.Execute "insert into C ( aa, bb) select aa, bb from A where key = " & rst!key & " " rst.MoveNext Loop rst.Close cn.CommitTrans cn.Close set rst = Nothing set cn = Nothing
- 締切済み
- kyuukyuukyuu
- Visual Basic
- 回答数3
- dimを使わずにredimを使う場合
VBAを使っていて、 配列数を変数で定義したいのですが、 ネットで検索すると Dim aaaa() as integer Redim aaa(xxx, yyy) あるいは Dim aaaa() Redim aaa(xxx, yyy) as integer のようにdimで変数を定義した後にredimで定義しなおす方法が書かれてあります。 一方で、 Redim aaa(xxx, yyy) as integer のように、dimの定義を省略して、いきなりredimで配列を定義しても 問題なくプログラムは実行できることに気がついたのですが これら二つの方法に違いはあるのでしょうか? 後者を使っても問題ないでしょうか?
- ベストアンサー
- MASSYY
- Visual Basic
- 回答数1
- VBAでユーザーフォームが自動的に消える
作成したプログラムを実行している途中で プログラムの開始ボタンや終了ボタン、計算時間などを表示するように作成した ユーザーフォームが自動的に消えることがあります。 他のプログラムではその現象はなく、あるプログラムのある箇所のみで起きます。 しかしながら、毎回起きるというのではなく、3回に1回程度の頻度で起きます。 特にユーザーフォームが消えるようなことは書いていないのですが なぜこのようなことが起きるのでしょうか? 一応、その消える辺りに If (UserForm1.Visible = False) Then UserForm1.Show vbModeless というのを入れてみましたがうまくいきませんでした。 これはどのようにすれば改善できますでしょうか?
- 締切済み
- myumyu1234
- Visual Basic
- 回答数1
- アクセスでADO 並べ替えが適用できない
アクセスでADOを使っているのですが、 Sub test() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Set cn = CurrentProject.Connection rs.CursorLocation = adUseClient rs.Open "SELECT * FROM Q1", cn, adOpenStatic, adLockPessimistic rs.Sort = "受付日 DESC" For i = 1 To rs.RecordCount ・ ・ ・ このようなコードを作っていますが、 rs.Sortの部分で、「並べ替えを適用できません」になります。 レコード数は、15000件くらいです。 なぜ並べ替えができないのでしょうか? しょうがないからクエリで最初から並べ替えしておきますが、原因を教えてください。
- ベストアンサー
- iisevznruwopf
- Visual Basic
- 回答数1
- ADO VBA 実行時エラー3021
rs.Open "SELECT * FROM Tログイン WHERE サイト名='" & サイト名 & "'", cn, adOpenStatic, adLockOptimistic rs("日時") = Now() rs.Update このコードを実行しようとしたときに、 実行時エラー3021「BOFとEOFのいずれかTRUEになっているか、 または現在のレコードが削除されています。 要求された操作には、現在のレコードが必要です。」 と言うエラーが発生する場合があるのですが、 どういう意味のエラーなのかが良くわかりません。 ちなみに、 rs("日時") = Now() をコメントアウトして、 rs.Updateのコードを実行しても、同じエラーが発生します。
- ベストアンサー
- hcyyfnknnjo
- Visual Basic
- 回答数1
- ExcelVBAでのユーザーフォームについて
ご回答ありがとうございました。 これといった資料がなく(探し方が悪いのかもしれませんが)、少ない経験値で複雑なというか面倒な処理のマクロ(VBA)を組まされることになり、困っているところです。当初の話だと「勉強しながらでよい」ということだったのですが、いろいろと仕事が次々と舞い込んできて、そんな余裕もなくせっぱ詰まり少ない知識で必死にやっています。 先にご回答いただいた内容で是非アドバイスをいただきたいと思い、新たに質問させていただきました。 ユーザーフォームでマルチページを作っています。そこでもコンボボックスを使うのですがそこの記述方法をアドバイス下さい。やっぱり記述場所がおかしいのか、クリックするとリストの内容がコンボボックスをクリックした分だけ繰り返してしまうことがあります。 ////////////////////////////////////////////////////// Private Sub UserForm_Initialize() Dim sh As Worksheet Set sh = Worksheets("対象年") Dim i As Integer Dim lastRow As Integer lastRow = sh.Cells(Rows.Count, 1).End(xlUp).Row With ComboBox1 For i = 2 To lastRow If ComboBox1 = "" Then .AddItem sh.Cells(i, 1).Value End If Next i End With End Sub ////////////////////////////////////////////////////// Private Sub ComboBox1_DropButtonClick() Dim sh As Worksheet Set sh = Worksheets("対象年") Dim i As Integer Dim lastRow As Integer lastRow = sh.Cells(Rows.Count, 1).End(xlUp).Row With ComboBox1 For i = 2 To lastRow If ComboBox1 = "" Then .AddItem sh.Cells(i, 1).Value End If Next i End With End Sub ////////////////////////////////////////////////////// とまぁ、結局コードは同じなのですが。 それと、結果をラベルに出させる場合には回答で記述いただいた ////////////////////////////////////////////////////// Private Sub ComboBox1_Change() Dim vTgYear As Variant vTgYear = ComboBox1.Value Label1.Caption = vTgYear - 1 & "~" & vTgYear + 1 & "年" End Sub ////////////////////////////////////////////////////// で、よいでしょうか? よろしくお願いいたします。
- ベストアンサー
- minminwamidori
- Visual Basic
- 回答数2
- VBSを利用して、IEのタブを自動的に切り替え
VBSを利用して、IEのタブを自動的に切り替え続けるスクリプトを作成しています。 以下現状 手動でやる事 ・作成したVBSファイルをダブルクリックして起動 ・IEは常に画面の全面(アクティブウィンドウ)にしておく VBSファイルの中身 set W = WScript.CreateObject("WScript.Shell") do WScript.sleep 30000 W.Sendkeys "^{TAB}" loop これでも正常に動くのですが、 ここにESCキーを押す事でプロセスを終了させるスクリプトを追記したいのですが、どのようにしたらよいでしょうか。 ご教授お願いします。
- ベストアンサー
- vaki1031
- Visual Basic
- 回答数2
- VBSを利用して、IEのタブを自動的に切り替え
VBSを利用して、IEのタブを自動的に切り替え続けるスクリプトを作成しています。 以下現状 手動でやる事 ・作成したVBSファイルをダブルクリックして起動 ・IEは常に画面の全面(アクティブウィンドウ)にしておく VBSファイルの中身 set W = WScript.CreateObject("WScript.Shell") do WScript.sleep 30000 W.Sendkeys "^{TAB}" loop これでも正常に動くのですが、 ここにESCキーを押す事でプロセスを終了させるスクリプトを追記したいのですが、どのようにしたらよいでしょうか。 ご教授お願いします。
- ベストアンサー
- vaki1031
- Visual Basic
- 回答数2
- マクロ Publicでの配列定義
Excelマクロで、Publicステートメントで配列を定義し、 プロシージャ内で配列要素を増やすことはできないのでしょうか? 下記ロジックで2つのMsbBoxが表示されるようにしたいです。 よろしくお願いします。 Public pubTMP Sub test() pubTMP(2,2)="aaa" test222 Msgbox pubTMP(2,2) Msgbox pubTMP(3,3) End Sub Sub test222() pubTMP(3,3)="bbb" End Sub
- ベストアンサー
- gooidkoma
- Visual Basic
- 回答数3
- [VBA]改行入りのセルの値を配列に格納したい
EXCELのA列に下記のような値が入っています。 ----------- "aaa bb cccc" ----------- "ddd" ----------- "" ----------- "eee fff ggg hhh" ----------- といったようにセルの中の値に改行があったり、 なかったり、値すらなかったりといった感じです。 これを改行区切りで配列に入れたいんですが、いい方法ありませんか? 上の内容を下記のような配列にしたいんです。 arrValue=Array("aaa","bb","cccc") arrValue=Array("ddd") arrValue=Array("") arrValue=Array("eee","fff","ggg","hhh") よろしくお願いします。
- ベストアンサー
- kwang0205
- Visual Basic
- 回答数5
- シートが表示された時にメッセージを表示したい
win7・Excel2007でマクロ作成中の初心者です。 1)今ブック2個があります。 2)ひとつは、ブックAでマクロ書き込み用です。 3)もひとつは、ブックBで、データ作業用です。 4)やりたい事は、ブックAのユーザーフォームのコマンドボタンクリックで ブックBのシートCを表示させ、メッセージボックスを即座に表示させたいです。 5)そこで、ブックAにコードを書込みました。 Private Sub CommandButton89_Click() Unload Me 表を開く End Sub ----------------------------------------- Sub 表を開く() ChDrive ThisWorkbook.Path ChDir ThisWorkbook.Path On Error GoTo err: Workbooks("H25年11月の表.xls").Activate Exit Sub err: Workbooks.Open Filename:=ThisWorkbook.Path & "\綴り\H25年11月の表.xls" Sheets("確定").Select MsgBox "これを更新してください。" End Sub ところが、シートCを表示させてから、メッセージボックスを表示させたいのに Private Sub CommandButton89_Click() Unload Me こんなところで(この段階で)、メッセージボックスが出てきてしまいます。 表を開く ここで出したいです。 End Sub シートを開いてからメッセジボックスを開くにはどうしたらよいでしょうか?よろしくお願いします。
- ベストアンサー
- aitaine
- Visual Basic
- 回答数3
- シートが表示された時にメッセージを表示したい
win7・Excel2007でマクロ作成中の初心者です。 1)今ブック2個があります。 2)ひとつは、ブックAでマクロ書き込み用です。 3)もひとつは、ブックBで、データ作業用です。 4)やりたい事は、ブックAのユーザーフォームのコマンドボタンクリックで ブックBのシートCを表示させ、メッセージボックスを即座に表示させたいです。 5)そこで、ブックAにコードを書込みました。 Private Sub CommandButton89_Click() Unload Me 表を開く End Sub ----------------------------------------- Sub 表を開く() ChDrive ThisWorkbook.Path ChDir ThisWorkbook.Path On Error GoTo err: Workbooks("H25年11月の表.xls").Activate Exit Sub err: Workbooks.Open Filename:=ThisWorkbook.Path & "\綴り\H25年11月の表.xls" Sheets("確定").Select MsgBox "これを更新してください。" End Sub ところが、シートCを表示させてから、メッセージボックスを表示させたいのに Private Sub CommandButton89_Click() Unload Me こんなところで(この段階で)、メッセージボックスが出てきてしまいます。 表を開く ここで出したいです。 End Sub シートを開いてからメッセジボックスを開くにはどうしたらよいでしょうか?よろしくお願いします。
- ベストアンサー
- aitaine
- Visual Basic
- 回答数3
- シートが表示された時にメッセージを表示したい
win7・Excel2007でマクロ作成中の初心者です。 1)今ブック2個があります。 2)ひとつは、ブックAでマクロ書き込み用です。 3)もひとつは、ブックBで、データ作業用です。 4)やりたい事は、ブックAのユーザーフォームのコマンドボタンクリックで ブックBのシートCを表示させ、メッセージボックスを即座に表示させたいです。 5)そこで、ブックAにコードを書込みました。 Private Sub CommandButton89_Click() Unload Me 表を開く End Sub ----------------------------------------- Sub 表を開く() ChDrive ThisWorkbook.Path ChDir ThisWorkbook.Path On Error GoTo err: Workbooks("H25年11月の表.xls").Activate Exit Sub err: Workbooks.Open Filename:=ThisWorkbook.Path & "\綴り\H25年11月の表.xls" Sheets("確定").Select MsgBox "これを更新してください。" End Sub ところが、シートCを表示させてから、メッセージボックスを表示させたいのに Private Sub CommandButton89_Click() Unload Me こんなところで(この段階で)、メッセージボックスが出てきてしまいます。 表を開く ここで出したいです。 End Sub シートを開いてからメッセジボックスを開くにはどうしたらよいでしょうか?よろしくお願いします。
- ベストアンサー
- aitaine
- Visual Basic
- 回答数3
- ExcelVBAでClassの返り値について
ExcelVBAにおいて Set SheetObj = Workbooks("ブック名").Sheets("シート名") のようにメソッドチェーンで書くことができますがこれをクラスで 真似る場合 Public Function Workbooks(Optional ByVal BookName as Variant = "") '処理 Set Workbooks = Me End Function とすればメソッドチェーンで書けるようになりますが・・・ Set BookObj = Workbooks("ブック名") のように後ろにメソッドが来なければブックのオブジェクトを返すといったような 挙動をすることはできますでしょうか? まとめ。 クラスでメソッドチェーンとして使いたい時(後ろにメソッドが控えている時は) 自分自身(Me)を返し、メソッドとして使いたい時は、別の値を返したいなんてことは 可能でしょうか?
- ベストアンサー
- sample_
- Visual Basic
- 回答数2
- VBA コンパイル
エクセルVBA初心者です。 コードを記述している際に、”迷惑な”コンパイルエラーが出てきます。 例えば dim i i= 記述中に、他をマウスクリックすると、コンパイルエラーになります。 エラーなのは重々理解していますが、実行時にエラーかどうか判定して欲しいです。 オプションで、順次コンパイルOFFなどして試行錯誤しましたが、不可能でした。 仕様なのでしょうか? エクセル2007
- ベストアンサー
- left2012
- Visual Basic
- 回答数1
- オブジェクトエラーが出る
フォームの切り替え時に 同じマクロを使いたく(機能は同じなので) MultiPage1が1枚目の時と2枚目の時で 入力するコンボボックスを変えておこうとしたのですが エラーで動かないようです。 If MultiPage1.Value = 0 Then COMBX = "ComboBox1" ElseIf MultiPage1.Value = 1 Then COMBX = "ComboBox7" End If name = "シート名" Set ws = ThisWorkbook.Worksheets(name) i = 2 Do Until ws.Cells(i, 9) = "" COMBX.AddItem ws.Cells(i, 9).Value **********ここでエラー i = i + 1 Loop
- ベストアンサー
- mougmoug
- Visual Basic
- 回答数1
- アウトルックが起動しているかどうかを取得するには?
http://www.ken3.org/cgi-bin/group/vba_outlook.asp を参考に Sub Sample() Dim oApp As Outlook.Application Dim myNameSpace As Outlook.Namespace Dim myFolder As Outlook.Folder 'outlook 起動をCreateObjectで ※これだと複数起動してしまうがご勘弁を Set oApp = CreateObject("Outlook.Application") Set myNameSpace = oApp.GetNamespace("MAPI") '作業フォルダーの指定(.GetDefaultFolder) と 表示(.Display) Set myFolder = myNameSpace.GetDefaultFolder(6) '規定のフォルダー olFolderInbox=6 指定 myFolder.display End Sub でエクセルからアウトルックを起動しているのですが 既に起動していると2個起動してしまいます。 「既に起動しているのなら起動しない」という事はできますか? 参考URLに 起動をCreateObjectで ※これだと複数起動してしまうがご勘弁を と書いてありますが、ちょっと勘弁できませんでした笑
- ベストアンサー
- TEWLXDCXFHQO
- Visual Basic
- 回答数3
- UserForm.showでマルチページ1を見出し
UserForm.showでフォームがでたときマルチページ1~4のうちページ1を見出しに表示したいのですが どなたか解る方よろしくお願いします。
- ベストアンサー
- kuma0220
- Visual Basic
- 回答数1
- シート内セルに条件付着色でエラーメッセージ
Excelのチェックボタンをクリックしたときにシート1のセル"C4:G50"内に条件付書式により着色(ColorIndex =7)されたセルがあった場合、エラーメッセージ(" ヶ所 日付が入力されていません")を表示したいのですが? 下記のコードでセルに直接着色("C7")されたものは添付のようにメッセージが出たのですが条件付書式による着色がカウントしメッセージが出るようにしたいのですが、コード表示が解る方どうかよろしくお願いします。 尚、C列とG列のみ50行まで条件下で着色するよう同じ条件付書式が入っています。 Sub チェック() Dim CheckRange As Range Dim rng As Range Dim cnt As Long Set CheckRange = Range("C4:G50") For Each rng In CheckRange If rng.Interior.ColorIndex = 7 Then cnt = cnt + 1 End If Next If cnt > 0 Then MsgBox cnt & "ヶ所、日付が入力されていません。", vbCritical Exit Sub End If Worksheets("sheet1").Range("D1") = "1" End Sub
- ベストアンサー
- kuma0220
- Visual Basic
- 回答数2
- シート内セルに着色があればエラーメッセージ
Excelの入力ボタンをクリックしたときにシート1のセル"A1:D50"内にエラーで着色(ColorIndex =7)されたセルがあった場合、次のステップにいけないようにエラーメッセージ("日付が入力されていません")を表示したいのですがコード表示が解る方どうかよろしくお願いします。
- ベストアンサー
- kuma0220
- Visual Basic
- 回答数1
- 1
- 2