• 締切済み

自動でセルの数値を変更したい

自動でセルの数値を変更したいのですが、基本的な間違いがあるようで、できません何か別 な解決方法がありませんか、 ---------------------------------------------------- Sub 斜線オリジナル3() ' ' 斜線オリジナル3 Macro Set rngstart = Worksheets("時刻2").Cells(3, 9) Set rngend = Worksheets("時刻2").Cells(13, 25) BX = rngstart.Left BY = rngstart.Top EX = rngend.Left EY = rngend.Top '直線 With ActiveSheet.Shapes.AddLine(BX, BY, EX, EY).Line End With End Sub ------------------------------------------------- このコードは、参考にしたコードを自分が勝手に簡単にしたものです、知識rがあってやったものでは ありませんのでお許し下さい。理由はわかりませんが、なぜか一応は動作します。(斜線が引かれます。) 以上のコードで、Cells(3,9) と Cells(13,25) の列に相当する、9と25の数値を自動で変えたいのですが、  for cnt = 10 to 30 a = worksheets("時刻2").cells(3,cnt).value set rngstart = worksheets("時刻2").cells(3,a) のようにしたいのですが、エラーがでます。どのようにしたらいいでしょうか、教えて頂けませんか。

  • diwk85
  • お礼率83% (141/168)

みんなの回答

  • eden3616
  • ベストアンサー率65% (267/405)
回答No.4

▼最下のVBAコード(1)と差し換えてください。(添付画像上側が実行結果) 補足のコードのように、以下の(1)(2)だけをループで回して格納し、 ループを出てから一発で(3)(4)で描画のような事はできません(しません)。 (1)セルの値(列番号)を変数に格納する「a、b」 (2)開始・終了基準セルをオブジェクト変数に格納する「rngstart、rngend」 (3)開始・終了基準セルの左上座標を変数に格納する「BX、BY、EX、EY」 (4)格納した座標で直線を描画する 上記(1)~(4)の処理をFor~Nextループ内で処理する必要があります。 また、今回も同じくO10:AI10に15~35の整数値が入力されている必要があります。 ▼また、For~Nextにより変動する変数cntの値を直接列番号として使用すれば VBAコード(2)のように使用することが出来ます。(添付画像下側が実行結果) この場合、セルの値で列番号を使用しないため3、10行目が空欄でも動作します。 ▼VBAコード(3)は、上記以外の方法で作成してみました。  (実行結果の画像はないですが) 1本目の線を引く範囲を指定し、引く線の本数をコード内の変数に指定することで 1本目から1列右隣のセルに平行線を指定本数引くコードになります。  >簡単に言えば、B2からL10セル  >       C2からM10セル   >       D2からN10セル  >       E2からO10セル  >のようにに平行な斜線を引きたいのですが無理でしょうか。 捕捉コメントの上記平行線を描画する場合、 コード内の変数の値を以下のようにしてください。 ~~~~~~~~~~~~~~~~~~~~~~ '一本目の描画範囲セル Set myRng = Range("B2:L10") '描画する線の数 cnt = 4 ~~~~~~~~~~~~~~~~~~~~~~ ■VBAコード(1) Sub 斜線サンプル() ' ' 斜線オリジナル3 Macro '変数を定義 Dim SP As Object Dim cnt As Integer Dim rngstart As Range Dim rngend As Range Dim a As Integer Dim b As Integer '繰り返し処理 For cnt = 10 To 30     '変数aにセルの内容を格納     a = Worksheets("時刻2").Cells(3, cnt).Value     '変数bにセルの内容を格納     b = Worksheets("時刻2").Cells(10, cnt + 5).Value     '基準セルをセルオブジェクトに格納     Set rngstart = Worksheets("時刻2").Cells(3, a)     Set rngend = Worksheets("時刻2").Cells(10, b)     '座標を格納     BX = rngstart.Left     BY = rngstart.Top     EX = rngend.Left     EY = rngend.Top     '直線     Set SP = ActiveSheet.Shapes.AddLine(BX, BY, EX, EY).Line Next cnt End Sub ■VBAコード(2) Sub 斜線サンプル2() ' ' 斜線オリジナル3 Macro '変数を定義 Dim SP As Object Dim cnt As Integer Dim rngstart As Range '繰り返し処理 For cnt = 10 To 30     '基準セルをセルオブジェクトに格納     Set rngstart = Worksheets("時刻2").Cells(3, cnt)     '座標を格納     BX = rngstart.Left     BY = rngstart.Top     EX = rngstart.Offset(7, 5).Left     EY = rngstart.Offset(7, 5).Top     '直線     Set SP = ActiveSheet.Shapes.AddLine(BX, BY, EX, EY).Line Next cnt End Sub ■VBAコード(3) Sub 斜線サンプル3() ' ' 斜線オリジナル3 Macro '変数を定義 Dim cnt As Integer Dim myRng As Range '一本目の描画範囲セル Set myRng = Range("B2:L10") '描画する線の数 cnt = 4 Do Until cnt < 1   ActiveSheet.Shapes.AddLine _     myRng(1).Left, myRng(1).Top, _     myRng(myRng.Count).Left, myRng(myRng.Count).Top   Set myRng = myRng.Offset(0, 1)   cnt = cnt - 1 Loop End Sub

