• 締切済み

セルの値を取得して他のセルにひとつづつ配置したい

こんにちわ VBS初心者です A1セルに12~14ケタほどの英文字と数字が混在したコードがあります それをB2,C2,D2,E2・・・・・セルに左から順にひとつづつ配置したいのですが、どうも上手く行きません Sub test4() Value = Range("A1") Range("A2").Value = Mid("A1", 1, 1) Range("B2").Value = Mid("A1", 2, 1) Range("C2").Value = Mid("A1", 3, 1) Range("D2").Value = Mid("A1", 4, 1) Range("E2").Value = Mid("A1", 5, 1) Range("F2").Value = Mid("A1", 6, 1) Range("G2").Value = Mid("A1", 7, 1) Range("H2").Value = Mid("A1", 8, 1) Range("I2").Value = Mid("A1", 9, 1) Range("J2").Value = Mid("A1", 10, 1) Range("K2").Value = Mid("A1", 11, 1) Range("L2").Value = Mid("A1", 12, 1) Range("M2").Value = Mid("A1", 13, 1) Range("N2").Value = Mid("A1", 14, 1) End Sub "A1"を値としてとらえているようで B2にはAが、C2には1が入ってしまいます A1の値を取り出すにはどうしたら良いでしょうか よろしくお願いします

みんなの回答

回答No.1

まず、VBScript ですか? Excel VBA ですか? Mid("A1", 1, 1) これは Mid(Range("A1").Value, 1, 1) と。 気になる点としては Value = Range("A1") 変数名として Value は変えたほうがいい。 Range("A1") てのも他にあわせて Range("A1").Value としたほうが良い。

cad0113
質問者

お礼

出来ました!! ありがとうございました。 恥ずかしい事にvbsとvbaの違いもわからず使わせていただいています。 納期が先にあり、検索だけを頼りにするなんて言語道断ですよね。 悲しい現実です。 本当に助かりました ありがとうございました

