cj_mover の回答履歴

全798件中601~620件表示
  • 変数を配列に格納する時に、二つの条件を指定すること

    変数を配列に格納する時に、二つの条件を指定することはできますか? VBAです。 Private Sub test() Dim i As Long Dim Str As String Dim tmp As Variant Str = "a,i,u-e-o" tmp = Split(Str, ",") '配列に格納する For i = LBound(tmp) To UBound(tmp) Debug.Print tmp(i) Next i End Sub の場合、結果が a i u-e-o になってしまいます。 tmp = Split(Str, "," or "-") のようなことをして a i u e o と表示させたいです。 "a,i,u-e-o"を"a,i,u,e,o"にすることはできません。ご教授よろしくお願いします。

  • 変数を配列に格納する時に、二つの条件を指定すること

    変数を配列に格納する時に、二つの条件を指定することはできますか? VBAです。 Private Sub test() Dim i As Long Dim Str As String Dim tmp As Variant Str = "a,i,u-e-o" tmp = Split(Str, ",") '配列に格納する For i = LBound(tmp) To UBound(tmp) Debug.Print tmp(i) Next i End Sub の場合、結果が a i u-e-o になってしまいます。 tmp = Split(Str, "," or "-") のようなことをして a i u e o と表示させたいです。 "a,i,u-e-o"を"a,i,u,e,o"にすることはできません。ご教授よろしくお願いします。

  • 現在表示されているURLを取得したいのですが

    Sub test1() Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate "http://www.goo.ne.jp/" Do While objIE.Busy = True Or objIE.ReadyState <> 4 DoEvents Loop Debug.Print objIE.Navigate Set objIE = Nothing End Sub //////////////////////////////////////////////// をやろうとすると、 Debug.Print objIE.Navigate の部分で、「引数は省略できません。」とエラーになります。 どう修正すればいいか教えてください。 ("http://www.goo.ne.jp/"はダミーです)

  • またまた エクセルのユーザー定義で

    前回以下のようなコードを教えていただきましたが、この変換を複数列で使えるようにするにはどうしたらいいのでしょうか? D,G,N,Q,X,AA,の列に効かせたいのですが。 Private Sub worksheet_change(ByVal Target As Range) If Intersect(Target, Columns(1)) Is Nothing Or Selection.Count <> 1 Then Exit Sub Dim str As String str = Target Application.EnableEvents = False If Target <> "" Then If Len(str) = 7 Then Target = Left(str, 5) & "A" & Mid(str, 6, 1) & "-" & Right(str, 1) Else Target = Left(str, 5) & "A" & Mid(str, 6, 2) & "-" & Right(str, 1) End If End If Application.EnableEvents = True End Sub

  • ExcelVBA実行後に時々落ちる

    VBA初心者です。 色々調べてみましたが、どうしても原因が判りません。よろしくお願いします。 Excel2007 Windows7 実行後時々Excelが落ちてしまいます。 エラーの内容 *************************** 問題の署名: 問題イベント名: APPCRASH アプリケーション名: EXCEL.EXE アプリケーションのバージョン: 12.0.6661.5000 アプリケーションのタイムスタンプ: 4f7cda6d 障害モジュールの名前: EXCEL.EXE 障害モジュールのバージョン: 12.0.6661.5000 障害モジュールのタイムスタンプ: 4f7cda6d 例外コード: c0000005 例外オフセット: 0004da42 OS バージョン: 6.1.7600.2.0.0.256.48 ロケール ID: 1041 この問題に関する追加情報: LCID: 1041 Brand: Office12Crash skulcid: 1041 ***************************** 以下のVBAに問題があるのでしょうか? 内容は「フォームのテキストに数字を入力し、入力した回数繰り返す」というものです。 ****************************** Private Sub キャンセル_Click() MsgBox "キャンセルされました" Unload 奉行変換 End Sub Private Sub 変換実行_Click() DM = 実行枚数.Value 実行枚数.Value = Empty MsgBox DM & "枚の伝票を変換します" Unload 奉行変換 変換 End Sub ********************************** 入力用のシートで入力した内容を他のシートにためていくものです。 以下の内容を標準モジュールに書いています。 ********************************** Public DM As Byte '入力フォームテキストに入力された数 Public BGyo As Integer Public BCol As Integer Sub 変換開始() BGyo = ActiveCell.Row '入力セルの行取得 BCol = ActiveCell.Column '入力セルの列取得 奉行変換.Show End Sub Sub 変換() Dim hgyo As Integer Dim BGyoH As Integer If BGyo = 5 Or BGyo Mod 23 = 5 And BCol = 2 Then ’特定のセルがアクティブな時だけ実行 データー用シートの最終行指定 hgyo = Worksheets("HANYO").Cells(1, 3).CurrentRegion.Rows.Count hgyo = hgyo + 1 For n = 1 To DM BGyoH = BGyo + 3 With Worksheets("HANYO") .Cells(hgyo, 3).Value = Cells(BGyo, BCol) .Cells(hgyo, 5).Value = Cells(BGyoH, BCol + 1) .Cells(hgyo, 6).Value = Cells(BGyoH, BCol + 2) .Cells(hgyo, 7).Value = Cells(BGyoH + 1, BCol + 2) .Cells(hgyo, 8).Value = Cells(BGyoH, BCol) If Cells(BGyoH + 1, BCol + 1) = 2 Then .Cells(hgyo, 10) = 1 ElseIf Cells(BGyoH + 1, BCol + 1) = "" Then .Cells(hgyo, 10) = "" .Cells(hgyo, 11) = "0" ElseIf Cells(BGyoH + 1, BCol + 1) = 1 Then .Cells(hgyo, 10) = 1 .Cells(hgyo, 11) = 1 End If .Cells(hgyo, 13).Value = Cells(BGyoH, BCol + 6) .Cells(hgyo, 14).Value = Cells(BGyoH, BCol + 7) .Cells(hgyo, 15).Value = Cells(BGyoH + 1, BCol + 7) .Cells(hgyo, 16).Value = Cells(BGyoH, BCol + 10) If Cells(BGyoH + 1, BCol + 6) = 2 Then .Cells(hgyo, 18) = 1 ElseIf Cells(BGyoH + 1, BCol + 6) = "" Then .Cells(hgyo, 18) = "" .Cells(hgyo, 19) = "0" ElseIf Cells(BGyoH + 1, BCol + 6) = 1 Then .Cells(hgyo, 18) = 1 .Cells(hgyo, 19) = 1 End If .Cells(hgyo, 21).Value = Cells(BGyoH, BCol + 4) & Cells(BGyoH + 1, BCol + 4) End With hgyo = hgyo + 1 BGyoH = BGyoH + 2 Next nd BGyo = BGyo + 23 Next n Else MsgBox "アクティブセルが日付にありません。" Exit Sub End If End Sub Excelが落ちるのはこれを実行した後のみ時々起きますので 私が作成した内容に何か問題があるのだと思うのですが 調べても判りません・・・・ この内容で情報は足りるでしょうか? よろしくお願いします。

  • EXCEL2007マクロ/オートフィルについて

    VBA初心者です。 EXCEL2007でオートフィルのマクロを作ったのですが、下記のケースで困っています。 A列のデータが入っている行までB列のデータをオートフィルで入力したく、 A列の最終行からデータが入っている行までを求めてB列のデータをオートフィルで入れるため、下記のマクロを設定しました。 Sub test()   Range("B1").AutoFill Destination:=Range("B1", Range("A1048576").End(xlUp).Offset(, 1)) End Sub ところが、A列のデータが2行以上ある場合はうまくいくのですが、一行のみだった場合オートフィルができなくてマクロがとまってしまいます。 一行なので当然なのですが、このような処理をしたい場合、他に方法はないものでしょうか? お知恵を拝借できますと大変助かります。 どうぞよろしくお願いいたします。

  • DoEventsは意味ない?

    Sub test() Dim ObjIE As InternetExplorer Set ObjIE = CreateObject("InternetExplorer.Application") ObjIE.Navigate "http://www.yahoo.co.jp/" ObjIE.Visible = True Do While ObjIE.Busy = True DoEvents Loop Debug.Print ObjIE.LocationName Set ObjIE = Nothing End Sub ------------------------------------- を実行した所、イミディエイトウインドウに何も表示されないので ObjIE.LocationNameを ObjIE.Refreshに変えてみたところ、 ------------ 実行時エラー ‘-2147467259 オートメーションエラーです。エラーを特定できません。 ------------ となりました。 ステップインでゆっくり実行するとできたことから、 ObjIE.Refresh にたどり着くまでに、IEにサイトが表示されてないのが原因のようです。 と言いう事は、 ------------ Do While ObjIE.Busy = True DoEvents Loop ------------ のコードは全く持って無意味なのでしょうか? 「表示するまで待つ」と言う意味だと思っていたのですが 表示し終わる前に次のコードに進んでしまっているようです。

  • DoEventsは意味ない?

    Sub test() Dim ObjIE As InternetExplorer Set ObjIE = CreateObject("InternetExplorer.Application") ObjIE.Navigate "http://www.yahoo.co.jp/" ObjIE.Visible = True Do While ObjIE.Busy = True DoEvents Loop Debug.Print ObjIE.LocationName Set ObjIE = Nothing End Sub ------------------------------------- を実行した所、イミディエイトウインドウに何も表示されないので ObjIE.LocationNameを ObjIE.Refreshに変えてみたところ、 ------------ 実行時エラー ‘-2147467259 オートメーションエラーです。エラーを特定できません。 ------------ となりました。 ステップインでゆっくり実行するとできたことから、 ObjIE.Refresh にたどり着くまでに、IEにサイトが表示されてないのが原因のようです。 と言いう事は、 ------------ Do While ObjIE.Busy = True DoEvents Loop ------------ のコードは全く持って無意味なのでしょうか? 「表示するまで待つ」と言う意味だと思っていたのですが 表示し終わる前に次のコードに進んでしまっているようです。

  • SelectとActivateの違いは?

    Sub Macro1() Sheets("Sheet1").Activate Sheets("Sheet2").Select End Sub は、同じ動きをします。 マクロの記録でシートを選択すると、Selectの方が取得されます。 SelectとActivateの違いを説明できる方お願いします。

  • EXCELマクロを無効にして開く方法

    掲題の通りなのですが、EXCEL2007で作成されたマクロ有効ファイル(XLSM形式)を マクロ無効の状態で開く方法が分からず困っております。 マクロの内容は Workbook_Open 処理で、特定セルに入力されている EXCELファイルを開き、自身は閉じるというものです。 Private Sub Workbook_Open() Dim FileName As String '1ファイル目 Range("A2").Select FileName = ActiveCell.FormulaR1C1 Workbooks.Open FileName:=FileName ThisWorkbook.Activate '2ファイル目 Range("A3").Select FileName = ActiveCell.FormulaR1C1 Workbooks.Open FileName:=FileName ThisWorkbook.Activate ・・・・・・繰り返し DoEvents ThisWorkbook.Close End Sub 上記の特定セルに設定してあるファイルパスを変更するためには マクロを無効にして開かなければなりません。 マクロのセキュリティを変更して、「すべてのマクロを無効にする」を設定して 該当のファイルを開けば良い事は分かっているのですが、他に分かりやすい方法で マクロ無効状態で開く方法があれば、ご教授頂ければと思います。

  • エクセル ファイルの起動と同時にVBE画面を開くに

    accessの場合は、AutoExecを作成し、 モジュールを開くアクションでModule1を指定すれば、 ファイルを開いたと同時にVBE画面を開けますが、 エクセルの場合は、ファイルの起動と同時にVBE画面を開くにはどうすればいいでしょうか? Private Sub Workbook_Open() に何かをすると思うのですが、どうすればいいのかわかりません。 ご回答よろしくお願いします。

  • EXCELマクロを無効にして開く方法

    掲題の通りなのですが、EXCEL2007で作成されたマクロ有効ファイル(XLSM形式)を マクロ無効の状態で開く方法が分からず困っております。 マクロの内容は Workbook_Open 処理で、特定セルに入力されている EXCELファイルを開き、自身は閉じるというものです。 Private Sub Workbook_Open() Dim FileName As String '1ファイル目 Range("A2").Select FileName = ActiveCell.FormulaR1C1 Workbooks.Open FileName:=FileName ThisWorkbook.Activate '2ファイル目 Range("A3").Select FileName = ActiveCell.FormulaR1C1 Workbooks.Open FileName:=FileName ThisWorkbook.Activate ・・・・・・繰り返し DoEvents ThisWorkbook.Close End Sub 上記の特定セルに設定してあるファイルパスを変更するためには マクロを無効にして開かなければなりません。 マクロのセキュリティを変更して、「すべてのマクロを無効にする」を設定して 該当のファイルを開けば良い事は分かっているのですが、他に分かりやすい方法で マクロ無効状態で開く方法があれば、ご教授頂ければと思います。

  • excel2000 vba スピンボタン

    いつもお世話になっています。 下記内容の変更をしたいのですが、自分ではうまくいかず、お力をお貸しください。 よろしくお願いします。 一枚のデータシートと一枚の入力用フォームがあります。 入力フォームのスピンボタンのNOをキーにして、データシートのレコードを一件ずつ切り替えて、表示させるようにしています。 さてデータシートのオートフィルターでフィルターをかけた時に、それにあわせて、スピンボタンのNOを飛ばすようにしたいのですが、どのように修正していいか、わかりません。 現状ですと、下記プロシージャですが、いまのままだと、スピンボタンの値が一つずつしかかわりません。 'スピンボタンの値が変わったらテキストボックスに反映 Private Sub SpinButton1_Change() TextBox1.Value = SpinButton1.Value Call hyouji End Sub Private Sub hyouji() 'データを検索して表示する Dim fRange As Range Dim fRow As Long Set fRange = Sheets("data").Columns(3).Find(what:=TextBox1.Value, _ LookIn:=xlValues, lookat:=xlWhole, SearchOrder:=xlByRows) If (fRange Is Nothing) Then ' MsgBox "Noがみつかりません", vbExclamation Exit Sub End If fRow = fRange.Row '検索されたNoの行位置を求める With Worksheets("data") TextBox2.Value = .Cells(fRow, 4).Value TextBox3.Value = .Cells(fRow, 5).Value TextBox4.Value = .Cells(fRow, 6).Value TextBox5.Value = .Cells(fRow, 7).Value TextBox6.Value = .Cells(fRow, 8).Value End With SpinButton1.SetFocus End Sub ※現物ファイルを下記に投稿(No5643)させていただきました。見ていただけると幸いです。 http://www.kent-web.com/pubc/book/test/uploader/uploader.cgi

  • ActiveWorkbook.Path取得できない

    ActiveWorkbook.Pathでパス名を取得して、 同じフォルダ内の別のエクセルシートを開きたいのですが、 見つかりませんと、エラーになります。 ただしそのエクセルを直接開いて名前を付けて同名で上書き保存をすると 取得できるようになるのですが、 すべて閉じて、再度実行すると、また取得できなくなるという現象が起こっているのですが 毎回上書き保存するわけにいかない為 何かよい方法はありますでしょうか? ----------------------------------- Dim strPath As String Dim strBookName As String strPath = ActiveWorkbook.Path strBookName = Dir(strPath & "\管理簿.xlsm") 'ファイル名取得 On Error GoTo myError Workbooks.Open FileName:=strBookName

  • エクセルで、毎回違う行数をコピーするマクロ

    こんにちは Excel2003 を使用しています。 マクロを使って毎回行数が違うデータをコピー貼り付けをしたいのですが よく分かりません。コピー先の最終行そろえのコピーの方法もお願いします。 毎回データ行数が違う2つの表を、新しい表の上の部分と下の部分に分けてコピーしたいのです。 コピー元1 0~20行 コピー元2 0~20行  1と2の合計は、0~20行です。多くても20行まで。 コピー元1を1行目から、コピー元2の最下行を20行目に揃えて、 貼り付け先の表には、上部と下部の間に空白行が入っOKです。 (例) コピー元1          コピー元2  X   Y   Z         AA   AB   AC 1鈴木 千葉 男      1山本 大阪 男 2田中 東京 女      2高橋 京都 女 3                3  ↓↓ 貼り付け先  A   B   C 1鈴木 千葉 男 2田中 東京 女 3 ・ ・ 18 19山本 大阪 男 20高橋 京都 女 のように上部と下部に分けてコピーしたいのです。 行数は毎回ちがい、合わせて20行の場合は、空白行はなくなります。 説明が、つたなく申し訳ありませんが よろしくお願いいたします。

  • エクセルで、毎回違う行数をコピーするマクロ

    こんにちは Excel2003 を使用しています。 マクロを使って毎回行数が違うデータをコピー貼り付けをしたいのですが よく分かりません。コピー先の最終行そろえのコピーの方法もお願いします。 毎回データ行数が違う2つの表を、新しい表の上の部分と下の部分に分けてコピーしたいのです。 コピー元1 0~20行 コピー元2 0~20行  1と2の合計は、0~20行です。多くても20行まで。 コピー元1を1行目から、コピー元2の最下行を20行目に揃えて、 貼り付け先の表には、上部と下部の間に空白行が入っOKです。 (例) コピー元1          コピー元2  X   Y   Z         AA   AB   AC 1鈴木 千葉 男      1山本 大阪 男 2田中 東京 女      2高橋 京都 女 3                3  ↓↓ 貼り付け先  A   B   C 1鈴木 千葉 男 2田中 東京 女 3 ・ ・ 18 19山本 大阪 男 20高橋 京都 女 のように上部と下部に分けてコピーしたいのです。 行数は毎回ちがい、合わせて20行の場合は、空白行はなくなります。 説明が、つたなく申し訳ありませんが よろしくお願いいたします。

  • EXCELマクロを無効にして開く方法

    掲題の通りなのですが、EXCEL2007で作成されたマクロ有効ファイル(XLSM形式)を マクロ無効の状態で開く方法が分からず困っております。 マクロの内容は Workbook_Open 処理で、特定セルに入力されている EXCELファイルを開き、自身は閉じるというものです。 Private Sub Workbook_Open() Dim FileName As String '1ファイル目 Range("A2").Select FileName = ActiveCell.FormulaR1C1 Workbooks.Open FileName:=FileName ThisWorkbook.Activate '2ファイル目 Range("A3").Select FileName = ActiveCell.FormulaR1C1 Workbooks.Open FileName:=FileName ThisWorkbook.Activate ・・・・・・繰り返し DoEvents ThisWorkbook.Close End Sub 上記の特定セルに設定してあるファイルパスを変更するためには マクロを無効にして開かなければなりません。 マクロのセキュリティを変更して、「すべてのマクロを無効にする」を設定して 該当のファイルを開けば良い事は分かっているのですが、他に分かりやすい方法で マクロ無効状態で開く方法があれば、ご教授頂ければと思います。

  • VBA 400エラー 1004エラー

    以下のVBAはセルのカット&ペーストをしたり、置換をするプログラムです。 しかし、EXCEL2003であれば通常に動作するのですが、 EXCEL2000だと400エラーや1004エラーが出てしまいます。 原因を探求するもよく分からなかったため、ご教示いただけば幸いです。 Sub 一ページ17名標準() Application.ScreenUpdating = False ActiveSheet.Unprotect Range("A1").Select Cells.Find(What:="No.2").Offset(-1, 36).Resize(3, 8).Insert Shift:=xlDown Cells.Find(What:="No.2").Offset(-1, 2).Resize(3, 1).EntireRow.Delete Rows("2:61").RowHeight = 21.75 '''行の幅 変更点 Cells.Find(What:="No.1").Offset(-1, 2).Resize(3, 1).EntireRow.Copy Range("38:38").Insert '''No2見出し挿入カ所 変更点 Range("A39").Replace What:="No.1", Replacement:="No.2" '''No1→No2置換カ所 変更点 Cells.Find(What:="No.2").Offset(-1, 36).Resize(3, 8).Delete Shift:=xlUp Cells.Find(What:="♯管理欄").Resize(3, 8).Activate ' ' '名字のエクセル関数の調整(全共通) Selection.Cut Range("AK63").Select Selection.Insert Shift:=xlDown Cells.Find(What:="♯管理欄").Resize(3, 8).Activate Selection.Cut Range("AK38:AS40").Select Selection.Insert Shift:=xlDown Range("A1").Select ActiveSheet.Protect Application.ScreenUpdating = True End Sub 宜しくお願いします。

  • Excel VBA ListBoxの行数取得の件

    OSは、XP Excelは、2003 を使用しています。 ユーザーフォームで、ListBoxの行数取得のところが上手く行かずに困っています。 ************** Private Sub btnSalesDelete_Click() 'lstinfoにおいて、どの行も選択されていなければ、終了 If lstInfo.ListIndex = -1 Then Exit Sub Dim res As Integer Dim Msg As String, Title As String Msg = "伝票番号:" & lstInfo.Value & " を削除します。よろしいですか?" Title = "確認" res = MsgBox(Msg, vbYesNo + vbExclamation + vbDefaultButton2, Title) If res = vbNo Then Exit Sub 'シート「売上基本情報」の該当行の「削除」列に1を代入 Dim TargetRow As Integer TargetRow = lstInfo.Value + 1 Worksheets("売上基本情報").Cells(TargetRow, 5).Value = 1 'シート「売上明細」の該当行の「削除」列に1を代入 Dim c As Integer c = lstInfoMeisai.ListCount '明細行の行数をcに代入 Dim i As Integer Dim r As Integer For i = 0 To c - 1 r = lstInfoMeisai.List(i, 0) '←←←ここで実行エラー13 型が一致しません になります。 Worksheets("売上明細").Cells(r + 1, 15).Value = 1 Next 'lstinfoから、行を削除 lstInfo.RemoveItem lstInfo.ListIndex 'lstinfomeisaiのリストをクリア lstInfoMeisai.Clear End Sub ***************** 上記で実行すると、lstInfoのListCountと同じ数字を、lstInfoMeisaiの方にも代入されます。 実際、lstInfoMeisaiのListCountが 12、lstInfoのListCountが 3 の場合、 rが4になった時、実際にはそのListCountにがデータがないので、””を返してしまい、 実行エラー13 型が一致しません とデバックになってしまいます。 説明が上手くなくて申し訳ありませんが、どなたか修正の仕方を教えていただけないでしょうか? よろしくお願い致します。

  • Excel VBA ListBoxの行数取得の件

    OSは、XP Excelは、2003 を使用しています。 ユーザーフォームで、ListBoxの行数取得のところが上手く行かずに困っています。 ************** Private Sub btnSalesDelete_Click() 'lstinfoにおいて、どの行も選択されていなければ、終了 If lstInfo.ListIndex = -1 Then Exit Sub Dim res As Integer Dim Msg As String, Title As String Msg = "伝票番号:" & lstInfo.Value & " を削除します。よろしいですか?" Title = "確認" res = MsgBox(Msg, vbYesNo + vbExclamation + vbDefaultButton2, Title) If res = vbNo Then Exit Sub 'シート「売上基本情報」の該当行の「削除」列に1を代入 Dim TargetRow As Integer TargetRow = lstInfo.Value + 1 Worksheets("売上基本情報").Cells(TargetRow, 5).Value = 1 'シート「売上明細」の該当行の「削除」列に1を代入 Dim c As Integer c = lstInfoMeisai.ListCount '明細行の行数をcに代入 Dim i As Integer Dim r As Integer For i = 0 To c - 1 r = lstInfoMeisai.List(i, 0) '←←←ここで実行エラー13 型が一致しません になります。 Worksheets("売上明細").Cells(r + 1, 15).Value = 1 Next 'lstinfoから、行を削除 lstInfo.RemoveItem lstInfo.ListIndex 'lstinfomeisaiのリストをクリア lstInfoMeisai.Clear End Sub ***************** 上記で実行すると、lstInfoのListCountと同じ数字を、lstInfoMeisaiの方にも代入されます。 実際、lstInfoMeisaiのListCountが 12、lstInfoのListCountが 3 の場合、 rが4になった時、実際にはそのListCountにがデータがないので、””を返してしまい、 実行エラー13 型が一致しません とデバックになってしまいます。 説明が上手くなくて申し訳ありませんが、どなたか修正の仕方を教えていただけないでしょうか? よろしくお願い致します。