diwk85
質問者

お礼

 大変な事をお願いしてしまったと反省しています。 こんなに詳しく検討して頂きありがとうございます。 これから、一日じっくりと勉強させて頂きます。 まずは、受信のお礼まで。

  • eden3616
  • ベストアンサー率65% (267/405)
回答No.3

>直ちに教えて頂いたコードを実行してみましたが、私がやるとどうしてもエラーが出てしまいます。 >コードは、すべてコピー貼り付けました。 >エラー箇所は、 >     set rngstart = worksheets("時刻2").Cells(3,a) >の箇所です。エラー内容は >、 >       「実行時エラー 1004 >         アプリケーション定義またはオブジェクト定義のエラーです。」 >  >と出ます。これは、今回の質問させて頂きましたときとおなじ箇所、内容です。 > >Excelのバージョンとか何か原因があるのでしょうか。? 以下の点をご確認ください。 (1)「セルJ3:AD3に入力されている列番号を使用」しています。 前回回答分の添付画像のようにJ3:AD3のセルに静数値で列番号の代わりとなる値は入っていますか? (空欄の場合、同様のエラーが発生します) ・エラーが発生した際に、コード中の「cnt」にカーソルを合わせれば  現在(エラー発生時)の変数の内容がツールチップで表示されます。  10~30の値が代入されているか確認ください。 ・変数aの値はシート「時刻2」の3行目の10列目~30列目であるJ3:AD3の値が  1以上の正数値で代入されているか確認して下さい。 (2)変数cntの値を直接列番号として使用する場合は以下のようになります。 該当部分を差し換えてください。 (目的が違う場合であっても検証のため差替えて動作するか確認下さい) '繰り返し処理 For cnt = 10 To 30     '基準セルをセルオブジェクトに格納     Set rngstart = Worksheets("時刻2").Cells(3, cnt)     Set rngend = Worksheets("時刻2").Cells(13, 25)     '座標を格納     BX = rngstart.Left     BY = rngstart.Top     EX = rngend.Left     EY = rngend.Top     '直線     Set SP = ActiveSheet.Shapes.AddLine(BX, BY, EX, EY).Line Next cnt

diwk85
質問者