関連するQ&A

  • VBAでスクロールバーを動かしても値が変わらない

    図のようなスクロールバーを動かして、それぞれの値と、A4のセルの色が変わるものを作りたいのです。 プログラムは、 Sub スクロール1_Change() R = Range("C2").Value G = Range("D2").Value B = Range("E2").Value Range("A4").Interior.Color = RGB(R, G, B) End Sub Sub スクロール2_Change() R = Range("C2").Value G = Range("D2").Value B = Range("E2").Value Range("A4").Interior.Color = RGB(R, G, B) End Sub Sub スクロール3_Change() R = Range("C2").Value G = Range("D2").Value B = Range("E2").Value Range("A4").Interior.Color = RGB(R, G, B) End Sub ですが、スクロールバーに関連付けられていないようです。基本ですみませんが、関連付けるにはどうすればいいのでしょうか。

  • Excelマクロでセルの値を他のセルに表示する方法

    Excelマクロがよく分からので教えてく下さい。 Excelで次のように表を作成します(添付画像参照)。 ・A列・・・連番 ・B列、C列、D列・・・それぞれに任意の値 ・E列・・・G列の関数で得た値をE列に返す。 ・G列に関数(=B2&C2&D2) G2で得た値を、E2に返す方法として 以下のマクロで出来ることが調べて分かりました。 Sub 取得() Dim namae As String namae = Range("G2").Value Range("E2").Value = namae End Sub ですが、G列の値全てをE列全てに返す場合のマクロの作成方法がわかりません。 どなたか詳しい方がいましたら、ご教示願います。

  • 指定セルへ転記するマクロで値が無い場合固定値転記

    シート2の1行目の指定したセルの値をシート1の指定セルに 転記を行いシート1が印刷。 印刷後はシート2の2行目の指定したセルの値をシート1の指定したセルに 転記してシート1が印刷。 シート2にデータが無くなったら停止という以下のマクロにて シート2のO列はシート1のセルA19に順次転記なのですが O列は運用上空白が有る場合が判明した為 値がある場合はその値を転記、値が無い場合は半角で ZZZ と 転記をしたいのですがどこを変更していいのか分かりません。 よろしくお願いします。 Sub データ転記() Dim myRng(1 To 23) Dim cpRng Dim i As Integer Dim n As String, myStr As String With Sheets("Sheet2") Set myRng(1) = .Range("B2") Set myRng(2) = .Range("C2") Set myRng(3) = .Range("D2") Set myRng(4) = .Range("D2") Set myRng(5) = .Range("D2") Set myRng(6) = .Range("E2") Set myRng(7) = .Range("E2") Set myRng(8) = .Range("F2") Set myRng(9) = .Range("F2") Set myRng(10) = .Range("H2") Set myRng(11) = .Range("J2") Set myRng(12) = .Range("K2") Set myRng(13) = .Range("K2") Set myRng(14) = .Range("L2") Set myRng(15) = .Range("M2") Set myRng(16) = .Range("N2") Set myRng(17) = .Range("O2") Set myRng(18) = .Range("P2") Set myRng(19) = .Range("Q2") Set myRng(20) = .Range("R2") Set myRng(21) = .Range("S2") Set myRng(22) = .Range("U2") Set myRng(23) = .Range("G2") End With cpRng = Split("B10,O4,G3,F10,F13,G10,G13,H10,H13,O3,L10,M10,M13,O5,E19,F19,A19,O6,D21,B6,I19,J19,G5", ",") '転記先配列化 With Sheets("Sheet1") .Range("B10,G3,F10,F13,G10,G13,L10,E19,F19,J19,O7,O8,C19,D10,D13,A19,O4,O5").NumberFormatLocal = "@" Do While myRng(1) <> "" For i = 1 To 23 .Range(cpRng(i - 1)).Value = myRng(i).Value Next .Range("C3,C13").Value = Left(.Range("O3").Value, 10) .Range("C10").Value = Mid(.Range("O3"), 11, 6) .Range("O7").Value = Format(Range("O6").Value, "0000000") .Range("O8").Value = Format(Range("J19").Value, "0000000") Call 加工01 Call 加工02 '印刷 .PrintOut For i = 1 To 23 Set myRng(i) = myRng(i).Offset(1) Next i Loop .Range("B10,O4,G3,F10,F13,G10,G13,H10,H13,O3,L10,M10,M13,O5,E19,F19,A19,O6,D21,B6,I19,J19,C3,C10,C13,C19,D10,D13,O8,O7,G5").ClearContents End With For i = 1 To 23 Set myRng(i) = Nothing Next MsgBox "印刷終了" Sheets("Sheet2").Select Cells.Select Selection.Delete Shift:=xlUp Sheets("Sheet1").Select Range("C3").Select End Sub

  • エクセルVBA セルの値を使ってのセル選択

    セルに入力した値でセル選択の範囲を指定したいです セルの値がxの時 セルB1~Cx と セルD100~Ex+100 を同時に選択したいのですが どうすれば良いのでしょう? セルA1に50と入力されているとします Range("B1:C50,D100:E150").Select となってほしい訳です Range や Cells とか調べたのですが分かりませんでした

  • エクセルVBAで数字の転記

    セルの数字の転記でTEST1のように繋がっているセル範囲は、その一つしたの値を一編に持ってこれます。 Sub TEST1() Range("C6:E6").Value = Range("C6:E6").Offset(1).Value End Sub ところがTEST2のように接してはいても繋がっていないとC15の一つ下の値がD14にも入ってしまいます。 Sub TEST2() Range("C15,D14").Value = Range("C15,D14").Offset(1).Value End Sub Range("C15,D14")あるいはRange("C15,E14")のようなとなりあっていない場合でも一個したの数値を一編に持ってくるような方法はないでしょうか?

  • VBA 11行おきにセルの値を1づつ増やす

    セルの値を最終行まで、11行おきに1増やしていく方法をお教えください。 現在1800行あります。 下記の構文を延々と続けるのは、気が遠くなります。 何卒よろしくお願いします。 Private Sub CommandButton1_Click() With Worksheets("○○○”) .Range("A1").Value = "1" .Range("A12").Value = .Range("A1").Value + 1 .Range("A23").Value = .Range("A12").Value + 1 .Range("A34").Value = .Range("A23").Value + 1 .Range("A45").Value = .Range("A34").Value + 1 ・・・・・・・ ・・・・・・・・ End With End Sub

  • 他のブックを開かずに値を取得したい

    お世話になっております。。。 excel2007です。 アクティブである、ThisWorkbookに 外部ファイルから値のみ取得し、ThisWorkbookのA14セルからA27まで 入力させたい・・・ のですが、上手くいきません。 WEB検索して、ExecuteExcel4Macroでやってみたのですが、 Cells(1, C + 13) = ExecuteExcel4Macro("'strFullPath1'!受注書" & "Cells(2, C + 23)") のところで、「値の更新:strFullPath1」と出てしまいます。 どうしたら良いでしょうか? Private Sub CommandButton1_Click() Const FILE_DIR1 As String = "\\192.168.~" '途中までのパス Const FILE_DIR2 As String = "\\192.168.~~" '途中までのパス Dim strFullPath1 As String Dim strFullPath2 As String Dim strFileName As String Dim フォルダ名 As String Dim C As Integer フォルダ名 = TextBox2.Value & "\" & Range("B4") & "\" strFileName = "*" & Range("B5") & " " & Range("B6") & ".xls" strFullPath1 = FILE_DIR1 & フォルダ名 & strFileName strFullPath2 = FILE_DIR2 & フォルダ名 & strFileName C = 1 If Dir(strFullPath1) <> "" Then For C = 1 To 14 Cells(1, C + 13) = ExecuteExcel4Macro("'strFullPath1'!受注書" & "Cells(2, C + 23)") Next D Else For C = 1 To 14 Cells(1, C + 13).Formula = "[strFullPath2]sheet!cells(1,D+17)" Cells(1, C + 13).Value = Cells(D, 14).Value Next D End If Unload Me End Sub 端折っているので、抜けがあるかもしれません。 お知恵を頂けますでしょうか? 宜しくお願い致します。

  • midステートメント セルを指定したい

    エクセルなのですが、 Sub N文字目を置換する1() Dim N As Long Range("a1").Value = "abcde" N = 2 '置換する文字の位置 ’start(省略不可) Mid(Range("a1").Value, N) = "X" MsgBox Range("a1").Value End Sub このように、セルを指定することはできないのでしょうか? このコードを実行しようとすると、 Mid(Range("a1").Value, N) = "X"の部分で「変数が必要です」とコンパイルエラーになります。 Sub N文字目を置換する2() Dim moji As String Dim N As Long Range("a1").Value = "abcde" moji = Range("a1").Value N = 2 Mid(moji, N) = "X" MsgBox moji End Sub このように、セルの値を一度変数に入れると問題なく実行できますが、 なぜダイレクトにmidステートメントでセルを指定できないのかわからないので教えてください。 よろしくお願いします。

  • TextBoxの値を複数シートのセルに記入する

    よろしくお願いします。 TextBoxの値を複数シートのセルに記入するようにしたいのですが 一つのシートにしか記入されません。 醜い構文ですみません。 Private Sub CommandButton1_Click() Dim a As Long Dim b As Long Dim f As Long Dim h As Long Dim c As Range Dim d As Range Dim e As Range Dim g As Range With Worksheets(Array("駐車状態", "材料", "外壁1", "外壁2", "屋根1")).Select Set c = Cells(1, 2) For a = 1 To 140 Step 7 Set c = Union(c, Cells(a, 2)) c = TextBox1.Value Next c.EntireRow.Select Set d = Cells(1, 4) For b = 1 To 140 Step 7 Set d = Union(d, Cells(b, 4)) d = TextBox1.Value Next d.EntireRow.Select Set g = Cells(2, 2) For h = 2 To 141 Step 7 Set g = Union(g, Cells(h, 2)) g = TextBox2.Value Next g.EntireRow.Select Set e = Cells(2, 4) For f = 2 To 141 Step 7 Set e = Union(e, Cells(f, 4)) e = TextBox2.Value Next e.EntireRow.Select End With End Sub

  • エクセルVBAで関数が入った空白セルの取得

    エクセルVBAで下記のようなセルの参照をしたいのですが、よろしくお願いします。(エクセル2002です)   A  B  C  D  E  F 1 78 80 セル(A1)(B1)には値も関数も入れられています。 セル(C1)(D1)(E1)には値は入っていませんが、ワークシート関数が組み込まれており空白となっています。(関数の""にて空白) セル(F1)には何も入力されていません。 今回はセル(B1)の80の値を取得できるようにVBAで下記のようにコードを組みました。 Range("F1").End(elToLeft).Activate そうすると、セル(E1)に関数があるために(?)(E1)がアクティブな状態となります。 関数が入力されていても空白として(B1)をアクティブな状態にするために良い方法はありますでしょうか? 誠に申し訳ございませんが、よろしくお願いします。