cj_mover の回答履歴

全798件中201~220件表示
  • EXCEL VBA コピーしたシートへ値をコピペ

    選択対象シート数は4つで、シート名は、「101」「102」「103」「104」とします。 シート名「表紙」のA列のセルはA10:101 A11:102 A12:103 A13:104となっており、 使用者はとなりのB10~B14セルに「○」「×」を入力規則から選択します。 また、シート名「表紙」のB6セルには製造番号(例:AM01-130012)を入力しておきます。 「○」となっているシートのみ選択して、下記マクロにてコピーを作成します。 コピーしたシートすべてのB2セルに製造番号を入力します。 ここまではできていて、下記のプログラムを追加したいのですが、うまくいきません。 さらに、○を付けたのと同じ行のD10~L10、D11~L11、D12~L12、D13~L13セルに、 使用者が文字列を入れる場合と入れない場合があります。文字列は左のD列から順に入れます。 文字列があれば、○を付けてコピーした対応するシートの中のH3~P3セルへ貼り付けたいのです。 D10、D11、D12、D13セルが空白のときは何も処理は行わないとします。 たとえば、下記のようにB12セルが○で、D12セルに文字列があれば、 D12~L12セルの値を、コピーで作成したシート103の中のH3~P3セルへ貼り付けたいのです。 B11セルも○ですが、D11セルに文字列がないのでシートのコピーだけ行います。 アドバイスいただけると助かります。 VBA初心者で申し訳ございませんが、よろしくお願いいたします。 <表紙のシート>    A     B     C    D     E     F    G    H     I     J     K      L 5 6    AM01-130012 7 8 9  10 101    × 11 102    ○ 12 103    ○       A1-1  A1-2  A1-3  A1-4  A1-5  A1-6  A1-7  A1-8   A1-9 13 104    × <プログラム> Sub TestSample() If Application.CountIf(Worksheets("表紙").Range("B10:B17"), "*○*") = 0 Then MsgBox "部品番号が選択されていません。" Exit Sub End If Dim 製造番号 As String 製造番号 = Range("B6").Value Dim c As Range Dim flg As Boolean On Error Resume Next flg = True ThisWorkbook.Activate On Error GoTo ErrOut_ For Each c In Worksheets("表紙").Range("B10:B13") If c.Value Like "○*" Then Worksheets(c.Offset(, -1).Text).Select flg flg = False End If Next c If Not flg Then ActiveWindow.SelectedSheets.Copy ' コピーしたすべてのシートに製造番号を書き込む For Each 各シート In Worksheets With 各シート .Activate Cells(1, 2) = 製造番号 End With Next Exit Sub ErrOut_: MsgBox """表紙""シートに記載されたシート名" & c.Offset(, -1).Text & "は存在しません。, vbInformation" End Sub

  • EXCEL VBA コピーしたシートへ値をコピペ

    選択対象シート数は4つで、シート名は、「101」「102」「103」「104」とします。 シート名「表紙」のA列のセルはA10:101 A11:102 A12:103 A13:104となっており、 使用者はとなりのB10~B14セルに「○」「×」を入力規則から選択します。 また、シート名「表紙」のB6セルには製造番号(例:AM01-130012)を入力しておきます。 「○」となっているシートのみ選択して、下記マクロにてコピーを作成します。 コピーしたシートすべてのB2セルに製造番号を入力します。 ここまではできていて、下記のプログラムを追加したいのですが、うまくいきません。 さらに、○を付けたのと同じ行のD10~L10、D11~L11、D12~L12、D13~L13セルに、 使用者が文字列を入れる場合と入れない場合があります。文字列は左のD列から順に入れます。 文字列があれば、○を付けてコピーした対応するシートの中のH3~P3セルへ貼り付けたいのです。 D10、D11、D12、D13セルが空白のときは何も処理は行わないとします。 たとえば、下記のようにB12セルが○で、D12セルに文字列があれば、 D12~L12セルの値を、コピーで作成したシート103の中のH3~P3セルへ貼り付けたいのです。 B11セルも○ですが、D11セルに文字列がないのでシートのコピーだけ行います。 アドバイスいただけると助かります。 VBA初心者で申し訳ございませんが、よろしくお願いいたします。 <表紙のシート>    A     B     C    D     E     F    G    H     I     J     K      L 5 6    AM01-130012 7 8 9  10 101    × 11 102    ○ 12 103    ○       A1-1  A1-2  A1-3  A1-4  A1-5  A1-6  A1-7  A1-8   A1-9 13 104    × <プログラム> Sub TestSample() If Application.CountIf(Worksheets("表紙").Range("B10:B17"), "*○*") = 0 Then MsgBox "部品番号が選択されていません。" Exit Sub End If Dim 製造番号 As String 製造番号 = Range("B6").Value Dim c As Range Dim flg As Boolean On Error Resume Next flg = True ThisWorkbook.Activate On Error GoTo ErrOut_ For Each c In Worksheets("表紙").Range("B10:B13") If c.Value Like "○*" Then Worksheets(c.Offset(, -1).Text).Select flg flg = False End If Next c If Not flg Then ActiveWindow.SelectedSheets.Copy ' コピーしたすべてのシートに製造番号を書き込む For Each 各シート In Worksheets With 各シート .Activate Cells(1, 2) = 製造番号 End With Next Exit Sub ErrOut_: MsgBox """表紙""シートに記載されたシート名" & c.Offset(, -1).Text & "は存在しません。, vbInformation" End Sub

  • xls:CopyFromRecordset罫線描写

    こんにちは。 お世話になります。 エクセルからアクセスを読み込みに行き、取得結果をエクセル内に表示しています。 ※アクセスを開いてエクセルに出力するのではないです。 このとき、スタートセルを指定して Range("B12").CopyFromRecordset adoRs という感じで読み取ったデータを出力していますが、 この出力前に明細にしている部分を消しています。 Range("B12:AI1000").Clear '前のデータクリア ※ClearContentsではダメな理由があります。 このとき、CopyFromRecordset にて出力が行われたセルのみ、 セルのまわりを四角く罫線で囲むということをしたいです。 明細っぽくしたいので。 罫線はこのように引くと思うのですが Range("A1:C3").Borders.LineStyle = xlContinuous このA1:C3の部分を今回B12から始まり、列はAIまで、 行数は条件により変動するため固定ではない状態で、 どのようにすれば取得できるのかが知りたいです。 よろしくお願いいたします。 office2010、windows7です。

  • xls:CopyFromRecordset罫線描写

    こんにちは。 お世話になります。 エクセルからアクセスを読み込みに行き、取得結果をエクセル内に表示しています。 ※アクセスを開いてエクセルに出力するのではないです。 このとき、スタートセルを指定して Range("B12").CopyFromRecordset adoRs という感じで読み取ったデータを出力していますが、 この出力前に明細にしている部分を消しています。 Range("B12:AI1000").Clear '前のデータクリア ※ClearContentsではダメな理由があります。 このとき、CopyFromRecordset にて出力が行われたセルのみ、 セルのまわりを四角く罫線で囲むということをしたいです。 明細っぽくしたいので。 罫線はこのように引くと思うのですが Range("A1:C3").Borders.LineStyle = xlContinuous このA1:C3の部分を今回B12から始まり、列はAIまで、 行数は条件により変動するため固定ではない状態で、 どのようにすれば取得できるのかが知りたいです。 よろしくお願いいたします。 office2010、windows7です。

  • vba 数式を入れる 列を数値にしたい

    vbaで数式をセルに入れる際に、アルファベットで列を指定するのではなく 数値で指定する場合、どうすればいいでしょうか? 例えば、A1セルに Sub Sample() Cells(1, 1) = "=a2+a3" End Sub と言う結果にしたい場合、 a列の部分も数値で指定したいです。 Sub Sample() Cells(1, 1) = "=" & Cells(2,1) & "+" & Cells(3,1) End Sub こういうことをやりたいのですが これだとエラーになってしまいます。 方法を教えてください。

  • EXCEL VBA 複数シート選択の方法

    エクセルVBAのシート選択方法について教えてください。 選択対象シート数は4つで、シート名は、「101」「102」「103追加工」「104」とします。 シート名「表紙」のセルは A1:101 A2:102 A3:103追加工 A4:104となっており、 使用者はB1~B4セルに「○」「×」を入力し、 「○」となっているシートのみ選択出来るようにしたい。 下記マクロの場合、シート名が全角文字だと使えるのですが、 シート名が「101」のように半角数字だけの場合コピーできません。 どこを修正すればよいのでしょうか? Sub TestSample2() Dim c As Range Dim flg As Boolean On Error Resume Next flg = True ThisWorkbook.Activate  With Worksheets("表紙")  For Each c In .Range("B1:B4")   If c.Value Like "○*" Then     Worksheets(c.Offset(, -1).Value).Select flg     flg = False   End If  Next c End With  With ActiveWindow.SelectedSheets  If .Count > 0 Then    .Copy  End If  End With  '元のシートに戻る場合  'Application.Goto ThisWorkbook.Worksheets("表紙").Range("A1") End Sub

  • ダブルクリックしたセルのフォーカス位置取得

    初めて投稿します。よろしくお願い致します。 Excel上でダブルクリックしたセルの内容を、次のようにしたいと思っています。 ダブルクリックしたフォーカス位置より左側 → 現セルに残す ダブルクリックしたフォーカス位置より右側 → 右側のセルの値の先頭につける 知りたいことは、アクティブセルのフォーカスの位置(左から何文字目か?)を取得できるものでしょうか? ご教授頂ければ幸いです。 以上

  • ダブルクリックしたセルのフォーカス位置取得

    初めて投稿します。よろしくお願い致します。 Excel上でダブルクリックしたセルの内容を、次のようにしたいと思っています。 ダブルクリックしたフォーカス位置より左側 → 現セルに残す ダブルクリックしたフォーカス位置より右側 → 右側のセルの値の先頭につける 知りたいことは、アクティブセルのフォーカスの位置(左から何文字目か?)を取得できるものでしょうか? ご教授頂ければ幸いです。 以上

  • Excel VBAによるコピー作業について

    お世話になります。初心者ですが、掲題の件、以下の通り質問させて下さい。 【環境】 ★イメージ列の各セルにほぼ収まる状態でイメージが貼りつけられた以下のExcelシートがあります。 ※項番:一部飛んでいます。 ※イメージ:一部張り付いていないセルがあります。 ================================= 項番 |イメージ ================================= 1 | ABC --------------------------------- 2 | A@ --------------------------------- 3 | --------------------------------- 4 | B* --------------------------------- 7 | CBA --------------------------------- 8 | HHH --------------------------------- 10 | YYY --------------------------------- 11 | --------------------------------- 12 | AAA --------------------------------- 15 | BBB ================================= 【VBAでの実行タスク】 ★上記Excel(仮称:test.xlsx)ファイル上の全イメージを個別に名前を付けて保存したい。 (001.jpeg,002.jpeg,003.jpeg,004.jpeg,007.jpeg,008.jpeg,010.jpeg,011.jpeg,012.jpeg,015.jpeg) ※保存先はローカルの適当な場所(例:C:\Users\test\Pictures) 【作成中のVBA】 --- Sub 画像保存() Dim sSavePath As String Dim gdipRet As GDIPlusStatusConstants Dim myStdPicture As StdPicture ActiveSheet.Shapes.Range(Array("Picture 1")).Select Application.Selection.CopyPicture Appearance:=xlScreen, Format:=xlBitmap Set myStdPicture = CreatePictureFromClipboard 'jpg保存するときはこの下の行を有効に(100ところを0~100に変更でクオリティ設定できる) gdipRet = SavePictureJpg(myStdPicture, "C:\Users\test\Pictures\001.jpg", 100) End Sub --- 【質問内容】 上記VBAですと、実行することで、001.jpgしか保存されない状況です。 1回のVBA実行で、1,2,3,4,7,8,10,11,12,15全てのイメージを個別に名前を付けて保存するには、 (001.jpeg,002.jpeg,003.jpeg,004.jpeg,007.jpeg,008.jpeg,010.jpeg,011.jpeg,012.jpeg,015.jpeg) VBAの記述をどう修正すべきかご教示頂きたく存じます。 何卒、宜しくお願い申し上げます。

  • [VBA] 配列の要素を一括で検証する方法

    こちらの識者の方々にはいつもお世話になっています。 VBAの質問です。 環境は下記になります。 OS=windowsXP SP3 Office=Excel2003(11.8347.8403) SP3 会社などで一般的にVBAを使用してデータの処理をする場合、自動で吐き出されるcsvファイルを読み込んで、そのデータを加工し、使いたいデータに成型する。というケースが往々にしてあると思うのですが、吐き出されるcsvファイルのタイトル行が今までのものと同一でない(フィールドが知らないうちに増えたり減ったりしている)場合を想定し、csvファイルを取り込んだ時点でタイトル行の検査をしたいのですが、csvファイルのタイトル行を一旦配列に格納し、あらかじめ用意しておいたタイトル行のデータと比較する場合、配列内の一要素ずつ検査するしかないのでしょうか? 例としてはタイトル行が "品名", "4月", "5月", "6月", "7月", "8月", "9月" と仮定し、 Sub test()  Dim EndClm As Long  Dim TitleA As Variant  Dim TitleB As Variant  Dim i As Long  EndClm = Sheets(1).Cells(1, Columns.Count).End(xlToLeft).Column  TitleA = Workbooks("aa.csv").Sheets(1).Range(Sheets(1).Cells(1, 1),Sheets(1).Cells(1, EndClm)) 'csvファイルのタイトル行  TitleB = ThisWorkbook.Sheets(1).Range(Sheets(1).Cells(1, 1), Sheets(1).Cells(1, EndClm)) '検証用 "品名", "4月", "5月", "6月", "7月", "8月", "9月"  For i = 1 To UBound(TitleA, 2)   If TitleA(1, i) <> TitleB(1, i) Then MsgBox "項目が変更されています"  Next i End Sub のようなコードで1つずつ検証できますが、配列内の要素を一気に検証する方法はありますか? 当然通りませんが If TitleA <> TitleB Then MsgBox "項目が変更されています" のような感じです。 短いコードで確実にタイトル行の検査が行われれば、上記の配列に取り込んで要素を検証することに特に頓着はしていません。 今このテストコードを自宅のWindows7,Excel2010で書いていて思ったのですが、TitleA、TitleB共に配列に取り込む際、ブックをアクティブにしないとエラーが起きてしまいます。 もしよろしければこの原因も併せて教えていただいてもよろしいでしょうか。 質問に不備不足等ございましたらご指摘ください。 ご面倒お掛けしますがよろしくお願いします。

  • Excel 並べ替え フォームから実行 VBA

    フォームに、重複しないデータを入力し、 それを並び替えしたいと思っています。 Excel上に図の左側ようなデータを入力してあります。 名前 科目 点数 木村 英語 50 小林 英語 40 瀬戸 英語 5 岡村 英語 70 木村 国語 80 小林 国語 20 瀬戸 国語 40 岡村 国語 10 ・ ・ ・ 重複しないデータをフォームのリストボックス上に書き出します。 例 木村   英語 小林   国語 瀬戸   数学 岡村   社会       音楽       理科 ・ ・ ・ リストボックスの行を選択し、 上や下などを押したら、Excel上のデータが右図のように 並び替えられて欲しいのです。 何か良い方法はありますか? 説明不足の点があるとはおもいますが、 回答よろしくお願い致します。

  • 文字列から数式に変換する標準モジュールが不安定

    文字列を数式に変換する標準モジュール「EVALUATE」の更新が不安定です エクセルシート内の文字列を数式に変換して、計算結果を返すために下記標準モジュールを登録して試すのですが うまく行ったりいかなかったり、標準モジュールが安定して機能しない原因などが分かりません。 ●現在の設定とやりたいこと (1)A1⇒=myEvalAry(B1)、B1⇒C1+D1、C1⇒2、D1⇒5 として、A1にC1+D1計算結果の7を表示させたい (2)一つのシートの中に、myEvalAry標準モジュールを数百使っている (3)一つのセルの中で、=myEvalAry(B1)+myEvalAry(B2)のように標準モジュールを複数使っているセルもある ●現在の状況 上記状態で、何かのタイミングで標準モジュールの計算結果が一気に全て正しく反映されることもあれば、 急に反映されなくなることもある。100のうち10だけ反映されることもある。 というような不安定な状態です。 しかも数量が問題かと思って、多量に登録していたmyEvalAryのセルを1つだけにして動きを確認しようとしたらまた反映 されなかったりで、全然理由が分かりません。 どこか標準モジュール内に、考慮すべき構文が漏れたりしてるのでしょうか???? 正常稼働しない理由が分かると大変ありがたいです。win7、win8、excel2003、excel2013のいずれの環境でも同様です。 /////////////////////////////////////////////////////// Function myEvalAry(ParamArray ItemR()) As Variant Dim re As Variant Dim strTmp As String Dim varR As Variant Dim i As Variant, j As Variant strTmp = "" varR = ItemR() For Each i In varR If IsArray(i) Then '引数が配列の場合 For Each j In i If IsNumeric(j) Then re = CStr(j) Else re = j End If strTmp = strTmp & re Next Else '引数が配列以外 If IsNumeric(i) Then re = CStr(i) Else re = i End If strTmp = strTmp & re End If Next myEvalAry = Application.Evaluate(strTmp) End Function

  • UsableHeight シート名が消える

    エクセルvbaでリボンを非表示にして、ブックを最大化して、微調整したいのですが Workbook_Openイベントで実行すると、シート名が見えない状態になります。 コードはこれです。 Private Sub Workbook_Open() Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)" 'リボンを非表示にする ActiveWindow.WindowState = xlMaximized 'ウィンドウを最大化する With ActiveWindow .WindowState = xlNormal .Top = 0 .Left = 0 .Width = Application.UsableWidth .Height = Application.UsableHeight ' ウィンドウが使うことのできる範囲の最大限の高さにする End With End Sub ブックを開いた時はシート名が見えないサイズになってしまうのですが もう一度手動でWorkbook_Openイベントを実行すると、ちゃんとシート名まで表示されます。 なぜ同じコードなのに結果が違うのでしょうか? 横幅に関しては1回目も2回目も同じです。

  • UsableHeight シート名が消える

    エクセルvbaでリボンを非表示にして、ブックを最大化して、微調整したいのですが Workbook_Openイベントで実行すると、シート名が見えない状態になります。 コードはこれです。 Private Sub Workbook_Open() Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)" 'リボンを非表示にする ActiveWindow.WindowState = xlMaximized 'ウィンドウを最大化する With ActiveWindow .WindowState = xlNormal .Top = 0 .Left = 0 .Width = Application.UsableWidth .Height = Application.UsableHeight ' ウィンドウが使うことのできる範囲の最大限の高さにする End With End Sub ブックを開いた時はシート名が見えないサイズになってしまうのですが もう一度手動でWorkbook_Openイベントを実行すると、ちゃんとシート名まで表示されます。 なぜ同じコードなのに結果が違うのでしょうか? 横幅に関しては1回目も2回目も同じです。

  • エクセルVBAのテキストボックスの改行

    エクセルVBAのテキストボックスで 自分好きなところで改行したいのですが、 どうすれば良いのでしょうか? 例えば、全角5文字以上表示出来る幅が有っても、 あいう えお というように、「う」で改行したいです。

  • エクセルVBAのコンパイルエラー

    下記VBAでコンパイルエラーを起こして進みません 解消法をご教授いただけると幸いです やりたいこととしては ボタンで任意のタブ区切りのテキストを指定し 特定のシートに値をコピーすることです ---- Private Sub CommandButton1_Click() Dim Sh As Worksheet Dim FileN As String Set Sh = ThisWorkbook.Sheets("import") ' <-- 読込みシート指定(※) FileN = Application.GetOpenFilename("テキストファイル,*.txt") If FileN <> "False" Then Workbooks.OpenText Filename:=FileN, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlTextQualifierNone, Tab:=True End If Set Sh = Nothing End Sub ----

  • エクセルVBAのテキストボックスの改行

    エクセルVBAのテキストボックスで 自分好きなところで改行したいのですが、 どうすれば良いのでしょうか? 例えば、全角5文字以上表示出来る幅が有っても、 あいう えお というように、「う」で改行したいです。

  • エクセルVBAのテキストボックスの改行

    エクセルVBAのテキストボックスで 自分好きなところで改行したいのですが、 どうすれば良いのでしょうか? 例えば、全角5文字以上表示出来る幅が有っても、 あいう えお というように、「う」で改行したいです。

  • エクセルVBAのコンパイルエラー

    下記VBAでコンパイルエラーを起こして進みません 解消法をご教授いただけると幸いです やりたいこととしては ボタンで任意のタブ区切りのテキストを指定し 特定のシートに値をコピーすることです ---- Private Sub CommandButton1_Click() Dim Sh As Worksheet Dim FileN As String Set Sh = ThisWorkbook.Sheets("import") ' <-- 読込みシート指定(※) FileN = Application.GetOpenFilename("テキストファイル,*.txt") If FileN <> "False" Then Workbooks.OpenText Filename:=FileN, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlTextQualifierNone, Tab:=True End If Set Sh = Nothing End Sub ----

  • UserFormにクリップアートを挿入する方法

    ExcelのVBAでUserForm内にクリップアートを挿入したいのですが、 どのようにすればよいのでしょうか。 ご回答宜しくお願いします。