お礼

 ありがとう御座いました。原因はご指摘のとうりのところでした。 セル(13,25)の位置から左向きの斜線が参照セルの数値に相当したセルに向かって見事に引くことができました。 そこで、本来の目的の、セルの数値を変更して自動で平行な斜線を引くために、rngend部分をつぎの様に変更してみましたが、やはりエラーになってしまいます。私の知識では困難です。 簡単に言えば、B2からL10セル        C2からM10セル         D2からN10セル        E2からO10セル のようにに平行な斜線を引きたいのですが無理でしょうか。 --------------------------------- Sub 斜線サンプル() ' ' 斜線オリジナル3 Macro '変数を定義 Dim SP As Object Dim cnt As Integer Dim rngstart As Range Dim rngend As Range Dim a As Integer '繰り返し処理 For cnt = 10 To 30 '変数aにセルの内容を格納 a = Worksheets("時刻2").Cells(3, cnt).Value '基準セルをセルオブジェクトに格納 Set rngstart = Worksheets("時刻2").Cells(3, a) Next cnt For cnt1 = 15 To 35 '変数bにセルの内容を格納 b = Worksheets("時刻2").Cells(10, cnt1).Valu '基準セルをセルオブジェクトに格納 Set rngend = Worksheets("時刻2").Cells(10, b) Next cnt1 '座標を格納 BX = rngstart.Left BY = rngstart.Top EX = rngend.Left EY = rngend.Top '直線 Set SP = ActiveSheet.Shapes.AddLine(BX, BY, EX, EY).Line End Sub  -----------------------------------  rngend部分の変更箇所は上記のコードです。 再三のお手数をおかけし申し訳ありませんが、よろしくお願いいたします。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.2

原因は a = worksheets("時刻2").cells(3,cnt).value だと思うけど。。。 次の行で、cells(3,a)となってるので aは1以上の整数である必要がありますが、 cells(3,cnt).valueの内容に文字や空白や1未満の数値はありませんか? あと、START-ENDの列をどのように変更したいのかが見えません。 それが判らないと、適切な回答は得られないと思いますけど。。。

diwk85
質問者

お礼

 お礼の返事が遅くなり申し訳ありません。 ご指摘のとおり参照範囲に間違いがありました。eden3616さんからもご指摘いただきました。 いま、やっと1歩前に進んだところです。  また、質問内容がはっきりしなかったこと、申し訳ありませんでした。 もっと、勉強したいと思っております。今後ともよろしくお願いします。

  • eden3616
  • ベストアンサー率65% (267/405)
回答No.1

どこでエラーがでるかぐらいは書きましょう。 あと、具体的にどのようにラインを引きたいのかわかりませんので 追加しようとしたコードを参考にセルJ3:AD3に入力されている列番号を使用して 3行目の各列番号のセル左上とセルY13の左上を結ぶシェイプを作成するようにしています。 Sub 斜線サンプル() ' ' 斜線オリジナル3 Macro '変数を定義 Dim SP As Object Dim cnt As Integer Dim rngstart As Range Dim rngend As Range Dim a As Integer '繰り返し処理 For cnt = 10 To 30   '変数aにセルの内容を格納   a = Worksheets("時刻2").Cells(3, cnt).Value   '基準セルをセルオブジェクトに格納   Set rngstart = Worksheets("時刻2").Cells(3, a)   Set rngend = Worksheets("時刻2").Cells(13, 25)   '座標を格納   BX = rngstart.Left   BY = rngstart.Top   EX = rngend.Left   EY = rngend.Top   '直線   Set SP = ActiveSheet.Shapes.AddLine(BX, BY, EX, EY).Line Next cnt End Sub

diwk85
質問者

お礼

 早速のご解答ありがとう御座いました。 エラーの出る箇所の説明不足すみませんでした。 直ちに教えて頂いたコードを実行してみましたが、私がやるとどうしてもエラーが出てしまいます。 コードは、すべてコピー貼り付けました。 エラー箇所は、      set rngstart = worksheets("時刻2").Cells(3,a) の箇所です。エラー内容は 、        「実行時エラー 1004          アプリケーション定義またはオブジェクト定義のエラーです。」   と出ます。これは、今回の質問させて頂きましたときとおなじ箇所、内容です。 Excelのバージョンとか何か原因があるのでしょうか。? ----------------------------------- シュミレーションして頂いたのを確認しました。まさにこのようにようにしたいのです。後はend部分の数値を自動で変えれば目的の結果が得られます。 お忙しいところ恐縮ですが、もう一度ご検討お願いできますか。    

関連するQ&A

  • EXCEL マクロの指定の仕方

    マクロで線の色を指定したいのですが、上手くいかず困っています .ForeColor.RGB = Worksheets("sheet1").Range("F2").Interior.ColorIndex 赤色を指定したいのですがBにどういうコードを入れれば良いですか? FはVlookupで列Bより色を指定するようにしています。 マクロは始めたばかりで良く分からないので、他に必要な情報もわかりません 必要な情報なども併せて教えてください。 よろしくお願いします。 Dim rngStart As Range Dim rngEnd As Range Dim BX As Single, BY As Single, EX As Single, EY As Single Set rngStart = Worksheets("sheet2").Cells.Find(What:=Worksheets("sheet1").Range("D2"), LookIn:=xlValues, LookAt:=xlWhole) Set rngEnd = Worksheets("sheet2").Cells.Find(What:=Worksheets("sheet1").Range("E2"), LookIn:=xlValues, LookAt:=xlWhole) BX = rngStart.Left BY = rngStart.Top EX = rngEnd.Left + rngEnd.Width EY = rngEnd.Top With Worksheets("sheet2").Shapes.AddLine(BX, BY + 10, EX, EY + 10).line .ForeColor.RGB = Worksheets("sheet1").Range("F2").Interior.ColorIndex .Weight = 3 .EndArrowheadStyle = msoArrowheadTriangle End With

  • VBAでセルにポイント指定で斜線が引けませんか

    excel vbaでセル幅、高さを小さくした画面のその上に指定したところから指定したところに別に用意した複数の数値により自動で複数の斜線を引きたいのですが,下記の参考コードを見つけ検討しましたが、目的の結果が得られません、どなたか方法を教えて頂けませんか、 参考コードでは、下段のコード部分で、セルの縦幅(側辺)をポイント指定でセルの任意の位置から位置に引けますが上段部分のコードでは、セルの始端、終端の位置のみに対応できてセルの横辺(セルの横幅)についてのポイント指定ができません。 下段のコードのポイント指定は    For cnt = 20 to 30 等で複数指定しますと自由に複数の横線を引くことができます。 質問 1・ セルの横幅(横方向)にはポイントという位置付はないのでしょうか。もしあるとしたらどの様に 指定するのでしょうか。また1セルのポイントはいくつでしょうか。 2・ セルの始端、終端の位置を利用する場合、range("c10"),range("g10")の内容を自動で、変える 方法はありませんか。 ------------------------------ 参考としたコード Dim rngstart As Range, rngend As Range Dim BX As Single, BY As Single, EX As Single, EY As Single 'shape を配置するための基準となるセル Set rngstart = Range("c10") Set rngend = Range("g10") 'セルのleft,top,widthプロパティを利用して位置決め BX = rngstart.Left BY = rngstart.Top EX = rngend.Left + rngend.Width EY = rngend.Top '直線 ActiveSheet.Shapes.AddLine BX, BY, EX, EY With ActiveSheet.Shapes.AddLine(BX, BY + 10, EX, EY + 10).Line .ForeColor.RGB = vbRed .Weight = 0.8 .EndArrowheadStyle = msoArrowheadTriangle End With End Sub  以上。です。 よろしくお願いいたします。

  • VBA OR条件での検索について教えてください。

    VBA初心者です。また質問させてください。 以前、下記のような表で、『小計』の文字を検索して行を挿入したり、斜め線を引くという内容をVBAでやる方法を教えていただきました。 その節はありがとうございました。 *************************************************************   A    B       C    D 1  2  項目 品名       数量   単位 3     内訳(別紙明細) 1     式 4     ブレーカ      1     ヶ 5     消耗品       1     式   6             7 8           小計 ************************************************************* 今度は『小計』だけでなく『合計』があった場合も、同じ処理をするVBAを作成したいのですがうまくいきません。 以下が記述です。 ************************************************************* Private Sub 斜め線描画_Click() Dim myLine As Shape Dim c As Range Dim cnt As Integer Dim i As Integer cnt = WorksheetFunction.CountIf(Cells, "*小   計*") Set c = Cells.Find(What:="小   計", LookIn:=xlFormulas, LookAt:=xlPart) If Not c Is Nothing Then i = 1 Call LineArranging(c) Do If i >= cnt Then Exit Sub 'カウントでチェック Set c = Cells.FindNext(c) If c Is Nothing Then Exit Sub Call LineArranging(c) i = i + 1 Loop End If Set c = Nothing End Sub Sub LineArranging(rng As Range) Dim BX As Double, BY As Double, EX As Double, EY As Double Dim rngStart As Range, rngEnd As Range Dim myLine As Shape rng.Select ActiveCell.Rows("1:2").EntireRow.Select Selection.Insert Shift:=xlDown rng.Offset(1, 0).Select ActiveCell.Rows("1:2").EntireRow.Select Selection.Insert Shift:=xlDown rng.Offset(-2, 0).Select Selection.EntireRow.Insert ActiveCell.EntireRow.Select Selection.RowHeight = 2 rng.Offset(1, 0).Select Selection.EntireRow.Insert ActiveCell.EntireRow.Select Selection.RowHeight = 2 Set rngStart = rng.Offset(1, -1) Set rngEnd = rng.Offset(-2, 0) BX = rngStart.Left BY = rngStart.Top EX = rngEnd.Left + rngEnd.Width EY = rngEnd.Top Set myLine = Sheet4.Shapes.AddLine(BX, BY, EX, EY) BX = BX + 151.5 BY = BY - 27 EX = EX - 152.25 EY = EY + 26.25 Set myLine = Sheet4.Shapes.AddLine(BX, BY, EX, EY) Set rngStart = Nothing Set rngEnd = Nothing Set myLine = Nothing End Sub ************************************************************* 『または』なのでorを使うのかと思ったのですが、エラーになりうまくいきません。どうしたらいいのか教えてください。 よろしくお願いします。

  • excel VBA で条件の設定方を教えて下さい。

    今、斜線を引きその斜線データの最初のセルに数値で(1とか3とかの数値の)条件をつけて置き、その条件で、太さ、色等を変えて斜線を引きたいのですがうまくいきません。何方か教えて頂けませんか。 --------------------- dim myrange as range workheets("補助計算").range("c8:c47").value = worksheets("時刻").range("c8:c47").value workheets("補助計算").range("g8:h47").value = worksheets("時刻").range("g8:h47").value with worksheets("時刻")     v=worksheets("時刻").range("m2").value+12'描画本数     for i = 12 to v step 1'設定可能本数50本 set myrage = worksheets("補助計算").range("t3:t47") myrange.value = .range(.cells(3,i),.cells(48,i)).value for cnt = 75 to 113 step 2 e = worksheets("ダイヤ").cells(cnt,10).value       f = worksheets("ダイヤ").cells(cnt,11).value       g = worksheets("ダイヤ").cells(cnt+1,10).value       h = worksheets("ダイヤ").cells(cnt+1,11).value with worksheets("ダイヤ").shapes.addline(e,f,g,h) .line.weight = 1.1 .line.forecolor.rgb = vbblue end with next cnt next i end with ----------------------- 上記コードで、斜線が何本か引かれます、その際、データ元のセルに数値の条件、例えば、1 とか3とかの数値を入力されているときは、それによって、斜線の色、又は線の太さをかえたいのですが、指定の仕方は、時刻シートの時刻の上欄セルに、線の指定のセル、太さ指定のセルに別々に指定おき、それを参照して、線の色、太さをかえたいのですが、いろいろ試みましたがうまくいきません。上記コードにどのように追加コードをすればよいか何方か教えていただけませんか。できれば、線の色は3色以上設定できればありがたいです。、

  • VBA 一致するセル同士を線で結ぶ

    ある列について(ここでは8列目)、あるセルを検索元セルとして、検索先のセルと一致したら検索元セルと検索先で一致したセルとを線(オートシェイプ)でつなぐようなVBAコードを書いています。 しかし何度やっても上手くセルの内容が一致するセル同士に線が引かれません。どこが悪いでしょうか? ちょっとせっぱつまっていて分かりづらい質問になっていますが、助けてください。お願いします。 Sub tameshi() Dim i, j As Integer For i = 1 To 100 If Cells(i, 8) = "" Then Else For j = i + 1 To 99 If Cells(i, 8).Text = Cells(j, 8).Text Then ' 横棒を引くための設定 ' 横線の終点はさらにその隣のセルを指定。 sx = Cells(i, 9).Left sy = Cells(i, 9).Top + 6 ex = Cells(i, 10).Left ' sx2に指定する座標 ey = Cells(i, 10).Top + 6 ' sy2に指定する座標 ' 縦棒を引くための設定 sx2 = Cells(i, 10).Left ' ここには上のexで指定した座標を指定 sy2 = Cells(i, 10).Top + 6 ' ここには上のeyで指定した座標を指定 ex2 = Cells(i + j, 10).Left ' 下のex3で指定した座標を指定 ey2 = Cells(i + j, 10).Top + 6 ' 下のey3で指定した座標を指定 ' 横棒を引くための設定 ' 実際にはつながれる先のセル番号(一致するIDの隣のセル)をexとeyに指定。 ' 横線の終点はさらにその隣のセルを指定。 sx3 = Cells(i + j, 9).Left sy3 = Cells(i + j, 9).Top + 6 ex3 = Cells(i + j, 10).Left ' ex2に指定する座標 ey3 = Cells(i + j, 10).Top + 6 ' ey2に指定する座標 ActiveSheet.Shapes.AddConnector(msoConnectorStraight, sx, sy, ex, ey).Select ActiveSheet.Shapes.AddConnector(msoConnectorStraight, sx2, sy2, ex2, ey2).Select ActiveSheet.Shapes.AddConnector(msoConnectorStraight, sx3, sy3, ex3, ey3).Select Else End If Next j End If Next i End Sub

  • VBA 繰り返し処理について教えてください

    VBA初心者です。    A    B       C    D 1  2  項目 品名       数量   単位 3     内訳(別紙明細) 1     式 4     ブレーカ      1     ヶ 5     消耗品       1     式   6             7 8           小計 上記(見積書)のような表があり、『小計』の文字を検索して 行を挿入したり、斜め線を引くという内容をVBAでやりたいと思います。 以下が記述です。 ************************************************************* Sub 斜め線描画() Dim MyLine As Shape Dim rngStart As Range, rngEnd As Range Dim BX As Double, BY As Double, EX As Double, EY As Double Set c = Cells.Find(What:="小計", After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart) If Not c Is Nothing Then firstAddress = c.Address Set rngStart = c.Offset(1, -1) Set rngEnd = c.Offset(-2, 0) BX = rngStart.Left BY = rngStart.Top EX = rngEnd.Left + rngEnd.Width EY = rngEnd.Top c.Offset(-2, 0).Select Selection.EntireRow.Insert ActiveCell.EntireRow.Select Selection.RowHeight = 2 c.Offset(1, 0).Select Selection.EntireRow.Insert ActiveCell.EntireRow.Select Selection.RowHeight = 2 Set MyLine = Sheet4.Shapes.AddLine(BX, BY, EX, EY) BX = BX + 151.5 BY = BY - 27 EX = EX - 152.25 EY = EY + 26.25 Set MyLine = Sheet4.Shapes.AddLine(BX, BY, EX, EY) End If End Sub **************************************************************** 『小計』の個数は決まっておらず、1個の場合もあれば10個の場合もあります。 『小計』があるだけ上記の処理を繰り返すようにしたいのですが、繰り返しの処理がうまくいかず、無限ループにはまってしまい困っています。 自分なりに考えたのは『小計』の文字はB列にあるので、B列に入力されている最後のセルまで検索したら処理を終了する。なのですが、どう記述していいのかわかりません。 文章がわかりにくいかもしれませんが、どうかご教授願います!

  • excel VBAでのループの方法

    excel VBAでループの方法がわかりません、何方か教えて頂けませんか。 現在,下記様なコードを作成して一応目的に近くなりましが、1か所方法がわかりません。 sheets(時刻)の、(N6:N45 )の時刻データをsheets(基準値時刻)の(AI5:AI44)に転記して、その 転記されたデータを使い時刻を描画して、またsheets(時刻)を参照してこんどは、4列右の(R6:R45)のデータ読み取り、転記場所は、sheets(基準値時刻)の(AI5:AI44)の前回と同じセルに転記し、 そのノテータ を使い時刻を描画します。この繰り返しを行いたいのですが、 を[ j ≖ worksheets("時刻").cells(cnt2,10).value ] の列の10の数値を10,14,18、・・・と変化させたい のですが、うまくいきません。  読み取るデータは4列ずつ右に移動、転記場所は同じ場所、1回の読み込み、転記、描画が完了 してから、読み取るデータの位置のみ変更(4列右へ移動)、後の動作は同じ。 この繰り返しをしたいのです。 '-----------時刻取得・転記------------ for x = 1 to 50 For cnt2 = 6 To 45 Step 1      '6行から45行を1stepずつ j = Worksheets("時刻").Cells(cnt2, 10).Value '時刻sheetsから時刻取得  Worksheets("基準値時刻").Cells(cnt2 - 1, 35).Value = j '取得時刻を基準値時刻sheetへ   Next cnt2 '---------------時刻を描画-------------- For cnt4 = 5 To 44 Step 2 k = Worksheets("基準値時刻").Cells(cnt4, 38).Value l = Worksheets("基準値時刻").Cells(cnt4, 39).Value m = Worksheets("基準値時刻").Cells(cnt4 + 1, 38).Value n = Worksheets("基準値時刻").Cells(cnt4 + 1, 39).Value With Worksheets("勾配計算").Shapes.AddLine(k, l, m, n) .Line.Weight = 1 .Line.ForeColor.RGB = vbBlue End With Next cnt4 Next x 以上がコードの一部です。よろしくお願いいたします。   環境は, OSは  windows 8.1 です。

  • エクセルVBAで

    登録ボタンを作りたいのですが うまくいきません。 応答無しになってしまいます。 仕事でコードを入力して、住所やその他の関連事項を 登録して、検索し、封筒に宛名印刷し、登録内容の修正をしたいと思っています。 登録ボタンは下記のようなものを作りました。 Private Sub CommandButton1_Click() Dim bk As Workbook Dim sh1 As Worksheet Dim sh2 As Worksheet Dim cnt1 As Long Set bk = ThisWorkbook Set sh1 = bk.Worksheets("現場登録検索") Set sh2 = bk.Worksheets("一覧") cnt1 = 6 Do While sh2.Cells(cnt1, 2).Value <> "" cnt = cnt1 + 1 Loop '得意先CD sh2.Cells(cnt1, 2).Value = sh1.Cells(2, 3).Value '現場CD sh2.Cells(cnt1, 3).Value = sh1.Cells(3, 3).Value '送り方 sh2.Cells(cnt1, 22).Value = sh1.Cells(4, 3).Value '封筒 sh2.Cells(cnt1, 23).Value = sh1.Cells(5, 3).Value MsgBox "登録できました。" End Sub 何が悪いのでしょうか? よろしくお願い致します。

  • セルにデータが入っていないのを見つけるには?

    ユーザフォームにあるコマンドボタンを押すと、Sheet1のセル"D4"から横方向→にセルの中にデータが入っていない所までループし、データが入っていないセルがあったら"END"が入力され終了したいのですが。。 Private Sub CommandButton5_Click() Dim u As Integer u = 4 Do Until Worksheets("Sheet1").Cells(7, u).Value = "" If Worksheets("Sheet1").Cells(7, u).Value = "" Then Worksheets("Sheet1").Cells(7, u).Value = "END" End If u = u + 1 Loop End Sub このコードでは無反応でした。なにがいけないのかご指摘お願いいたします。 ExcelVBAです。

  • アクティブでないシートのセルを選択

    Excel VBAでアクティブでないシートのセルをSelectすることはできないのでしょうか。 Selectメソッドというのは,もともとそういうものなのでしょうか。 エラー: 「RangeクラスのSelectメソッドが失敗しました。」 コード Sub aaa() With Worksheets("Sheet2") .Range(.Cells(44, 1), .Cells(48, 21)).Select End With End Sub

専門家に質問してみよう